일단 진행시켜

CI와 CD는 왜 분리되어야 하는 가? 본문

🗞️ 보안 동향 파악 및 나의 생각 정리

CI와 CD는 왜 분리되어야 하는 가?

2024. 9. 3. 09:35

1. Why CI and CD Need to Go Their Separate Ways

https://thenewstack.io/why-ci-and-cd-need-to-go-their-separate-ways/

 

Why CI and CD Need to Go Their Separate Ways

Explore how continuous promotion addresses the limitations of traditional CI/CD pipelines.

thenewstack.io

Featured image by Tormius on Unsplash.

 

 

[ 요약 ]

1. CI / CD의 진화

  • CI/CD는 소프트웨어 개발에 필수적이며, 애플리케이션 배포 속도와 안정성을 위해 설계되었다.
  • 초기에는 코드 빌드 → 테스트 → 배포의 순서로 작동했다. 따라서, 배포 환경이 비교적 정적인 기존 가상 머신이나 물리적 서버에서 잘 작동했다.
  • 그러나 컨테이너(ex. 도커), 쿠버네티스의 등장으로 변화가 생겼다. 쿠버네티스는 동적이고 비동기적인 배포 메커니즘을 제공하여 기존 CI/CD 프로세스의 동기적 특성과 충돌을 일으키게 되었다.
  • 전통적인 CI/CD 방식이 쿠버네티스의 유연한 배포 환경과 잘 맞지 않게 되었다. 이러한 불일치를 해결하기 위해 GitOps가 도입되었지만, 다양한 환경에서의 배포 관리가 비효율적이고 복잡하여 또 다른 방안을 찾는 것이 필요했다.

2. 쿠버네티스와 GitOps의 도입 이후

  • 쿠버네티스와 기존 CI/CD 프로세스의 동기적/비동기적 특성의 충돌로 인한 단절이 가장 큰 문제다.
  • GitOps는 최종 배포 상태에만 집중하므로, 복잡한 다중 환경 *오케스트레이션(여러 IT 자동화 태스크 또는 프로세스를 조정하여 실행하는 것)을 처리할 수 없다. 

 

3. 그래서 어떻게? ➡️ Continuous Promotion

  • CI와 CD 사이의 간극을 메우기 위해 고안된 개념
  • 특히 쿠버네티스와 GitOps와 같은 최신 기술을 사용하는 경우 전통적인 CI/CD 파이프라인의 한계를 해결한다
  • 사전에 정의된 규칙과 조건에 따라 아티팩트를 프로모션 하는 중가 단계를 추가한다
  • 더 세밀한 배포 프로세스 제어, CI와 CD 역할 분리 전체 프로세스의 신뢰성과 효율성을 높임
  • ex. Kargo

 

 

결론

CI와 CD가 분리되어야 하는 이유는 아래와 같다.

CI는 코드 변경을 자주 통합하여 문제를 빨리 발견하는 데 중점을 두는 반면에, CD는 코드 변경을 프로덕션에 배포하는 과정에 중점을 둔다.

이 둘의 요구사항과 복잡성은 점점 달라지고 있고, 각각의 기능을 최적화하기 위해 CI와 CD를 분리할 필요성이 커지고 있음을 강조한다.

 

 

CI(Continuous Integration) & CD(Continuous Delivery)?

  • 지속적인 통합과 지속적인 전달
  • 코드 변경 사항을 자동으로 테스트하고 배포하여 개발 속도를 높이고 품질을 유지하는 프로세스

컨테이너: 애플리케이션과 그 종속성을 격리해 일관된 환경에서 실행할 수 있도록 함쿠버네티스: 컨테이너화된 애플리케이션을 자동으로 배포, 확장, 관리하는 플랫폼으로 복잡한 인프라를 효율적으로 운영할 수 있게 도와줌

 

 

 


 

🤔 이에 대한 나의 생각

기술이 점점 발전하고 있음을 느낀다. 특히 CI/CD와 관련된 새로운 접근 방식, Continuous Promotion과 같은 개념은 현대의 복잡한 배포 환경에서 더 나은 자동화와 효율성에 도움을 준다.

Kargo와 같은 도구를 통해 우리는 더욱 정교하고 신뢰성 있는 배포 프로세스를 구축할 수 있게 되었고, 이는 기술이 계속해서 진화하고 있다는 확실한 증거라고 생각한다.