본문 바로가기
기타

[CI/CD] CI/CD란? - 지속적 통합/지속적 배포

by jaee_ 2021. 12. 28.

프로젝트를 진행하며 CI/CD라는 용어대 대해 알아보고 또한 현재 진행중인 프로젝트에 어떻게 적용시키는 게 좋을지에 대해 생각해보는 시간을 가졌습니다. 오늘은 CI/CD에 대한 개념을 알아보도록 하겠습니다. 


CI/CD?

우선 CI/CD는 애플리케이션 개발 단계를 자동화하여 애플리케이션을 짧은 주기로 고객에게 제공하는 방법입니다. CI/CD의 기본 개념은 지속적인 통합, 테스트, 서비스, 배포입니다. CI/CD는 새로운 코드 통합으로 인해 개발 및 운영팀에 발생하는 문제을 해결하기 위한 솔루션입니다.

 

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

 

CI란?

Continuous Integration의 약자로 한마디로 빌드/테스트 자동화 과정을 말합니다. CI는 개발자를 위한 자동화 프로세스인 지속적인 통합을 의미합니다.

 

개발자가 애플리케이션에 적용한 변경 사항이 병합되면 이러한 변경 사항이 애플리케이션을 손상시키지 않도록 자동으로 애플리케이션을 구축하고 테스트(일반적으로 단위 테스트 및 통합 테스트) 실행을 통해 변경 사항이 애플리케이션에 제대로 적용되었는지를 확인합니다. 

 

CI를 성공적으로 구현할 경우 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 리포지토리에 통합되므로 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있습니다. 즉, 여러 개발자가 작성 또는 수정한 코드를 지속적으로 통합하고 테스트하는 것 입니다. 

 

간단히 CI를 적용한 흐름을 나타낸다면 다음과 같습니다. 

  1. 개발자가 구현한 코드를 소스/버전 관리 시스템에 저장합니다. (ex.github) 
  2. 소스코드에 변화가 감지되면 또는 다른 설정을 통해 CI툴을 이용하여 소스코드 변경을 알립니다. 
  3. CI툴에서 변경된 소스코드를 Build, Test, Lint 실행하고 결과를 전송합니다.  
  4. 결과에 문제가 없다면 소스 병합이 됩니다. 결과에 문제가 있다면 소스를 수정한 후 다시 1번으로 돌아갑니다. 

 

CI를 적용함으로써의 장점

다수의 개발자가 동시에 개발을 진행하고 소스를 병합하는 과정은 매우 번거로울 것 입니다. 또한 시간도 많이 잡아먹겠죠. CI를 적용함으로써 소스코드에 변경이 생길때마다 문제가 발생하는지 여부를 알 수 있기 때문에 빠른 검증이 가능합니다. 


CD란?

Continuous Deployment의 약자로 한마디로 자동 배포화 과정입니다. 지속적인 배포, 지속적인 서비스 제공을 의미합니다. 

CI/CD 파이프라인의 마지막 단계이기도 한 CD는 CI를 통해서 성공적으로 통합이 진행되었다면 사용자가 실제로 사용할 수 있도록 사용자 배포환경에 릴리즈하는 것을 말합니다. 즉, 애플리케이션을 프로덕션 환경으로 배포하는 작업을 자동화 하는 것입니다. 

 

 지속적 배포를 채택하면 품질 저하 없이 최대한 빨리 사용자에게 새로운 기능을 제공할 수 있습니다.

 

CD를 적용함으로써의 장점

한 번의 클릭으로 빌드 , 테스트, 배포 자동화까지 구현할 수 있다는 간편하다는 장점이 있습니다. 그러므로 개발자는 개발에만 집중할 수 있습니다. 


CI/CD 지원 툴

  - Jenkins

  - Bamboo(상용)

  - Github action

 


참고

https://www.redhat.com/ko/topics/devops/what-is-ci-cd

https://seosh817.tistory.com/104

댓글