Backend
Enterprise Go 시리즈 #9: Makefile로 개발 워크플로우 자동화
Go 프로젝트에서 Makefile을 팀 공통 실행 인터페이스로 운영하는 방법을 정리합니다.
Enterprise Go 시리즈 #9: Makefile로 개발 워크플로우 자동화
왜 필요한가
명령이 늘수록 팀마다 실행 방식이 달라지고 CI와 로컬 결과가 어긋납니다. Makefile은 이를 단일 인터페이스로 맞추는 장치입니다.
최소 규칙
make buildmake testmake lintmake generatemake clean
개발자와 CI가 같은 명령을 쓰도록 강제합니다.
예시
GO := go
.PHONY: build test lint generate clean
build:
$(GO) build ./...
test:
$(GO) test -race -cover ./...
lint:
golangci-lint run ./...
generate:
$(GO) generate ./...
clean:
rm -rf bin
모노레포에서의 팁
- 서비스별 타겟 분리 (
build-api,build-worker) - 변경 서비스만 빌드하는 타겟 별도 제공
help타겟으로 실행 가능한 문서화
자주 하는 실수
- Makefile에 환경별 분기를 과도하게 넣어 복잡도 폭증
- 로컬만 되는 명령을 넣어 CI와 불일치
- 모든 타겟을
.PHONY로 선언하지 않아 캐시 오작동
요약
Makefile의 본질은 자동화가 아니라 표준화입니다. 팀이 같은 명령을 쓰게 만드는 것만으로 온보딩과 배포 안정성이 크게 좋아집니다.