CI/CD

유병수·2023년 4월 19일
0

CICD란?

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

CI/CD의 기본 개념은 지속적인 통합, 지속적인 서베스 제공, 지속적인 배포이다.
CI/CD는 새로운 코드 통합으로 인해 개발 및 운영팀에 발생하는 문제를 해결하기 위한 해결책.

특히 CI/CD는 애플리케이션의 통합 및 테스트 단계에서부터 제공 및 배포에 이르는 애플리케이션의 라이프사이클 전체에 걸쳐 지속적인 자동화와 지속적인 모니터링을 제공한다.

CI

CI는 개발자를 위한 자동화 프로세스인 지속적인 통합을 의미한다. 지속적인 통합이 제대로 구현되면 애플리케이션 코드의 새로운 변경 사항이 정기적으로 빌드 및 테스트를 거쳐 공유 리포지토리에 병합된다. 따라서 여러명의 개발자가 동시에 애플리케이션 개발과 관련된 코드로 작업을 할 경우 서로 충돌하는 문제를 해결할 수 있다.
코드 변경사항을 주기적으로 빈번하게 머지해야한다. 최대한 작은단위로 개발하고 통합해 나가는 것이 중요하다. 통합을 위한 단계(빌드, 테스트, 머지)의 자동화를 구축해야한다.

장점

  • 주기적으로 머지하기때문에 머지충돌을 피할수 있다. 따라서 생산성이 향상
  • 자동으로 빌드와 테스트가 실행되기 때문에 코드의 결함이나 문제점이 빠르게 발견.빠르게 수정가능
  • 위 두가지를 통해서 코드의 퀄리티 향상 가능

CD

CD는 지속적인 서비스 제공 및 또는 지속적인 배포를 의미한다. 지속적인 제공이란 개발자들이 애플리케이션에 적용한 변경 사항이 버그 테스트를 거쳐 리포지토리에 자동으로 업로드되는 것을 뜨하며, 운영팀은 이 리포지토리에서 애플리케이션을 실시간 프로덕션 환경으로 배포할 수 있다.

지속적인 제공이란 개발자들이 애플리케이션에 적용한 변경 사항이 버그 테스트를 거쳐 리포지토리(예: GitHub 또는 컨테이너 레지스트리)에 자동으로 업로드되는 것을 뜻하며, 운영팀은 이 리포지토리에서 애플리케이션을 실시간 프로덕션 환경으로 배포할 수 있습니다. 이는 개발팀과 비즈니스팀 간의 가시성 및 커뮤니케이션 부족 문제를 해결해 줍니다. 그러므로 지속적인 서비스 제공은 최소한의 노력으로 새로운 코드를 배포하는 것을 목표로 합니다.

지속적인 배포(또 다른 의미의 "CD": Continuous Deployment)란 개발자의 변경 사항을 리포지토리에서 고객이 사용 가능한 프로덕션 환경까지 자동으로 릴리스하는 것을 의미합니다. 이는 애플리케이션 제공 속도를 저해하는 수동 프로세스로 인한 운영팀의 프로세스 과부하 문제를 해결합니다. 지속적인 배포는 파이프라인의 다음 단계를 자동화함으로써 지속적인 서비스 제공의 장점을 활용합니다.

장점

  • 개발자가 배포보다 개발에 집중 할 수있다.
  • 개발자가 빌드 테스트 배포까지 자동화 할 수 있다.

CI/CD 종류

  • Jenkins
  • BuildKite
  • Bitbucket Pipelines
  • Github Actions
  • etc

참고
https://www.redhat.com/ko/topics/devops/what-is-ci-cd
https://www.youtube.com/watch?v=0Emq5FypiMM&list=WL&index=8

0개의 댓글