Hacker News웹 · 프론트엔드

Go 코드를 GitHub에 종속시키지 말자

원제 Don't couple your Go code to GitHub

123 포인트댓글 58
Key Point

Go의 import 경로 설계가 호스팅 제공자에 대한 강한 종속성을 만들어 플랫폼 이전 시 상당한 비용을 초래하는데, 커스텀 도메인으로 이를 완전히 차단할 수 있기 때문이다.

핵심 요약

  • Go는 import 경로에 코드 위치를 포함하는 방식으로 라이브러리를 관리하므로, github.com/user/repo 형태의 주소가 곧 import 경로가 된다.
  • 이 방식의 문제점은 코드가 호스팅 제공자에 직접 종속되어 GitLab이나 Azure DevOps로 이전하면 모든 import 경로를 수정해야 한다는 것이다.
  • 저자가 경험한 회사는 세 가지 플랫폼을 동시에 운영해야 할 정도로 마이그레이션 비용이 커서 결국 세 서비스 비용을 중복으로 지불했다.
  • 해결책은 go.iain.rocks, go.uber.org, go.mongodb.org 같은 커스텀 도메인을 사용하는 것이다.
  • 커스텀 도메인은 내부적으로 현재 호스팅 서비스를 가리키므로, 플랫폼을 옮겨도 사용자 입장에서는 import 경로가 바뀌지 않는다.
  • 설정 방법은 Nginx에서 go-get 쿼리 파라미터를 체크하여 Go 도구 요청에는 메타데이터를 담은 HTML을 반환하고, 일반 브라우저 접근은 GitHub 리포지토리로 리다이렉트하는 것이다.
  • 메타데이터는 go-import와 go-source 태그로 실제 git 저장소 위치와 소스 코드 웹 인터페이스 주소를 명시한다.
  • 저자는 상용 Go 개발팀이라면 내부 라이브러리에 커스텀 도메인을 사용하여 불필요한 호스팅 제공자 종속성을 피할 것을 권장한다.
AI 요약 안내

AI가 한국어로 정리한 내용입니다. 정확한 정보는 원문을 확인해 주세요.

요약 원칙 ↗