CI / CD Tool 비교

modolee
Day34 Inc.
Published in
6 min readNov 21, 2019

글의 목표

Docker 기반의 서비스를 AWS ECS에 배포할 수 있는 CI/CD 툴을 찾는 것을 목표로 한다.

필수 사항은 다음과 같다.

  • Cloud 기반
  • Github과의 연동 가능
  • DockerHub에 컨테이너 이미지 업로드 가능
  • AWS ECS에 배포 가능
  • 무료 또는 저렴한 가격

기본 개념

CI/CD 란?

CI/CD는 애플리케이션 개발 단계를 자동화하여 애플리케이션을 보다 짧은 주기로 고객에게 제공하는 방법이다.

CI(Continuous Integration) : 지속적인 통합

  • 추가/변경 된 코드를 자동으로 빌드 한 후 테스트
  • 테스트에 통과한 경우에만 공유 리포지토리에 병합
  • 여러 명의 개발자가 동시에 코드 작업을 할 때 서로 충돌할 수 있는 문제를 해결

CD(Continuous Delivery or Deployment) : 지속적인 제공 또는 배포

  • 지속적인 제공
    - 개발자들이 적용한 변경 사항이 CI 과정을 거쳐 리포지토리에 자동으로 업로드 되는 것
    - 운영팀은 이 리포지토리에서 애플리케이션을 실 서버 환경으로 배포할 수 있음
  • 지속적인 배포
    - 개발자의 변경 사항을 리포지토리에서 고객이 사용 가능한 프로덕션 환경까지 자동으로 배포하는 것

CI/CD Tool 비교

  • 비교 항목
    -
    구동 환경 : Cloud를 제공해야 됨
    - 배포 가능한 AWS 내의 서비스 : AWS ECS를 지원해야 됨
    - 가격 : 프라이빗 저장소 가격. 저렴 하면 땡큐, 무료 이면 더 감사
    - Github, DockerHub은 기본적으로 모두 제공하고 있어서 별도로 비교 하지 않음

Travis CI

  • 구동 환경 : Cloud
  • 배포 가능한 AWS 내의 서비스 : ECS 지원 안함
    - CodeDeploy
    - Elastic Beanstalk
    - Lambda
    - OpsWorks
    - S3
  • 가격
    * 무료 : Open Source 프로젝트 만
    *유료
    - 69 USD / month : 한 번에 한 개의 job만 수행 가능

CircleCI

  • 구동 환경 : Cloud, On-premise
  • 배포 가능한 AWS 내의 서비스 : ECS 지원 함
    -
    S3
    - CodeDeploy
    - ECS
    - EKS
  • 가격
    * 무료
    - 한 번에 한 개의 job만 수행 가능
    - 주당 2,500 무료 크레딧 제공. 한 달에 10,000 크레딧 정도
    * 유료 : 최소 30 USD / month
    - 사용자 수 : 처음 3명까지는 15 USD, 이후에는 1명 당 15 USD
    - 크레딧 : 25,000 크레딧 당 15 USD
  • 크레딧
    - 기본 2 vCPU, 4GB 메모리 머신을 기준으로 1분 당 10 크레딧 사용
    - 무료 플랜으로 주당 받는 2,500 크레딧으로 한 달에 빌드 시간 1,000분을 사용할 수 있음
    - 유료 플랜으로 25,000 크레딧을 구매할 경우 빌드 시간 2,500분을 사용할 수 있음

Buddy

  • 구동 환경 : Cloud, On-premise
  • 배포 가능한 AWS 내의 서비스 : ECS 지원 안함
    - CodeDeploy
    - EC2
    - Elastic Beanstalk
    - Lambda
    - S3
  • 가격
    * 무료
    - 5개 프로젝트
    - 500 MB 캐시 저장 공간
    - 2 vCPU, 1 GB 메모리 머신
    - 한 달에 120분 사용 가능
    * 유료 : 최소 75 USD / month
    - 20개 프로젝트
    - 10 GB 캐시 저장 공간
    - 2 vCPU, 3 GB 머신
    - 동시에 1개의 작업만 가능

Codeship

  • 구동 환경 : Cloud
  • 배포 가능한 AWS 내의 서비스
    : ECS 지원 함 (Codeship Pro를 이용할 경우에만)
    - S3
    - Elastic Beanstalk
    - ECS
    - EKS
    - CodeDeploy
  • 가격
    * 무료
    - 100 build / month
    - 동시에 1개의 build 가능
    - 프로젝트, 사용자 수 제한 없음
    * 유료 Basic : 최소 49 USD / month
    - 무제한 build
    - 동시에 1개의 build 가능, 2개의 테스트 파이프라인
    * 유료 Pro : 최소 75 USD / month
    - 무제한 build
    - 1–3 개의 병렬 테스트
    - 2 vCPU, 3.75 GB 메모리 머신

Codefresh

  • 구동 환경 : Cloud, On-premise
  • 배포 가능한 AWS 내의 서비스 : ECS 지원 함
    -
    ECS
    - Elastic Beanstalk
  • 가격 — 무료 정책이 애매함
    * 무료 : 홈페이지에서 직접 가입
    - 무제한 build
    - 무제한 프라이빗 저장소
    - 가상 머신 1대 (2000? CPU, 1 GB 메모리)
    - 3명까지
    - 1개월 데이터 보관
    * 무료 : Github 플러그인으로 가입
    - 120 builds / month
    - 2명까지
    - 동시에 1개의 build 가능
    * 유료 : 34 USD / month
    - 10명까지
    - 쿠버네티스 대시보드
    - 실시간 파이프라인 디버깅
    - 6개월 데이터 보관

Skycap

  • 구동 환경 : Cloud
  • 배포 가능한 AWS 내의 서비스 : ECS 지원 안함
    - EC2 Classic

AppVeyor

  • 구동 환경 : Cloud, On-premise
  • 배포 가능한 AWS 내의 서비스 : ECS 지원 안함
    - S3
    - Elastic Beanstalk

Percy

  • 우리가 찾고자 하는 CI/CD 툴이 아니라 UI 변경 사항을 체크해 주는 CI 툴
  • 설정에 따라 자동으로 해상도에 따른 화면의 스크린샷을 생성하고 변경 된 부분을 알려 줌
  • 향후에 사용하면 좋을 것 같아서 우선 기록

결론

  • 비교 항목 3가지를 모두 충족하는 CI/CD 툴은 3가지다.
    - CircleCI
    - Codeship
    - Codefresh
  • 사실 처음부터 CircleCI를 염두에 두고 비교를 시작했다. 비교 결과 역시 모든 항목을 충족 시키면서 명확하고(Codefresh는 가격 정책이 애매함) 저렴한 가격(Codeship은 무조건 유료를 사용해야 ECS에 배포 가능) 그리고 많은 레퍼런스를 가지고 있는 CircleCI로 결정할 수 밖에 없었다.

--

--