빌드 시스템은 엔지니어링 조직에서 가장 중요한 부분 중 하나입니다. 각 개발자가 하루에 수십 번 또는 수백 번 상호작용할 수 있기 때문입니다. 조직이 확장됨에 따라 개발자 생산성을 높이려면 기능이 완벽한 빌드 시스템이 필요합니다. 개별 개발자의 경우 코드를 컴파일하는 것이 간단하므로 빌드 시스템이 과도해 보일 수 있습니다. 하지만 대규모로 보면 빌드 시스템을 사용하면 코드베이스의 다른 부분을 사용하는 것과 같은 공유 종속 항목이나 라이브러리와 같은 외부 리소스를 관리하는 데 도움이 됩니다. 빌드 시스템은 빌드가 시작되기 전에 코드를 빌드하는 데 필요한 모든 항목을 갖추도록 도와줍니다. 엔지니어가 리소스와 결과를 공유할 수 있도록 설정된 빌드 시스템은 속도도 높입니다.
이 섹션에서는 Bazel을 만드는 데 사용된 설계 결정을 비롯하여 빌드 및 빌드 시스템의 역사와 기본사항을 다룹니다. Bazel, Buck, Pants와 같은 아티팩트 기반 빌드 시스템에 익숙한 경우 이 섹션을 건너뛰어도 되지만, 아티팩트 기반 빌드 시스템이 확장을 지원하는 데 뛰어난 이유를 이해하는 데 도움이 되는 개요입니다.
-
이전에 빌드 시스템을 사용한 적이 없다면 여기에서 시작해 보세요. 이 페이지에서는 빌드 시스템을 사용해야 하는 이유와 조직의 규모가 몇 명의 개발자를 넘어서기 시작하면 컴파일러와 빌드 스크립트가 최선의 선택이 아닌 이유를 설명합니다.
-
이 페이지에서는 Make, Maven, Gradle과 같은 태스크 기반 빌드 시스템과 몇 가지 과제를 설명합니다.
-
이 페이지에서는 태스크 기반 빌드 시스템의 문제점에 대응하여 아티팩트 기반 빌드 시스템을 설명합니다.
-
이 페이지에서는 분산 빌드 또는 로컬 머신 외부에서 실행되는 빌드에 대해 설명합니다. 이를 위해서는 리소스를 공유하고 결과를 빌드하기 위한 보다 강력한 인프라가 필요합니다. 이때 진정한 마법이 실행됩니다.
-
이 페이지에서는 대규모 종속 항목의 몇 가지 문제와 이러한 문제를 해결하기 위한 전략을 설명합니다.