관리 메뉴

피터의 개발이야기

[DevOps] Bamboo: DevOps와 CI/CD를 위한 강력한 도구 본문

DevOps

[DevOps] Bamboo: DevOps와 CI/CD를 위한 강력한 도구

기록하는 백앤드개발자 2024. 12. 17. 23:44
반응형

ㅁ 들어가며

  오늘 Atlassian의 Bamboo에 대해서 알게 되어 정리하였다. 짧게 이야기하자면, Bamboo는 소프트웨어 개발팀을 위한 연속 통합(Continuous Integration, CI)연속 배포(Continuous Deployment, CD) 도구이다. 이번 글에서는 Bamboo의 주요 기능, 장점, 사용 사례 및 다른 DevOps 도구와의 차별점에 대해서 정리하였다.

 

ㅁ Bamboo란 무엇인가?

  Bamboo는 Atlassian에서 제공하는 CI/CD 도구로, 소프트웨어 빌드, 테스트, 배포 프로세스를 자동화하고 개발 팀이 더 빠르고 안정적으로 코드를 릴리스할 수 있게 한다. Bamboo는 Jira, Bitbucket, Confluence 등 Atlassian 제품군과의 긴밀한 통합하여 사용할 수 있으며, 복잡한 워크플로우를 처리하는 데 강력한 기능을 제공한다.

 

ㅁ 주요 기능

연속 통합 (CI)

  • 개발자가 코드를 커밋할 때마다 Bamboo는 자동으로 코드를 빌드하고 테스트한다.
  • 빠른 피드백을 제공하여 코드 품질을 높이고 버그를 초기에 발견할 수 있도록 돕는다.

연속 배포 (CD)

  • 배포 파이프라인을 구성하여 개발 환경, QA 환경, 프로덕션 환경으로 코드를 자동으로 릴리스할 수 있다.
  • 릴리스 단계에서 수동 승인을 요구하도록 설정할 수도 있다.

강력한 워크플로우 커스터마이징

  • Bamboo는 파이프라인 내에서 여러 단계(스테이지)를 정의하고 병렬로 빌드 및 테스트 작업을 실행할 수 있다.
  • 조건부 단계 실행 및 트리거링 옵션을 제공하여 복잡한 빌드 프로세스도 처리할 수 있다.
  • Jenkins의 블루오션가 비슷한 역할을 한다.

Atlassian 생태계와 통합

  • Jira: 빌드와 배포 상태를 Jira 이슈와 연동하여 추적할 수 있다.
  • Bitbucket: Pull Request 빌드, 코드 병합 전 자동 테스트 실행 등 Bitbucket과의 강력한 통합을 지원한다.
  • Confluence: 빌드 상태나 배포 기록을 문서화하여 공유할 수 있다.

다양한 기술 스택 지원

  • Java, .NET, Python, PHP, Node.js 등 다양한 언어와 프레임워크를 지원한다.
  • Docker 및 Kubernetes와도 통합되어 컨테이너 기반 워크플로우를 쉽게 관리할 수 있다.

배포 환경 관리

  • 여러 환경(개발, 스테이징, 프로덕션 등)을 관리하며 환경별로 배포 설정을 맞춤 구성할 수 있다.

 

ㅁ Bamboo의 계층적 구조

Bamboo의 계층적 구조는 빌드와 배포 파이프라인을 체계적으로 구성하기 위해 여러 요소를 단계적으로 정의한다.

 

프로젝트(Project)

ㅇ 프로젝트는 Bamboo에서 가장 상위 개념

ㅇ 하나의 프로젝트는 여러 빌드 플랜(Build Plan)으로 구성

ㅇ 팀 또는 제품별로 프로젝트를 구분할 수 있어 관리가 용이함

 

빌드 플랜(Build Plan)

ㅇ 빌드 플랜은 빌드, 테스트, 배포 워크플로우를 정의하는 기본 단위

 각 빌드 플랜에는 여러 스테이지(Stage)작업(Job)이 포함됨

 빌드 플랜은 버전 관리 시스템과 연결되어 코드 변경을 추적하고 실행함

 

스테이지(Stage)

 스테이지는 빌드 플랜 내에서 작업의 논리적 그룹

 여러 스테이지를 순차적으로 실행하거나 조건에 따라 건너뛸 수 있다.

 예: 컴파일 -> 단위 테스트 -> 통합 테스트 -> 배포

 

작업(Job)

ㅇ 각 스테이지는 여러 작업으로 구성

 작업은 하나의 실행 단위이며, 빌드 도구, 스크립트 실행, 테스트 실행 등 세부 작업을 정의한다.

 여러 작업을 병렬로 실행하여 빌드 시간을 단축할 수 있다.

 

태스크(Task)

 작업(Job) 안에서 수행되는 가장 세부적인 단위

예: Maven 빌드 실행, Shell 스크립트 실행, 테스트 결과 보고서 생성 등.

 

배포 프로젝트(Deployment Project)

빌드 플랜에서 생성된 아티팩트를 배포하는 데 사용

 여러 배포 환경(개발, QA, 프로덕션 등)을 정의하고, 각 환경별 설정을 맞춤화할 수 있다.

 이 계층 구조를 통해 Bamboo는 복잡한 빌드와 배포 과정을 모듈화하고 체계적으로 관리할 수 있다.

ㅇ 팀은 필요에 따라 구조를 확장하거나 수정하며 다양한 환경에 적합한 워크플로우를 구성할 수 있다.

 

ㅁ Bamboo의 장점

ㅇ 효율적인 협업

Atlassian 제품군과의 통합으로 팀원 간의 협업이 쉬워지며, 모든 개발 및 배포 과정이 추적 가능하다.

 

ㅇ 자동화 및 확장성

Bamboo는 빌드, 테스트, 배포를 자동화하여 개발 속도를 크게 향상시키고, 병렬 실행 및 분산 빌드 기능으로 확장성을 제공한다.

 

강력한 플러그인 생태계

Atlassian Marketplace에서 제공되는 다양한 플러그인을 통해 Bamboo의 기능을 확장할 수 있다.

 

ㅇ 보안 및 제어

온프레미스 환경에서 호스팅할 수 있어 민감한 데이터에 대한 보안을 강화할 수 있다.

접근 권한을 세분화하여 팀과 환경별로 빌드 및 배포 권한을 관리할 수 있다.

 

ㅁ Bamboo와 다른 CI/CD 도구 비교

특징 Bamboo Jenkins GitLab CI/CD
통합성 Atlassian 제품과 긴밀히 연동 플러그인으로 확장 GitLab과 완벽히 통합
설정 난이도 GUI 중심, 설정이 쉬움 복잡한 설정 파일 필요 비교적 쉬움
호스팅 방식 온프레미스 온프레미스 클라우드 및 온프레미스 지원
확장성 기본 제공 플러그인 Docker 기반으로 확장 용이

 

ㅁ Bamboo를 사용하는 주요 사례

ㅇ 대규모 팀에서의 협업
Jira, Bitbucket과 연동하여 대규모 팀에서의 코드 품질 관리와 워크플로우를 자동화.

 

ㅇ 복잡한 빌드 파이프라인:
병렬 작업 및 조건부 실행을 활용해 복잡한 빌드 및 배포 과정을 간소화.

 

ㅇ 보안 요구 사항이 높은 프로젝트:
온프레미스 설치로 데이터를 내부에서 관리하며 높은 수준의 보안을 유지.

 

ㅁ 마무리

 Bamboo를 처음 보았지만, Atlassian 제품군을 사용하는 팀에 강력한 CI/CD 도구이다. 자동화와 통합 기능을 통해 개발 속도를 높이고, 복잡한 워크플로우를 효과적으로 처리할 수 있다. 하지만 머니머니 해도 무료인 Jenkins의 대중성이 나에겐 더 친숙하다.

 

ㅁ 함께 보면 좋은 사이트

 Jenkins와 bamboo 특징 및 장단점 비교

Bamboo 대 Jenkins

 

반응형
Comments