🔙뒤로가기
CI/CD의 개념
CI/CD는 소프트웨어 개발의 주요 프로세스이다.
- CI : 지속적 통합(Continuous Integration)
- 개발자가 자신의 변경사항을 중앙 저장소에 지속적으로 병합하는 것을 가리킨다.
- 이 프로세스를 통해 코드 충돌을 빠르게 발견하고 해결할 수 있으며, 이는 효과적인 협업을 가능하게 한다.
- 지속적 통합 시스템은 항상 코드 품질을 점검하며, 문제가 발견될 경우 알려준다.
- CD : 지속적 배포(Continuous Delivery 혹은 Continuous Deployment)
- Continuous Delivery: 이는 개발된 소프트웨어를 사용자들에게 안전하고 신속하게 배포할 수 있도록 보장하는 것이다.
- 코드 변경사항이 빌드, 테스트, 그리고 스테이징 단계를 통과하면 프로덕션 환경으로 배포될 준비가 된 것이다.
- 수동적으로 관리될 수 있으며, 실제로 프로덕션 배포를 위한 승인 과정이 필요할 수 있다.
- Continuous Deployment: 이는 Continuous Delivery의 다음 단계로, 변경사항이 자동적으로 프로덕션 환경으로 배포되는 것이다.
- 이 과정은 완전히 자동화되어 있으며, 수동 승인 과정이 없다.
- 빠른 피드백 사이클을 제공하며, 더욱 빠른 제품 개선을 가능하게 한다.
- 이 프로세스는 개발자들이 효율적으로, 신뢰성 있게, 그리고 빠르게 소프트웨어를 개발하고 배포할 수 있게 돕는다.
도커를 이용한 CI/CD 파이프라인 구축
도커와 CI/CD는 자연스럽게 어우러진다. 도커는 애플리케이션과 그에 필요한 모든 의존성을 하나의 패키지(이미지)로 묶음으로써 애플리케이션의 환경을 표준화하고 일관성을 유지한다. 이는 CI/CD 파이프라인에서 각 단계가 동일한 환경에서 실행되도록 보장하는데 중요한 요소이다.
파이프라인 구축 과정
- 통합 및 테스트: 애플리케이션의 코드 변경사항이 저장소에 푸시되면 CI 서버가 이를 감지한다. CI 서버는 그런 다음 도커 이미지를 빌드하고, 이 이미지를 기반으로 컨테이너를 실행하여 애플리케이션의 빌드 및 테스트를 수행한다.
- 이미지 저장소에 푸시: 테스트가 성공적으로 완료되면 CI 서버는 빌드된 도커 이미지를 이미지 저장소(Docker registry)에 푸시한다. 이 이미지 저장소는 Docker Hub일 수 있으며, 또는 사설 Docker registry일 수 있다.
- 배포: CI/CD 파이프라인의 마지막 단계는 배포다. 이 과정에서는 배포 도구(예: Kubernetes, Ansible 등)가 미리 정의된 타겟 서버에 도커 이미지를 배포한다. 이는 신규 컨테이너를 시작하거나, 기존 컨테이너를 업데이트하는 형태가 될 수 있다.
도커와 CI/CD를 통합하면 개발, 테스트, 배포 환경이 표준화되고, 이로 인해 애플리케이션 배포 프로세스의 안정성과 효율성이 향상된다.