1. Ticket Content
— 소속팀
Discovery Platform
— 카테고리
P - Dev Portal
— 내용
오늘 go.dailyhou.se/search/search-application-server 패키지를 사용하는 과정에서 아래와 같은 문제를 발견하여 제보드립니다.
현상
- Portal에 표시된 최신 버전:
v0.26.10-334.r.167 - 해당 버전으로
go get시도 시 nexus에서 다운로드 불가 - nexus에서 확인 가능한 최신 버전:
v0.25.15-207.r.107 - 실제로는 S3(
bucketplace-go-mod-repo)에v0.26.9-333,v0.26.10-334버전이 존재하는 상황
영향
- Portal에서 제공하는
go get커맨드를 그대로 사용해도 해당 버전을 받아올 수 없어, 개발자가 직접 S3에서 버전을 확인해야 하는 불편함 발생
요청 사항
Portal에 표시되는 go get 커맨드의 버전 정보가 nexus에 실제 배포된 버전과 일치하도록 동기화 처리 부탁드립니다.
감사합니다! — 희망완료일
2. Go
Ohouse 에서는 사내 운영하는 Go Module Proxy가 있음 주소는 go.co-workerhou.se. 개념적으로는 npm registry나 Maven, Nexus 같은 역할
Go 는 패키저 매니저가 원래 별도로 없고, go get 명령이 http로 모듈을 다운로드하고, 어디서 받을지는 GOPROXY을 이용해서 환경변수로 활용
(현재 내 GOPROXY 설정)
$ go env GOPROXY
https://go.co-workerhou.se|https://proxy.golang.org|direct
이 프록시의 뒷단이 S3로 추정되며 bucketplace-go-mode-repo 에 있듬
현재 mortar deploy 는 S3에 go build을 올리고 있지만, cdctl promote는 해당 기능이 없어 위와 같은 티켓이 올라온 것으로 추정된다.
회사는 athens proxy라는 go module proxy을 사용하고 있고, 이거는 S3을 storage backend로 사용하는 Go Module proxy 구현체. (S3 파일이 있으면 서빙하고, 없으면 404 에러 발생)
사내에 Go Module Proxy가 두 개 운영되고 있으며, 둘 다 동일한 S3 버킷을 backend로 사용한다.
| 프록시 | 도메인 | 구현체 | 용도 |
|---|---|---|---|
| Athens Proxy | go.co-workerhou.se |
gomods/athens (오픈소스) | 메인 프록시 |
| GoProxy | goproxy.co-workerhou.se |
bucketplace/gohouse (자체 구현) | 별도 운영 |
요청 흐름
go get go.dailyhou.se/search/[email protected] → go.co-workerhou.se (Athens Proxy, nginx ingress) → S3 (bucketplace-go-mod-repo) → 파일 있으면 200, 없으면 404
GOPROXY 설정 (GoCD agent)
GOPROXY=https://proxy.golang.org,https://go.co-workerhou.se,direct
proxy.golang.org— Google 공식 public proxy (오픈소스 모듈)go.co-workerhou.se— 사내 Athens Proxy (내부 모듈)direct— fallback
결론
S3에 release 버전 파일만 올리면 Athens Proxy가 자동으로 서빙한다. 별도의 proxy 설정 변경은 필요 없음.