muyeon 2023. 7. 16. 16:11

CI/CD 란?

 

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

 

기본적인 개념은 지속적인 통합, 지속적인 서비스 제공, 지속적인 배포이다.

 

새로운 코드 통합으로 개발 및 운영팀에서 발생하는 문제를 해결하기 위한 솔루션이다.

 

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


 

CI/CD 가 나오게된 이유

 

매번 개발자가 코드를 수정하고, 빌드와 테스트를 하고 배포까지 한다면 상당히 많은 시간이 소요된다.

Git 에 코드를 올리면 누군가 빌드와 테스트, 배포까지 해준다면 쓸데없는 시간을 단축시키고 개발에 더 많은 시간을 투자할 수 있다.

 


CI

 

Continuous Integration 이란 개발자를 위한 자동화 프로세스인 지속적인 통합을 의미 한다.

 

빌드 / 테스트 자동화 과정이다.

 

CI 가 제대로 구현되면 애플리케이션 코드의 새로운 변경 사항이 정기적으로 빌드 및 테스트를 거쳐 공유 repository 에 병합한다.

 

따라서 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌하는 문제를 이 방법으로 해결할 수 있다.

 

 

CD

 

CD 는 지속적인 서비스 제공 , 지속적인 배포 이다.

Continuous Delivery

Continuous Deployment

 

배포 자동화 과정이다.

 

두 용어는 상호 교환적으로 사용된다. 

모두 파이프라인의 추가 단계에 대한 자동화를 뜻하지만 때로는 얼마나 많은 자동화가 이루어지고 있는 지를 설명하기 위해 별도로 사용된다.

 


왜 사용하는가?

 

  • 적용 전
  1. 개발자들이 개발하여 코드를 수정합니다.
  2. 각자의 feature 브랜치에 코드를 push합니다. (but, 어느 한 부분에서 에러가 났지만 개발자들은 눈치채지 못합니다.)
  3. 각자의 코드를 git에 올리고 통합(Intergration)합니다.
  4. 에러가 발생했지만 어느 부분에서 에러가 났는지 모르므로 다시 어디부분에 에러가 있는지 디버깅하고 코드를 수정합니다.
  5. (1) ~ (4)의 과정을 반복합니다.
  6. 많은 시간을 할애하여 에러가 해결되었으면 배포를 시작합니다. 하지만 배포과정 또한, 개발자가 직접 배포과정을 거치므로 많은 시간을 소요합니다.

코드 양이 많아질수록 에러 추적도 힘들고, 어마어마한 디버깅 과정이 마주칠 것이다.

  • 적용 후
  1. 개발자들이 개발하여 feature브랜치에 코드를 push합니다.
  2. git push를 통해 Trigger되어 CI서버에서 알아서 Build, Test, Lint를 실행하고 결과를 전송합니다.
  3. 개발자들은 결과를 전송받고 에러가 난 부분이 있다면 에러부분을 수정하고 코드를 master 브랜치에 merge합니다.
  4. master 브랜치에 코드를 merge하고 Build, Test가 정상적으로 수행이 되었다면 CI서버에서 알아서 Deploy 과정을 수행합니다.

→ 즉, 개발에만 시간을 소요 할 수 있다는 장점이 존재한다.

CI/CD를 처음 구축할 때는 많은 인프라가 소요되지만, 한번 제대로 구축한다면, 많은 시간과 비용을 아낄 수 있다. 

 

 


참조 :

형주님 그리고

https://inpa.tistory.com/460#ci_/_cd_%EC%9E%A5%EC%A0%90

 

👩‍💻 CI / CD / 파이프라인 이란?

CI/CD CI (Continuous Integration) CI/CD의 "CI"는 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration)을 의미한다. CI를 성공적으로 구현할 경우 애플리케이션에 대한 새로운 코드 변경 사항

inpa.tistory.com

https://seosh817.tistory.com/104

 

[CI/CD] CI/CD란? - 지속적 통합(Continuous Integration)/지속적 배포(Continuous Deployment) 기본개념

매번 개발자가 코드를 수정하고 빌드와 테스트를 하고 배포까지 한다면 상당히 많은 시간이 소요됩니다. 하지만 git에 코드를 올리는 것만으로도 누군가가 빌드와 테스트, 배포까지 해준다면,

seosh817.tistory.com