Close

지속적 통합 도구

소프트웨어 프로젝트의 코드 변경을 자동화하는 도구.

Max Rehkopf 얼굴 사진
Max Rehkopf

기고 작가


지속적 통합(CI)은 여러 개발자가 공유 코드베이스에서 빠른 속도로 기여하고 공동 작업할 수 있도록 해주는 애자일 및 DevOps 모범 사례입니다. 지속적 통합이 없다면 개발자 공동 작업은 코드 업데이트와 병합을 조정하는 지루한 수동 프로세스입니다.

지속적 통합의 기둥


CI는 자동 테스트, 버전 제어, 빌드 자동화 및 자동 배포를 포함한 애자일 DevOps 소프트웨어 개발 모범 사례를 기반으로 구축되었습니다. 지속적 통합의 핵심 요소마다 고유한 도구와 철학 에코시스템이 있습니다. 소프트웨어 개발 도구 공급자는 이러한 핵심 요소를 하나의 포괄적인 패키지로 묶는 완전한 CI-as-a-Service 서비스를 제공하기 시작했습니다. 번들 서비스에 대해 더 잘 이해하기 위해 기초를 살펴보겠습니다

소스 제어 버전 관리

지속적 통합의 가장 중요한 기본 기둥은 아마도 소스 제어 버전 관리일 것입니다. 동일한 코드베이스에서 작업하는 여러 개발자 간의 의사소통과 편집 충돌 해결에 사용됩니다. 소스 제어 버전 관리는 다양한 도구로 제공되는데 가장 많이 사용되는 도구는 Git 및 Subversion입니다. CI-as-a-Service 제품은 버전 관리 시스템을 중심으로 합니다.

자동 테스트

대부분의 정통 소프트웨어 프로젝트에는 비즈니스 제품 및 기능에 대한 명시적인 책임이 없는 추가 코드베이스가 포함되어 있습니다. 이 보조 코드베이스는 테스트 스위트이며 기본 코드베이스가 버그 없이 제대로 작동하도록 하는 어설션 세트 역할을 합니다. 개발 도중 새 코드가 기존 기능에 회귀를 일으키지 않았는지 확인하기 위해 개발자가 이 테스트를 진행합니다. 이 테스트 케이스를 관련 없는 도구로 실행하여 검증 프로세스를 자동화할 수도 있습니다. CI 서비스 제품은 사용자 지정 이벤트에서 프로젝트의 테스트 케이스를 자동으로 실행합니다. 개발자가 버전 관리 시스템으로 코드를 푸시하면 이벤트는 보통 전체 테스트 스위트가 자동으로 실행되도록 트리거합니다.

솔루션 보기

Open DevOps로 소프트웨어를 구축 및 운영

Bitbucket 로고
논의되는 제품

코드 공동 작업, 테스트 및 배포

빌드 자동화

“빌드”는 소프트웨어 프로젝트의 현재 릴리스 버전을 스냅샷으로 찍기 위해 만든 아티팩트입니다. 빌드는 다양한 네트워크를 통해 최종 사용자에게 배포됩니다. 일반적으로 프로젝트가 빌드 아티팩트를 만들기 위해 취하는 일련의 스크립트 단계가 있습니다. CI 도구는 버전 관리 시스템의 자동 트리거를 사용하여 이 빌드 프로세스를 간소화합니다. 트리거의 한 예는 코드베이스의 프로덕션 브랜치에 새 코드가 병합되어 사용자가 다운로드할 수 있도록 원격 서버에 빌드를 업로드하는 것입니다.

자동화된 배포

빌드를 배포할 준비가 되면 배포 프로세스를 거치게 됩니다. 프로젝트 배치에 따라 다양한 결과가 나올 수 있습니다. 예를 들어 웹 프로젝트는 공개적으로 액세스할 수 있는 웹 서버에 배포됩니다. 이 배포 중에 빌드 단계에서 생성된 아티팩트가 웹 서버에 복사됩니다. 모바일과 데스크톱의 배포 과정은 다르며 사용자가 앱 다운로드할 수 있도록 '스토어'에 업로드해야 할 수도 있습니다.

지속적 통합 도구 비교


1. Bitbucket Pipelines

요약: Bitbucket Pipelines는 Atlassian에서 제공하는 클라우드 버전 관리 시스템인 Bitbucket에 직접 통합된 CI 도구입니다. Bitbucket Pipelines는 프로젝트가 이미 Bitbucket에 있는 경우 CI를 활성화하는 간단한 다음 단계입니다. Bitbucket Pipelines는 코드로 관리되므로 파이프라인 정의를 쉽게 커밋하고 빌드를 시작할 수 있습니다. Bitbucket Pipelines는 CD도 함께 제공합니다. 즉, Bitbucket Pipelines로 구축된 프로젝트를 프로덕션 인프라에도 배포할 수 있습니다.

기능:

  • 간편한 설정 및 구성
  • 통합 Bitbucket 경험
  • 타사 제공 클라우드

웹사이트: https://bitbucket.org/product/features/pipelines

2. Jenkins

요약: Jenkins는 오랫동안 입증된 실적을 가진 베테랑 CI 도구입니다. 오픈소스이며 커뮤니티 업데이트 기반입니다. Jenkins는 주로 온프레미스 설치를 위해 만들어졌습니다. Jenkins는 HIPAA 규정 준수 데이터와 같은 민감한 고객을 처리하기 위해 조직에 온프레미스 지원이 필요할 때 아주 좋은 선택입니다.

기능:

  • 온프레미스
  • 오픈소스
  • 강력한 애드온/플러그인 에코시스템

웹사이트: https://jenkins.io/

3. AWS CodePipeline

요약: Amazon Web Services는 시장에서 가장 지배적인 클라우드 인프라 제공자이며 모든 종류의 인프라와 코드 개발 작업을 위한 도구와 서비스를 제공합니다. CodePipeline은 Amazon Web Services의 CI 도구 서비스입니다. CodePipeline은 원활한 AWS 경험을 제공하기 위해 기존의 다른 AWS 도구와 직접 인터페이스합니다.

기능:

  • 완전한 클라우드
  • Amazon Web Services와 통합
  • 사용자 지정 플러그인 지원
  • 강력한 액세스 제어

웹사이트: https://aws.amazon.com/codepipeline/

4. CircleCI

요약: CircleCI는 가장 유명한 버전 관리 시스템 클라우드 호스팅 도구인 GitHub와 원활하게 페어링되는 CI 도구입니다. CircleCI는 버전 관리 시스템, 컨테이너 시스템, 전달 메커니즘으로 구성된 매트릭스를 지원한다는 점에서 가장 유연한 CI 도구입니다. CircleCI는 온프레미스에서 호스팅하거나 클라우드 서비스를 통해 사용할 수 있습니다.

기능:

  • CI 이벤트로 인한 알림 트리거
  • 빠른 빌드에 최적화된 성능
  • SSH와 로컬 빌드를 통한 간편한 디버깅
  • 빌드 성능 측정을 위한 분석

웹사이트: https://circleci.com/

5. Azure Pipelines

요약: Azure는 Microsoft의 클라우드 인프라 플랫폼으로, Microsoft의 Amazon Web Services와 동등합니다. 앞서 언급한 AWS CodePipeline처럼 Azure는 Azure 호스팅 도구 모음에 완전히 통합된 CI 도구를 제공합니다.

기능:

  • Azure 플랫폼 통합
  • Windows 플랫폼 지원
  • 컨테이너 지원
  • GitHub 통합

웹사이트: https://azure.microsoft.com

6. GitLab

요약: GitLab은 완전한 DevOps 경험을 제공하는 새로운 CI 도구입니다. GitLab은 GitHub의 전반적인 경험을 개선하기 위해 만들어졌습니다. GitLab은 컨테이너를 지원하는 최신 UX를 제공합니다.

기능:

  • 온프레미스 또는 클라우드 호스팅
  • 지속적인 보안 테스트
  • 배우기 쉬운 UX

웹사이트: https://about.gitlab.com

7. Atlassian Bamboo

요약: Atlassian에서 제공하는 또다른 CI 서비스입니다. Bitbucket Pipelines는 완전히 클라우드 호스팅 옵션이지만 Bamboo는 자체 호스팅 옵션을 제공합니다.

기능:

  • Atlassian 제품군과 최고의 통합
  • 애드온 및 플러그인이 있는 포괄적인 마켓플레이스
  • Docker 에이전트를 통한 컨테이너 지원
  • IFTTT 기능을 위한 트리거 API

웹사이트: https://www.atlassian.com/software/bamboo

회사에 가장 적합한 CI 도구는 무엇입니까?


팀을 위한 CI 도구를 선택할 때 고려해야 할 중요한 의사 결정 요소가 몇 가지 있습니다.

버전 관리 시스템 지원

CI/CD 시스템의 핵심 기둥은 기본 버전 관리 시스템(VCS)의 지원 및 통합입니다. 가장 인기 있는 VCS는 Git, Subversion, Mercurial, Perforce입니다. 클라우드 CI 도구는 VCS의 일부 또는 전부를 지원할 수 있습니다. 프로젝트 VCS에 대한 지원을 제공하는 CI 도구를 선택하는 것이 중요합니다.

온프레미스 및 클라우드 비교

앞서 언급한 Jenkins 같은 CI 도구 중 일부는 온프레미스에 설치할 수 있습니다. 이것은 팀이 자체 인프라에서 CI 시스템을 구성하고 관리할 책임이 있다는 뜻입니다. 프라이버시와 보안상의 이유로 유용할 수 있습니다. 예를 들어 규정 준수 기준을 충족해야 하는 고객 데이터 프라이버시 문제가 있다면 온프레미스가 필수일 수 있습니다. 또한 온프레미스 인스턴스는 더 강력한 사용자 지정 및 구성 옵션을 제공할 수 있습니다.

온프레미스는 핵심 비즈니스 요구 사항에 맞지 않는 추가 작업일 수 있습니다. 클라우드 옵션은 CI 도구 관리를 타사에 아웃소싱합니다. 그런 다음 클라우드 호스팅 회사에서 CI 도구의 업타임, 지원, 확장을 처리하여 팀이 핵심 비즈니스 요구 사항에 집중할 수 있도록 해 줍니다. 제품 시장 적합 목표에 집중해야 하는 예산이 부족한 팀이나 소규모 회사에 큰 도움이 될 수 있습니다.

컨테이너 지원

컨테이너화는 최신 소프트웨어 개발 트렌드입니다. 컨테이너화를 사용하면 애플리케이션의 변경 불가능하고 반복 가능하며 격리된 사본을 배포할 수 있습니다. 컨테이너화는 Docker, Kubernetes 같은 도구로 가능합니다. 최신 CI 도구는 컨테이너를 CI/CD 프로세스에 통합하는 것을 지원합니다. 컨테이너는 “내 컴퓨터에서는 되는” 문제를 해결합니다. 애플리케이션 코드가 시스템 레벨 종속성의 고정 스냅샷에 패키징되었는지 확인합니다. 이렇게 하면 팀 코드가 CI 도구에서 실행될 때 로컬 환경을 복제한 것임을 보장합니다. 이렇게 하면 컨테이너 없이 발생하는 환경 패리티 문제 해결 문제를 전체적으로 없앨 수 있습니다.

플러그인 및 타사 통합

CI 도구는 나머지 기술 스택과 통합되면 훨씬 더 유용합니다. 엔지니어링 팀 효율성과 성과에 대한 분석을 CI 도구에서 수집할 수 있습니다. 스프린트 계획 애플리케이션을 CI 도구에 연결하면 코드가 전달되면 스프린트 상태를 자동으로 업데이트할 수 있습니다. 이 통합은 엔지니어링 팀 KPI와 로드맵을 안내하는 데 사용할 수 있습니다.

CI 시작하기


고성능 엔지니어링 팀을 지원하기 위해서는 최신 CI 도구가 꼭 필요합니다. 엔지니어링 팀은 CI 도구를 사용하여 커뮤니케이션 및 제공 속도를 최적화할 수 있습니다. 시장에는 인기 있는 CI 도구 서비스가 많습니다. CI 도구를 선택할 때 고려해야 할 핵심 개념은 버전 관리 시스템 지원, 온프레미스 및 클라우드 호스팅, 배포 파이프라인, 외부 애플리케이션 통합입니다.

가이드 읽어보기

이러한 관행을 시작하는 데 도움이 되는 심층적인 가이드와 자습서를 찾을 수 있습니다.

Max Rehkopf
Max Rehkopf

스스로를 "자유분방하다"고 생각하는 저는 일상을 질서 있게 만들기 위해 애자일 관행과 린 원칙을 추구합니다. Atlassian을 위해 마련한 많은 기사, 강연 및 동영상을 통해 이러한 배운 점을 다른 분들과 공유할 때 큰 즐거움을 얻습니다 


이 문서 공유

여러분께 도움을 드릴 자료를 추천합니다.

이러한 리소스에 책갈피를 지정하여 DevOps 팀의 유형에 대해 알아보거나 Atlassian에서 DevOps에 대한 지속적인 업데이트를 확인하세요.

DevOps 일러스트레이션

DevOps 커뮤니티

DevOps 일러스트레이션

블로그 읽기

맵 일러스트레이션

무료로 사용해보기

DevOps 뉴스레터 신청

Thank you for signing up