CI/CD 정리

승톨·2021년 8월 14일
0
post-thumbnail

CI/CD

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

  • 지속적인 통합(Continuous Integration)
  • 지속적인 서비스 제공(Delivery)
  • 지속적인 배포(Deployment)

인테그레이션 헬을 해결하기 위해 나온 방법론이라고 한다.

인테그레이션 헬 : 그들 각자의 코드를 프로덕션에서 통합할 때 일어나는 상황을 얘기함. 코드 통합하려면 몇시간씩 걸리고, 당연히 충돌이 나기 때문에 완전해질때까지 고쳐야 한다. 그래서 CI를 통해 짧은 주기로 통합하자는거다.

  • CI/CD는 애플리케이션의 통합 및 테스트 단계에서부터 제공 및 배포에 이르는 애플리케이션의 라이프사이클 전체에 걸쳐 지속적인 자동화와 지속적인 모니터링을 제공한다.
  • 이러한 구축 사례를 일반적으로 "CI/CD 파이프라인"이라 부른다.

CI와 CD 차이

CI

  • CI를 성공적으로 구현할 경우 앱에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 레포지토리(Gitlab 등)에 통합된다.
  • 여러 명의 개발자가 동시에 코드 작업을 할 경우 서로 충돌할 수 있다. 비슷한 부분은 건드릴 수도 있기 때문이다. CI를 통해 주기적으로 빌드하고 테스트하면 이런 문제를 빠르게 해결 할 수 있다.

CD

  • CD는 지속적인 서비스 제공(Continuous Delivery) 또는 지속적인 배포(Continuous Deployment)를 의미한다. 이 두 용어는 상호 교환적으로 사용된다.
  • 두 가지 모두 파이프라인 단계에 대한 자동화를 뜻하지만, 얼마나 많은 자동화가 이루어지고 있는지를 설명하기 위해 별도로 사용될 때도 있다.
  • Continuous Delivery란 개발자들이 앱에 적용한 변경 사항이 테스트를 거쳐 원격 레포지토리에 자동으로 업로드되는 것을 뜻한다.
  • 업로드 이후 운영팀은 이 레포지토리에서 앱을 실시간 프로덕션 환경으로 배포할 수 있다. Continuous Delivery는 최소한의 노력으로 새로운 코드를 배포하는 것을 목표로 한다.
  • Continuous Deployment란 개발자의 변경 사항을 레포지토리에서 프로덕션 환경까지 자동으로 릴리즈하는 것을 의미한다. CD를 통해 운영팀의 수동 배포 프로세스 과부하 문제를 해결할 수 있다.

https://www.redhat.com/cms/managed-files/styles/wysiwyg_full_width/s3/ci-cd-flow-desktop_0.png?itok=QgBYmjA2

따라서 CI/CD는 앱 개발에 지속적인 자동화 및 지속적인 모니터링을 추가하는 것을 의미한다.

참고 : 지속적 통합 vs 전달 vs 배포

profile
소프트웨어 엔지니어링을 연마하고자 합니다.

0개의 댓글