반응형
CI/CD는 Continuous Integration(지속적 통합)과 Continuous Deployment/Delivery(지속적 배포/전달)의 약자로, 소프트웨어 개발 프로세스에서 코드를 더 빠르고 안정적으로 배포하기 위한 방법론과 도구를 나타냅니다.
CI (지속적 통합, Continuous Integration)
CI는 개발자들이 작성한 코드를 정기적으로 중앙 저장소에 통합하고, 이를 자동으로 빌드 및 테스트하는 과정을 의미합니다.
목적은 빠르게 코드를 검증하고 문제를 조기에 발견하여 품질을 유지하는 것입니다.
주요 특징:
- 코드 통합 자동화: 여러 개발자가 작업한 코드를 중앙 저장소에 빈번히 푸시(push).
- 자동 빌드: 푸시된 코드가 자동으로 빌드되며 오류가 있는 경우 바로 알림.
- 자동 테스트: 사전에 작성된 테스트 스크립트를 통해 코드의 기능을 검증.
장점:
- 개발 초기에 문제를 발견할 수 있음.
- 통합 주기가 짧아 코드 충돌을 최소화.
- 개발 속도 및 품질 향상.
CD (지속적 배포/전달, Continuous Deployment/Delivery)
CD는 CI 이후의 프로세스를 가리키며, 코드 변경 사항을 자동으로 배포하거나 전달하는 것을 의미합니다.
두 가지 종류로 나뉩니다:
Continuous Delivery (지속적 전달)
- 코드를 프로덕션 환경에 배포하기 전까지 모든 단계를 자동화.
- 프로덕션 배포는 사람의 승인을 필요로 함.
- 신중한 배포가 필요한 환경(예: 금융, 의료)에서 주로 사용.
Continuous Deployment (지속적 배포)
- 프로덕션 환경에 배포까지 모든 과정을 자동화.
- 모든 코드 변경이 테스트를 통과하면 자동으로 사용자에게 배포.
- 빠르게 피드백을 수집하고 기능을 개선할 수 있음.
장점:
- 배포 시간 단축.
- 고객 피드백을 신속히 반영 가능.
- 반복 가능한 프로세스로 배포 오류 최소화.
CI/CD Pipeline
CI/CD를 구현하기 위해 사용하는 일련의 자동화 프로세스를 CI/CD 파이프라인이라고 합니다.
주요 단계는 다음과 같습니다:
- 코드 통합: 개발자가 코드를 푸시.
- 빌드: 코드를 빌드하여 실행 가능한 상태로 만듦.
- 테스트: 자동화된 테스트 실행.
- 배포: 테스트를 통과한 코드를 프로덕션 또는 스테이징 환경에 배포.
도구 예시
- CI 도구: Jenkins, GitLab CI/CD, CircleCI, Travis CI
- CD 도구: ArgoCD, Spinnaker, Flux, Tekton
- 통합 도구: GitHub Actions, GitLab CI/CD
CI/CD는 개발팀의 효율성을 높이고, 소프트웨어 품질과 릴리즈 속도를 동시에 개선하는 핵심적인 개발 방식입니다.
반응형
'IT > DevOps' 카테고리의 다른 글
[DevOps] Helm Chart 란? (3) | 2024.11.18 |
---|---|
[DevOps] 서비스 메쉬(Service Mesh)와 Istio에 대해 (2) | 2024.11.18 |
[DevOps] Packer로 AWS AMI이미지 만들기 - 심화편1 (Packer 파일 구조화) (3) | 2024.11.10 |
[DevOps] Packer 란? (이미지 빌드 자동화의 필요성) (4) | 2024.11.08 |
[DevOps] CI/CD구성시 고려해야 될 것들 (Application/DB/Infra/Network 관점에서) (1) | 2024.11.07 |