728x90
반응형

bazel 6

Buck2

개요Buck2는 Meta(구 Facebook)가 개발한 고성능, 확장 가능한 오픈소스 빌드 시스템으로, 기존 Buck의 한계를 개선한 차세대 빌드 엔진이다. Bazel 및 Pants와 같은 현대적 빌드 시스템과 유사하지만, **더 유연한 스크립팅 구조(Starlark 기반)**와 캐싱 및 병렬화 효율성을 극대화하여 대규모 코드베이스 빌드에 최적화되어 있다.1. 개념 및 정의Buck2는 “Build Anything, Anywhere, Fast”라는 목표 아래 설계된 분산 빌드 시스템으로, 단일 프로젝트뿐 아니라 모노리포(monorepo) 환경에서도 수천 개의 타깃을 동시에 빌드할 수 있도록 설계되었다.기존 Buck과 달리, Buck2는 빌드 규칙(Rule)과 빌드 로직(Build Logic)을 완전히 분리..

Topic 2025.11.08

Bazel Remote Execution API (REAPI)

개요대규모 소프트웨어 프로젝트에서는 컴파일, 테스트, 패키징 등 반복되는 빌드 작업이 점점 더 많은 시간과 자원을 소모하게 됩니다. 이를 극복하기 위한 핵심 기술이 **Bazel Remote Execution API(REAPI)**입니다. REAPI는 Bazel을 비롯한 다양한 빌드 시스템에서 사용 가능한 표준화된 원격 실행 인터페이스로, 빌드 작업을 클라우드 또는 원격 서버에서 병렬로 실행하여 개발 생산성을 극대화합니다. 이 글에서는 REAPI의 개념, 구성 요소, 구현 사례 등을 상세히 살펴봅니다.1. 개념 및 정의**Bazel Remote Execution API(REAPI)**는 Google이 중심이 되어 정의한 gRPC 기반 API로, 빌드 또는 테스트 작업을 원격의 실행 서버에서 수행하고 결과..

Topic 2025.08.31

RBE(Remote Build Execution)

개요Remote Build Execution(RBE)는 Bazel과 같은 hermetic build 시스템에서 로컬 환경의 한계를 넘어, 빌드와 테스트를 분산된 원격 서버에서 병렬적으로 실행할 수 있도록 하는 핵심 인프라 기술이다. 대규모 코드베이스와 모노레포 운영 환경에서 병목을 줄이고, 개발 생산성과 CI 속도를 혁신적으로 향상시키는 데 필수적이다.1. 개념 및 정의**RBE(Remote Build Execution)**는 소스 코드, 의존성, 빌드 명령어 등을 패키징하여 원격 서버 클러스터로 전송하고, 해당 작업을 병렬 처리한 후 결과 아티팩트를 다시 가져오는 분산 빌드 시스템이다.목적: 컴퓨팅 집약적 빌드·테스트 작업을 외부로 오프로딩하여 속도 향상핵심 기술: Content-addressable ..

Topic 2025.07.13

BazlMod Remote Cache

개요BazlMod Remote Cache는 Bazel과 BazlMod 환경에서 분산 빌드 캐싱을 구현하여 모노레포 환경에서의 중복 빌드를 방지하고, 개발 생산성과 CI/CD 효율을 극대화하는 전략이다. 특히 대규모 코드베이스를 가진 엔지니어링 조직에서 Bazel의 hermetic build 특성과 원격 캐시 서버를 결합해 시간, 자원, 비용을 절감할 수 있다.1. 개념 및 정의BazlMod Remote Cache는 Bazel의 원격 캐시(remote cache) 기능을 BazlMod 환경(모듈 기반의 Bazel 구성)과 연계해 빌드 산출물을 중앙 서버에 저장하고 재활용하는 구조다.목적: 동일한 빌드 아티팩트를 반복적으로 재생산하지 않고 공유하여 빌드 속도 최적화적용 환경: 모노레포(Monorepo), 대..

Topic 2025.07.13

Hermetic Build & Reproducible Docker

개요Hermetic Build와 Reproducible Docker는 개발 및 배포 환경에서의 일관성과 신뢰성을 확보하기 위한 핵심 전략입니다. 이는 동일한 소스 코드가 언제 어디서나 동일한 결과물을 생성하도록 보장하며, 특히 클라우드 네이티브 및 DevOps 환경에서 필수적인 품질 관리 및 보안 강화 수단으로 부상하고 있습니다.1. 개념 및 정의Hermetic Build: 외부 환경에 의존하지 않고, 독립적인 실행 환경 내에서만 빌드가 수행되도록 설계된 시스템Reproducible Docker: 동일한 입력(소스 코드, 설정 등)으로 항상 동일한 Docker 이미지 결과를 보장하는 방식이 두 개념은 ‘불변성’과 ‘재현성’이라는 공통의 철학을 공유합니다.2. 특징 항목 Hermetic Build Re..

Topic 2025.07.04

Monorepo vs Polyrepo (단일 저장소 vs 다수 저장소)

개요소프트웨어 프로젝트의 규모가 커짐에 따라 코드베이스를 어떻게 관리할 것인가는 개발 생산성과 협업 효율성에 큰 영향을 미칩니다. Monorepo(모노레포)는 모든 프로젝트와 모듈을 하나의 저장소에서 관리하는 방식이고, Polyrepo(폴리레포)는 각각의 프로젝트를 독립적인 저장소로 관리하는 전략입니다. 두 방식은 각기 다른 조직 구조, 개발 규모, 협업 패턴에 따라 선택되어야 하며, DevOps, CI/CD, 모듈화 전략과 밀접하게 연관되어 있습니다.1. 개념 및 정의Monorepo는 하나의 Git 저장소에 여러 애플리케이션, 라이브러리, 구성 요소를 함께 관리하며, 코드 재사용성과 통합 빌드에 유리합니다. 반면 Polyrepo는 프로젝트마다 독립적인 저장소를 운영하여 팀별 자율성과 경량화를 추구합니다..

Topic 2025.04.05
728x90
반응형