CI/CD

소프트웨어 마에스트로 14기 팀 프로젝트에서 나는 백엔드 파트를 담당하여 Spring Boot를 통한 WAS 개발을 하게 되었다. CI/CD라는 용어에 대한 정의를 이해하고자 게시글을 작성하게 되었다.


  CI/CD는 소프트웨어 개발과 배포 과정을 자동화하여 개발자들이 효율적으로 소프트웨어를 개발하고 배포하는 방법을 지칭하는 용어이다. CI(Continuous Integration)와 CD(Continous Deployment)의 합성어로 사용되기도 한다.

  CI/CD는 모던 소프트웨어 개발의 핵심 요소로 자리 잡고 있으며, Agile 개발 방법론과 DevOps 문화와도 깊이 연관되어 있다. 소프트웨어의 지속적인 개발과 배포를 통해 더 빠르고 신뢰성 있는 서비스를 제공할 수 있게 된다.

  아래에서 CI와 CD를 조금 더 자세히 설명하겠다.

CI(Continous Integration)

  지속적 통합을 의미한다. 개발자들이 코드를 작성하고, Git과 같은 버전 관리 시스템에 코드를 푸시할 때 자동화된 빌드, 테스트 및 통합 프로세스를 실행하여 코드를 레포지토리에 지속적으로 통합하는 개발 방법론이다. 여러 개발자들이 동시에 작업하는 경우 코드 충돌과 빌드 충돌을 최소화하고, 빈번한 통합을 통해 버그를 빨리 발견하여 개발 생산성을 높이는 것이 주요 목적이다.

  자동화된 빌드 서버나 서비스가 새로운 코드를 가져와 빌드하고 테스트를 실행한다. 코드가 정상적으로 통합되었는지 확인한 후, 레포지토리에 안정적으로 통합된다.

순서

  1. 개발자가 구현한 코드를 기존 코드와 병합
  2. 병합된 코드가 올바르게 동작하고 빌드되는지 검증
  3. 테스트 결과 문제가 있다면 수정하고 다시 1로 돌아감, 문제가 없을 경우 배포 진행

장점

  • 코드 검증에 필요한 시간 감소
  • 개발 편의성 향상
  • 항상 테스트 코드를 통과한 코드만이 레포지토리에 올라가기 때문에, 좋은 코드 퀄리티를 유지할 수 있음

CD(Continous Deployment)

  지속적 배포를 의미한다. 주로 CI와 함께 배포 프로세스를 추가하는 개념으로 사용되며, CI가 빌드와 테스트를 통과한 코드를 자동으로 실제 환경에 배포하는 것을 의미한다. 주요 목적은 소프트웨어를 빠르게, 안정적으로, 자주 배포하여 최신 기능과 버그 수정을 빠르게 사용자에게 제공하는 데 있다.

  배포 파이프라인을 구축하여 코드가 배포 가능한 상태가 되면 자동으로 배포하며, 롤백 기능을 제공하여 문제가 발생할 경우 이전 버전으로 쉽게 복원할 수 있도록 한다.

장점

  • 개발자가 배포보다는 개발에 더욱 신경을 쓸 수 있음
  • 개발자가 수작업 없이 빌드, 테스트, 배포까지 자동화할 수 있음

CI/CD 흐름

image

  1. CI를 통해 코드 검증
  2. 배포 환경과 유사한 환경에서 검증 진행
  3. 검증된 소프트웨어를 실제 Production 환경에 배포

CI/CD의 이점

  • 더 높은 개발 생산성과 품질 개선
  • 버그를 빠르게 발견하고 수정
  • 빠른 소프트웨어 배포로 사용자에게 최신 기능 제공
  • 인프라 및 배포 작업을 자동화하여 오류 가능성 감소
  • 효율적인 팀 협업과 코드 충돌 해결 용이

Reference