요새 검색 & 추천(은 coming soon) 서비스 개발 언어로 go를 쓰고 있다. 1도 모르는걸 꾸역꾸역 배워서 쓰는중 ㅋㅋ..

go를 사용한 경험을 가볍게 정리해보자.

ide

vscode로도 쓸만한 것 같다. goland는 회사에서 안 사줄거니까😂

체감한 장단점

장점

java 대비 아주 편하며(5배정도?) 가볍고 빠르고 러닝커브가 완만하다. a tour of go만 봐도 개발 투입 가능. microservice 만들기 딱 좋다고 생각한다.

단점

신생 언어이며 빠르게 발전하는 중이고 자유도가 높기 때문에 믿고 복사할(😋) 레퍼런스가 적은 것 같다. 구글링을 많이해야 그럴듯한 코드가 나온다. 가끔 근본없는 에러가 떠서 랭귀지가 아닌 오픈 소스로 개발하는(…) 느낌을 받는다.

구글링 팁

go는 최신 검색 결과 위주로 보는게 확실히 더 좋았다. 구글 검색에 최근 1년 날짜 필터를 걸어놓자.

개발포인트

꼭 module 단위로 생각하자

아무리 하찮은 함수여도 module로 설계해놓지 않으면 나중에 은근히 import가 꼬이고 가져다 쓰기 힘들다. 왠만하면 go mod init을 생활화하자.

무조건 test 코드를 만들자

개발 도중에 테스트 함 돌려볼까? 라는 안일한 생각으로 python처럼 대충 실행문을 짜서 돌리면 생각보다 잘 안된다… tdd의 마음가짐으로 처음 개발할 때부터 테스트 코드를 생각하는게 더 빠르고 오히려 편하다.

내부망을 쓴다면 일단 이렇게

나는 내부 gitlab을 쓰고 있어서 심플하게 push하고 주소를 고대~~로 가져다 쓰면 import가 잘 된다. 단 GOPROXY라는 환경변수가 필요하다. gitlab 주소가 corp.gitlab.gs라면 export GOPROXY=corp.gitlab.gs/*

의존성 관리를 위해 nexus등이 필요하지 않나는 우려도 있었는데 go mod vendor 기능으로 외부망 통신없이 외부 패키지를 쓸 수 있다. (아직 제대로 써보진 않았다)