CHAPTER 18 빌드 시스템과 빌드 철학

Part IV 도구

CHAPTER 18 빌드 시스템과 빌드 철학

구글 엔지니어에게 빌드시스템은 사랑이다

빌드 시스템의 목적

빌드 시스템의 목적

  • 속도 : 개발자가 명령 하나로 빌드를 수행하고 몇 초안에 결과 바이너리를 얻을 수 있어야 한다.
  • 정확성 : 소스 파일과 기타 입력 데이터가 같다면 모든 개발자가 어떤 컴퓨터에서 빌드하더라고 항상 동일한 결과를 내어야 한다

빌드 시스템이 없다면?

빌드 환경 없이 프로젝트 규모를 확장하려 들면 온갖 난관에 부딪히게 된다

컴파일러로 충분하지 않나?

의존 관계가 조금만 복잡해져도 귀찮고 오류가 잦은 작업이다

쉘 스크립트가 출동한다면?

  • 지루해진다
  • 느리다

모던 빌드 시스템

  • 핵심은 의존성
  • 태스크 기반 빌드 시스템
    • 단점
      • 빌드 단계들을 병렬로 싱행하기 어렵다
      • 증분 빌드를 수행하기 어렵다
      • 스크립트를 유지보수하고 디버깅하기 어렵다
  • 아티 팩트 기반 빌드 시스템
    • 도구도 의존성으로 취급
    • 빌드 시스템 확장하기
    • 외부 의존성 명확히 드러내기

      모듈과 의존성 다루기

  • 작은 모듈 사용과 1:1:1 규칙
  • 모듈 가시성 최소화
  • 의존성관리
    • 내부 의존성
    • 외부 의존성
      • 원-버전 규칙
      • 전이 외부 의존성
      • 외부 의존성을 이용해 빌드 결과 캐시
      • 외부 의존성의 보안과 안정성

참조