[cicd] CI/CD란? 개념 이해하기
본문 바로가기
겅부합시다

[cicd] CI/CD란? 개념 이해하기

by 쏠수있어ㅤ 2022. 4. 7.
반응형

 

 

CI/CD란 ? 

- Continuous Integration / Continuous Delivery (or Deployment) 의 약자

즉, cicd란 지속적인 통합, 지속적인 서비스 제공하는 방법이다. 

 

우리가 일상생활에서 자주 쓰는 어플리케이션, 어플은 눈에 잘 띄지는 않지만 계속해서 업그레이드가 되고 있다. 해당 어플리케이션을 운영하는 회사의 입장에서 보자면, 한번 출시한 어플을 UI든 알고리즘이든 기능 추가든 그대로 몇 년간 두게되면 트렌드를 따라가지 못하고 점차 쇠퇴되기 마련이기 때문에 계속해서 사용자들의 피드백을 경청하고 새롭고 더욱 편리한 서비스를 끊임없이 기획하고, 개발하고, QA를 통과하면 업그레이드된 새로운 버전을 배포한다. 

 

이 때 새로운 기능 추가 등으로 개발 및 운영팀에 발생하는 문제가 "integration hell" 인테그레이션 헬 (통합 지옥) 이다. 아무래도 기존의 것과 새로운 것을 다시 통합하고 아무 버그없이 어플리케이션을 완성해 내야 하기 때문이다. ci/cd는 어플리케이션의 통합 및 테스트 단계에서부터 제공 / 배포에 이르는 하나의 어플의 라이프사이클 전체에 걸쳐 지속적인 자동화와 모니터링을 제공한다.

 

즉, 어플리케이션의 지속적인 버전업과 유지/보수를 위한 총체적인 프로세스를 현명하게 돕는 방법이다. 

 

 

 

"CI" 란?

개발자를 위한 자동화 프로세스인 지속적인 통합을 의미한다. 기존의 코드에 새로운 코드를 성공적으로 통합할 경우 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트된다. 이는 공유 repository 레포지토리에 통합되어 여러 개발자가 동시에 애플리케이션 개발을 문제없이 진행할 수 있도록 한다. 

 

예를 들면 다수의 개발자가 git tool을 이용한다면 각각의 commit이 계속해서 쌓이게 되고 이를 나중에 build/ test/ merge하려면 엄청난 에러가 나올 것이다. (생각만해도 끔찎하다,,,,) 이런 상황에 자동화된 빌드&테스트는 원천 소스코드의 충돌 등을 방어하는 이점을 제공한다.

 

 

 

"CD" 란?

지속적인 서비스 제공 또는 지속적인 배포를 의미한다. 여기서 "D"는 Delivery 또는 Deployment 상호교환적으로 사용된다. 개발을 성공적으로 하더라도 배포하지 않으면 서비스 사용자에게 도달할 수 없다.

 

Continuous Delivery, 지속적인 제공

개발자들이 테스트를 거쳐 적용한 변경 사항이 자동으로 레포지토리에 업로드되는 것을 뜻하며 운영팀이 이 레포지토리에서 애플리케이션을 배포한다. 지속적인 제공은 최소한의 노력으로 새로운 코드를 배포하는 것을 목표로 한다. 

Continuous Deployment, 지속적인 배포

개발자들의 변경 사항을 레포지토리에서 고객이 사용하는 프로덕션 환경까지 "자동으로" 릴리즈하는 것을 의미한다. 지속적인 배포는 파이프라인의 다음 단계를 자동화함으로써 지속적인 제공이 가진 장점을 활용한다. 

 

 

 


 

 

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

https://artist-developer.tistory.com/24

반응형

댓글