CI/CD 특징과 유료 무료 툴 종류 알아보기

CI/CD는 지속적 통합과 배포를 말하며 소프트웨어 소스 코드의 빌드, 테스트 및 배포의 일련의 작업을 자동화하는 것을 말합니다. CI/CD는 DevOps나 GitOps 방법론에 따라 소스코드의 빌드, 테스트, 배포를 자동화하여 빠르고 효율적인 개발이 가능합니다. 이 문서는 CI/CD를 적용하여 개발효율을 높일 수 있는 다양한 툴의 특징에 대해 정리해 보겠습니다.

CI/CD 특징

CI/CD (Continuous Integration / Continuous Delivery)는 아래 그림과 같이 개발된 소스코드의 Build, Test 자동화, Release 및 Deploy의 일련의 과정을 자동화하는 것을 말합니다.

지속적통합 및 지속적배포 절차
CI/CD 절차

CD/CD 방식의 적용을 통해 별도의 추가 인력 없이 개발 리소스를 효율적으로 활용하고 빠르게 릴리즈할 수 있습니다. 이는 기존의 개발방식과 비교하면 다음과 같은 특징을 가집니다.

  • 코드의 commit과 리뷰를 자동화하여 개발단계에서 결함을 줄일 수 있다.
  • 각 모듈별로 주기적 빌드와 자동화된 테스트로 소프트웨어를 안정화할 수 있다.
  • 완성된 소프트웨어를 적시에 배포하여 시장품질을 높일 수 있다.

CI/CD 툴 종류

형상관리 툴

최근에는 Git이 80% 이상의 높은 점유율로 가장 인기가 많습니다. 이런 형상관리 툴을 이용하면 소스코드의 이력 관리, Merge, Branch 관리가 용이합니다. 또한 소스코드 커밋시 개발자 Review를 진행하도록 프로세스를 설정하는 것도 가능합니다. 

많이 사용하는 github의 경우 개인은 무료이며 소규모 팀 단위는 1년에 유저당 $44 그리고 기업용 Github Enterprise 버전은 1년에 $231과 같은 패키지 요금제로 사용할 수 있습니다.  패키지별 feature 비교는 다음 링크를 참고하시기 바랍니다.

기업용 Enterprise 버전의 경우 클라우드가 아닌 사내 서버에서 구축하는 것도 가능하므로, 관리나 보안상 필요한 경우 자체 설치하여 운영할 수도 있습니다.

젠킨스 (Jenkins)

프로젝의 Build, Test 수행 및 배포를 자동화할 수 있는 무료 오픈소스 소프트웨어로 긴 역사만큼 사용 커뮤니티도 활성화되어있습니다. 참고로 젠킨스는 초기 구성에 러닝커브가 있으므로 소규모 개발이라면 오히려 비효율적일 수도 있습니다. 가령, 별도의 서버가 필요하며 별도의 관리 인력도 필요할 수 있으므로 도입 시 참고 바랍니다.

AWS CodeBuild

AWS에서 제공하는 클라우드 기반의 자동 빌드 서비스입니다. 소스코드의 컴파일, 단위테스트 및 배포까지 자동화 기능은 유사합니다. 아마존의 다양한 클라우드 서비스나 github와 연동할 수 있으며 여러 성공, 실패 이벤트를 실시간 알림으로 받을 수 있는 특징이 있습니다.

Azure DevOps

마이크로소프트에서 제공하는 CI/CD서비스 입니다. 도커나 슬랙과 같은 협업도구와 통합하기 쉬우며 역시 Github를 지원하여 사용하기 편리합니다. 테스트 기간 동안 무료로 사용해볼 수도 있으니 참고 바랍니다.

아틀라시안 뱀부(Bamboo)

Atlassian에서 제공하는 상용 솔루션으로 Git, JIRA, Jenkins 와 같은 개발도구와 쉽게 연동할 수 있습니다. JIRA는 개발 요구사항이나 이슈를 웹에 등록하여 추적할 수 있는 도구로 뱀부 툴과 결합하여 사용할 수 있습니다.

아르고 CD(Argo CD)

아르고 CD는 쿠버네티스 클러스터의 배포 도구입니다. Argo CD는 Git과 쿠버네티스를 동기화 해주는 에이전트와 같은 역할을 수행합니다. 이는 GitOps라는 컨셉으로 개발되는 Git 기반의 변경점을 쿠버네티스에 배포하는 경우 유용한 툴입니다.

트래비스 CI

젠킨스와 유사한 기능을 가지는 상용 CI 툴입니다. 젠킨스가 초기 구축에 시간과 리소스가 드는 단점을 보완하여 빠른 시간에 셋업하여 사용할 수 있다는 장점이 있습니다. 단, Public Repository의 경우는 무료로 사용이 가능하므로 개인이나 관심이 있는 분들은 설치해보시는 것도 좋겠습니다.


이상을 지속적 통합, 배포 개발방식의 특징과 유, 무료로 사용할 수 있는 툴의 종류별 특징에 대해서 알아보았습니다.

Leave a Comment