CI/CD가 무엇일까?

kshired·2021년 9월 6일
1
post-thumbnail

Introduction

CI/CD는 애플리케이션의 배포 및 통합을 자동화하는 방법입니다.

옛날에는, CI/CD라는 개념이 존재하지않았고 그로인해 새로운 코드 통합으로 인해 개발 및 운영팀에 발생하는 문제인 Integration Hell이라는 문제가 발생했었습니다.

이것을 해결하기 위해 CI/CD라는 방법이 나왔고, 이 포스트에서는 이것을 하나씩 알아보겠습니다.

CI

CI는 Continuous Integration ( 지속적 통합 )을 뜻합니다.

CI는 말그대로, 코드의 통합을 지속적으로 자동화하여 진행하고 이를 통해 코드가 충돌할 수 있는 문제를 해결해줄 수 있습니다.

CI는 단순히 코드의 변경사항을 통합하는 것만을 의미하지 않습니다.

테스트를 자동화하고, 빌드하며 레포지토리에 통합하는 것까지 의미합니다.

이를 통해 자동으로 코드가 통합되며, 수동으로 통합되는 상황을 제거하여 개발자들이 개발에만 집중할 수 있게 해준다는 장점이 있습니다.

CD

CD는 Continous Deployment ( 지속적 배포 ) 혹은 Continous Delivery ( 지속적 제공 ) 을 의미합니다.

Continous Delivery

Continous Delivery ( 지속적 제공 )은 유효한 코드를 레포지토리에 자동으로 릴리즈하는 과정을 의미합니다.

CI를 통해 통합된 코드를 레포지토리까지 릴리즈하는 과정이라고 생각하면 됩니다.

Continous Deployment

Continous Deployment ( 지속적 배포 )는 유효한 코드를 레포지토레에 자동으로 릴리즈하고, 프로덕션 환경에까지 릴리즈하는 과정을 의미합니다.

즉 Continous Delivery는 레포지토리에 릴리즈하고 수동으로 프로덕션에 배포를 진행하며,

Continous Deployment는 프로덕션에 배포까지 자동화하는 개념이라고 생각하면 됩니다.

CI/CD Tools

현재, CI/CD를 지원하기 위한 많은 툴들이 있습니다.

이러한 툴 중 유명한 세가지의 툴들을 한 번 살펴보겠습니다.

Jenkins


Java 기반의 오픈소스입니다.
현존하는 CI 툴 중 가장 오래되었으며, 다양한 플러그인들이 존재합니다.

장점

  • 무료입니다.
  • 많은 사용자가 있어, 쉽게 레퍼런스를 찾을 수 있습니다.
  • 호스팅을 제공하지 않기 때문에, 직접 호스팅을 통해 관리를 할 수 있습니다.

단점

  • 호스팅을 제공하지 않기 때문에, 호스팅을 위한 서버 관리 비용이 듭니다.

CircleCI

2016년에 개발되었으며, 여러 git 저장소를 지원합니다.

장점

  • 하루마다 사용가능한 Credit을 제공하며, Credit내에서는 Private, Public 상관없이 무료입니다.
  • Virtual Machine을 통한 호스팅을 제공하여 Build Server의 구축이 필요없습니다.

단점

  • Build를 한 번에 한개씩밖에 진행하지 못합니다.

TravisCI

Github에서 얼마전에 인수하여 Github와 쉬운 연동이 가능한 CI 툴입니다.

장점

  • Public Repository는 무료입니다.
  • 다양한 레퍼런스가 존재합니다.
  • Virtual Machine을 통한 호스팅을 제공하여 Build Server의 구축이 필요없습니다.

단점

  • Private Repository는 유료이며 비쌉니다.
  • Jenkins에 비해 여러 플러그인이 부족합니다.

References

profile
글 쓰는 개발자

0개의 댓글