sayu.day
Backend

Enterprise Go 시리즈 #9: Makefile로 개발 워크플로우 자동화

Go 프로젝트에서 Makefile을 팀 공통 실행 인터페이스로 운영하는 방법을 정리합니다.

발행 2026년 1월 1일1154

왜 필요한가

명령이 늘수록 팀마다 실행 방식이 달라지고 CI와 로컬 결과가 어긋납니다. Makefile은 이를 단일 인터페이스로 맞추는 장치입니다.

최소 규칙

  • make build
  • make test
  • make lint
  • make generate
  • make 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의 본질은 자동화가 아니라 표준화입니다. 팀이 같은 명령을 쓰게 만드는 것만으로 온보딩과 배포 안정성이 크게 좋아집니다.

다음 읽기

이 생각이 이어지는 방향

Backend 더 보기
공유

읽은 뒤의 대화

읽은 뒤의 생각을 이어갑니다

질문, 반론, 조용한 후속 메모를 이 글 아래에 남길 수 있습니다.

sayu.day는 생각과 작업의 흔적을 천천히 정리하는 개인 출판물입니다.
직접 겪고 검토한 내용, 다시 읽을 만한 아이디어, 작업하며 남긴 메모를 모읍니다.
시간이 지난 글은 현재의 판단과 다를 수 있어 업데이트 맥락을 함께 남깁니다.

© 2026 sayu.day