여러분의 프로젝트에서 Bazel을 사용하고 계신가요? 아니면 도입을 고민 중이신가요? 빌드 도구를 선택할 때 가장 중요한 것 중 하나가 바로 버전 지원 정책입니다. 특히 대규모 프로젝트를 진행 중이라면 언제까지 안정적인 지원을 받을 수 있는지 미리 파악하는 것이 필수적이죠.
오늘은 구글(Google)이 개발한 강력한 빌드 도구 Bazel의 버전 지원 정책과 각 버전별 EOS/EOL(End of Support/End of Life) 일정을 자세히 살펴보겠습니다.
1. Bazel이란? 구글의 빌드 시스템을 이해하기
Bazel은 구글이 내부에서 사용하던 Blaze 빌드 시스템을 오픈소스로 공개한 것으로, 빠르고 확장 가능한 멀티 언어 빌드 도구입니다. 2015년 오픈소스로 공개된 이후 수많은 대규모 프로젝트에서 채택되며 빌드 도구의 표준으로 자리잡고 있습니다.
Bazel의 주요 특징
속도와 확장성
Bazel은 증분 빌드(Incremental Build)를 지원하여 변경된 부분만 다시 빌드합니다. 대규모 코드베이스에서도 빠른 빌드 속도를 유지할 수 있죠. 원격 캐싱(Remote Caching)과 분산 빌드(Distributed Build)를 통해 팀 전체가 빌드 결과를 공유할 수 있어 생산성이 크게 향상됩니다.
멀티 언어 지원
Java, C++, Python, Go, Android, iOS 등 다양한 언어와 플랫폼을 하나의 빌드 시스템으로 관리할 수 있습니다. 모노레포(Monorepo) 환경에서 특히 강력한 위력을 발휘합니다.
재현 가능한 빌드
Bazel은 샌드박싱(Sandboxing)을 통해 빌드 환경을 격리하고, 동일한 입력에 대해 항상 동일한 출력을 보장합니다. 이는 CI/CD 환경에서 매우 중요한 특성입니다.
2. Bazel의 릴리스 모델 – LTS와 Rolling Release의 차이점
Bazel 4.0부터 구글은 두 가지 릴리스 트랙을 제공합니다. 이 구조를 이해하면 여러분의 프로젝트에 맞는 버전 선택이 훨씬 쉬워집니다.
LTS(Long Term Support) 릴리스
안정성이 필요한 프로덕션 환경에 최적
LTS 릴리스는 메이저 버전(4.0, 5.0, 6.0 등)으로 출시되며, 약 12개월마다 새로운 메이저 버전이 나옵니다. 각 LTS 버전은 출시 후 3년간 지원을 받습니다. 대부분의 기업 환경에서는 LTS 버전을 사용하는 것을 권장합니다.
LTS 버전에서는 마이너 릴리스(예: 6.1, 6.2)를 통해 버그 수정과 이전 버전과 호환되는 기능이 백포트됩니다. 대략 2개월마다 새로운 마이너 버전이 출시되며, 보안 문제나 중요한 버그에 대한 패치 릴리스도 필요에 따라 제공됩니다.
Rolling Release
최신 기능을 빠르게 경험하고 싶은 개발자를 위한 선택
Rolling Release는 약 2주마다 Bazel의 main 브랜치에서 새로운 릴리스가 생성됩니다. 구글 내부의 Blaze 릴리스와 동기화되어 최신 변경사항을 가장 먼저 경험할 수 있습니다.
다만 Rolling Release에는 호환성을 깨는 변경사항이 포함될 수 있으므로, 프로덕션 환경보다는 테스트나 개발 환경에서 사용하는 것이 안전합니다.
3. Bazel의 지원 단계 구조 이해하기
Bazel LTS 버전은 생명주기 동안 세 가지 단계를 거칩니다.
Active 단계 (활성 지원)
새로운 LTS 버전이 출시되면 즉시 Active 단계로 진입합니다. 이 단계에서는 중요한 기능과 버그 수정이 마이너 릴리스를 통해 백포트됩니다. 약 2개월마다 새로운 마이너 버전이 출시되며, 가장 적극적인 지원을 받는 시기입니다.
Maintenance 단계 (유지보수 지원)
다음 LTS 버전이 출시되면 이전 버전은 Maintenance 단계로 전환됩니다. 이 단계에서는 보안 이슈나 OS 호환성 문제 등 중요한 버그만 백포트됩니다. 새로운 기능 추가는 없지만, 안정적인 사용은 계속 가능합니다.
Deprecated 단계 (지원 종료)
Maintenance 단계에서 2년이 지나면 Deprecated 단계로 전환되며, 더 이상 어떠한 지원도 제공되지 않습니다. 보안 취약점이 발견되어도 패치가 제공되지 않으므로, 이 단계에 도달하기 전에 반드시 새로운 버전으로 업그레이드해야 합니다.
4. 전체 Bazel LTS 버전별 상세 지원 일정 (2025년 10월 기준)
각 LTS 버전의 정확한 EOS/EOL 일정을 표로 정리했습니다. 이 정보는 Bazel 공식 문서, GitHub Releases, endoflife.date를 참고하여 작성했습니다.
LTS 버전 전체 현황
LTS 버전 | 릴리스 날짜 | 최신 버전 | 지원 단계 | 지원 종료일 | 비고 |
---|---|---|---|---|---|
Bazel 9 | 2025년 후반 예정 | Rolling | 개발 중 | 미정 | 2025년 말 출시 예정, WORKSPACE 완전 제거 |
Bazel 8 | 2024년 12월 9일 | 8.4.2 | Active | 2027년 12월 | 현재 최신 LTS, Bzlmod 기본 활성화 |
Bazel 7 | 2023년 12월 11일 | 7.6.2 | Maintenance | 2026년 12월 | Bzlmod, BwoB, Skymeld 기본 활성화 |
Bazel 6 | 2022년 12월 19일 | 6.5.0 | Maintenance | 2025년 12월 | Bzlmod GA 버전 |
Bazel 5 | 2022년 1월 19일 | 5.4.1 | Deprecated | 2025년 1월 | 지원 종료됨, 업그레이드 필요 |
Bazel 4 | 2021년 1월 19일 | 4.2.4 | Deprecated | 2024년 1월 | 최초 LTS 릴리스, 지원 완전 종료 |
Bazel 3.x 이하 | ~ 2020년 | – | 지원 종료 | 2021년 이전 | LTS 정책 이전 버전, 모든 지원 종료 |
각 LTS 버전의 모든 마이너/패치 릴리스
Bazel 8.x (Active LTS) – 2027년 12월까지 지원
버전 | 릴리스 날짜 | 타입 | 주요 변경사항 |
---|---|---|---|
8.0.0 | 2024-12-09 | Major | 첫 LTS 릴리스, Bzlmod 기본 활성화 |
8.1.0 | 2025-02 추정 | Minor | 버그 수정 및 기능 백포트 |
8.2.0 | 2025-04 추정 | Minor | 버그 수정 및 기능 백포트 |
8.2.1 | 2025년 | Patch | 중요 버그 수정 |
8.3.0 | 2025-06-23 | Minor | repo_contents_cache 추가 |
8.3.1 | 2025-06-30 | Patch | runfiles 관련 수정 |
8.4.0 | 2025-09-04 | Minor | 시스템 trust store 지원 |
8.4.1 | 2025-09-11 | Patch | 리포지토리 캐시 문제 수정 |
8.4.2 | 2025-10 | Patch | macOS Tahoe 호환성 수정 (현재 최신) |
Bazel 7.x (Maintenance LTS) – 2026년 12월까지 지원
버전 | 릴리스 날짜 | 타입 | 주요 변경사항 |
---|---|---|---|
7.0.0 | 2023-12-11 | Major | Bzlmod, BwoB, Skymeld 기본 활성화 |
7.1.0 | 2024년 | Minor | 버그 수정 및 기능 백포트 |
7.2.0 | 2024년 | Minor | 버그 수정 및 기능 백포트 |
7.3.0 | 2024년 | Minor | 버그 수정 및 기능 백포트 |
7.4.0 | 2024년 | Minor | 버그 수정 및 기능 백포트 |
7.5.0 | 2024년 | Minor | 버그 수정 및 기능 백포트 |
7.6.0 | 2025년 | Minor | 버그 수정 및 기능 백포트 |
7.6.1 | 2025년 | Patch | 중요 버그 수정 |
7.6.2 | 2025-10 | Patch | macOS Tahoe 호환성 수정 (현재 최신) |
Bazel 6.x (Maintenance LTS) – 2025년 12월까지 지원
버전 | 릴리스 날짜 | 타입 | 주요 변경사항 |
---|---|---|---|
6.0.0 | 2022-12-19 | Major | Bzlmod GA 전환 |
6.1.0 | 2023년 | Minor | 버그 수정 및 기능 백포트 |
6.1.1 | 2023년 | Patch | 중요 버그 수정 |
6.1.2 | 2023년 | Patch | 중요 버그 수정 |
6.2.0 | 2023년 | Minor | Lockfile 초기 지원 |
6.2.1 | 2023년 | Patch | 중요 버그 수정 |
6.3.0 | 2023년 | Minor | 버그 수정 및 기능 백포트 |
6.3.1 | 2023년 | Patch | 중요 버그 수정 |
6.3.2 | 2023년 | Patch | 중요 버그 수정 |
6.4.0 | 2023년 | Minor | 버그 수정 및 기능 백포트 |
6.5.0 | 2024-01 | Minor | 버그 수정 및 기능 백포트 (현재 최신) |
Bazel 5.x (Deprecated) – 지원 종료됨
버전 | 릴리스 날짜 | 타입 | 주요 변경사항 |
---|---|---|---|
5.0.0 | 2022-01-19 | Major | Bzlmod 실험적 도입 |
5.1.0 | 2022년 | Minor | 버그 수정 및 기능 백포트 |
5.1.1 | 2022년 | Patch | 중요 버그 수정 |
5.2.0 | 2022년 | Minor | 버그 수정 및 기능 백포트 |
5.3.0 | 2022년 | Minor | 버그 수정 및 기능 백포트 |
5.3.1 | 2022년 | Patch | 중요 버그 수정 |
5.3.2 | 2022년 | Patch | 중요 버그 수정 |
5.4.0 | 2022년 | Minor | 버그 수정 및 기능 백포트 |
5.4.1 | 2023년 | Patch | 최종 릴리스 (지원 종료) |
Bazel 4.x (Deprecated) – 지원 종료됨
버전 | 릴리스 날짜 | 타입 | 주요 변경사항 |
---|---|---|---|
4.0.0 | 2021-01-19 | Major | 최초 LTS 릴리스 |
4.1.0 | 2021-05 | Minor | Java workers 멀티스레드 개선 |
4.2.0 | 2021-08 | Minor | required_providers Starlark 노출 |
4.2.1 | 2021년 | Patch | 중요 버그 수정 |
4.2.2 | 2021년 | Patch | 중요 버그 수정 |
4.2.4 | 2022년 | Patch | 최종 릴리스 (지원 종료) |
Pre-LTS 버전 (참고용)
Bazel 4.0 이전 버전들은 LTS 정책이 없었으며, 현재 모든 지원이 종료되었습니다.
버전 범위 | 출시 시기 | 상태 |
---|---|---|
Bazel 3.x | 2020년 | 지원 종료 |
Bazel 2.x | 2019-2020년 | 지원 종료 |
Bazel 1.x | 2019년 | 지원 종료 |
Bazel 0.x | 2015-2019년 | 지원 종료 |
각 버전의 주요 특징
Bazel 8.x (현재 Active)
- Bzlmod가 기본 외부 종속성 시스템으로 설정됨 (WORKSPACE 비활성화)
- Android, C++, Java, Protobuf, Shell 규칙이 Starlark로 모듈화
- Bazel 5.0 지원 종료 발표 (2025년 1월)
- 시스템 trust store 기본 지원 (8.4.0부터)
Bazel 7.x (Maintenance)
- Bzlmod 기본 활성화
- Build without the Bytes (BwoB) 기본 활성화로 최대 40% 빌드 속도 향상
- Project Skymeld 활성화로 최대 15% 빌드 시간 단축
- Android 및 C++ 플랫폼 기반 툴체인 해상도 활성화
Bazel 6.x (Maintenance)
- Bzlmod가 GA(Generally Available)로 전환
- Bazel Central Registry(BCR) 출시로 모듈 관리 체계화
- Lockfile 초기 지원 (6.2.0부터)
Bazel 5.x 및 4.x (Deprecated)
- 더 이상 지원되지 않음
- 보안 업데이트 없음
- 즉시 최신 LTS 버전으로 업그레이드 필요
5. 버전 업그레이드 전략 – 언제, 어떻게 마이그레이션할까?
Bazel 버전 업그레이드는 계획적으로 진행해야 합니다. 다음 가이드라인을 참고하세요.
Active 단계 버전을 사용하는 경우
현재 Bazel 8.x를 사용 중이라면 마이너 업데이트는 비교적 안전하게 진행할 수 있습니다. 2개월마다 나오는 마이너 릴리스는 하위 호환성을 유지하므로, 정기적으로 업데이트하는 것을 권장합니다.
Maintenance 단계 버전을 사용하는 경우
Bazel 6.x나 7.x를 사용 중이라면, 지원 종료일을 체크하고 Active 버전인 8.x로의 마이그레이션을 계획하세요. 특히 Bazel 6.x는 2025년 12월에 지원이 종료되므로, 올해 안에 업그레이드를 완료하는 것이 좋습니다.
마이그레이션 시에는 먼저 테스트 환경에서 충분히 검증한 후 프로덕션에 적용하세요. Bazel 6에서 8로 업그레이드하는 경우, 중간 단계인 7.x를 거쳐가는 것도 안전한 방법입니다.
Deprecated 단계 버전을 사용하는 경우
Bazel 5.x 이하를 사용 중이라면 즉시 업그레이드해야 합니다. 보안 취약점이 발견되어도 패치가 제공되지 않으므로, 프로덕션 환경에서 사용하는 것은 매우 위험합니다. 최소한 Maintenance 단계인 6.x 이상으로 업그레이드하고, 가능하다면 최신 Active 버전인 8.x로 이동하는 것을 강력히 권장합니다.
주요 마이그레이션 포인트
Bazel 6 → 7 업그레이드 시 주의사항
- Bzlmod가 기본으로 활성화되지만, WORKSPACE는 여전히 작동합니다
- 점진적으로 MODULE.bazel로 마이그레이션할 시간이 있습니다
Bazel 7 → 8 업그레이드 시 주요 변경사항
- WORKSPACE가 기본적으로 비활성화됩니다 (필요시 활성화 가능)
--incompatible_autoload_externally
플래그로 전환 기간을 가질 수 있습니다
Bazel 8 → 9 업그레이드 준비
- Bazel 9에서는 WORKSPACE 기능이 완전히 제거될 예정입니다
- 2025년 내에 MODULE.bazel로의 마이그레이션을 완료해야 합니다
6. 프로젝트별 권장 버전 선택 가이드
여러분의 프로젝트 상황에 따라 적절한 버전을 선택하세요.
신규 프로젝트
최신 Active LTS 버전인 Bazel 8.x를 사용하세요. 2027년까지 안정적인 지원을 받을 수 있으며, 최신 기능과 성능 개선을 모두 누릴 수 있습니다. MODULE.bazel을 사용한 의존성 관리로 시작하면 향후 업그레이드도 수월합니다.
대규모 프로덕션 환경
현재 Bazel 7.x를 사용 중이라면 안정성이 입증된 상태이므로 유지하되, 2026년 말 지원 종료 전에 8.x로 마이그레이션 계획을 세우세요. Bazel 6.x는 2025년 말 지원 종료가 임박했으므로, 올해 안에 업그레이드를 진행해야 합니다.
최신 기능 테스트
Rolling Release를 사용하여 다음 LTS 버전의 기능을 미리 체험할 수 있습니다. 단, 프로덕션 환경이 아닌 개발이나 테스트 환경에서만 사용하세요.
7. Bazel 버전 관리 도구 – Bazelisk 활용하기
여러 프로젝트에서 서로 다른 Bazel 버전을 사용해야 한다면 Bazelisk를 활용하세요. Bazelisk는 프로젝트별로 자동으로 적절한 Bazel 버전을 다운로드하고 실행해주는 버전 관리 도구입니다.
프로젝트 루트에 .bazelversion
파일을 만들고 원하는 버전을 명시하면:
8.4.2
Bazelisk가 자동으로 해당 버전을 사용합니다. Rolling Release를 테스트하고 싶다면:
last_rc
이렇게 설정하면 최신 릴리스 후보(Release Candidate) 버전을 자동으로 사용합니다.
8. 유용한 참고 자료와 링크
공식 문서
- Bazel 공식 릴리스 모델: 최신 릴리스 정책과 지원 일정
- Bazel GitHub 릴리스 페이지: 모든 버전의 상세 릴리스 노트
- Bazel 로드맵: 향후 개발 계획
버전 관리
- endoflife.date – Bazel: EOS/EOL 일정 자동 추적
- Bazelisk: 버전 관리 도구
마이그레이션 가이드
- Bzlmod 마이그레이션 가이드: WORKSPACE에서 MODULE.bazel로 전환
커뮤니티
- Bazel Slack: 실시간 질의응답
- bazel-discuss 메일링 리스트: 공식 토론 포럼
Bazel의 버전 지원 정책은 명확한 3년 LTS 구조로 되어 있어, 프로덕션 환경에서 안정적으로 사용하기에 적합합니다. 각 버전의 지원 종료일을 미리 파악하고 계획적으로 업그레이드하면, 보안과 안정성을 모두 확보할 수 있습니다.
현재 2025년 10월 기준으로 Bazel 5.x 이하를 사용하고 계시다면 즉시 업그레이드가 필요하며, Bazel 6.x 사용자는 올해 안에 마이그레이션을 시작하셔야 합니다. 신규 프로젝트라면 최신 Active LTS인 Bazel 8.x로 시작하시는 것을 추천드립니다. 🙂