어플리케이션

CI/CD(Continuous Integration/Continuous Deployment)

forward error correction Circle 2024. 12. 20. 08:29
반응형

Ⅰ. CI/CD(Continuous Integration/Continuous Deployment) 란?

 소프트웨어 개발과 배포 과정을 자동화하고 효율화하는 방법론입니다. 이 방법론은 소프트웨어 개발 주기를 단축하고, 품질을 향상시키며, 배포 과정을 안정적으로 만드는 데 중점을 둡니다. CI/CD는 지속적 통합(Continuous Integration, CI)과 지속적 배포(Continuous Deployment, CD)로 구성되어 있습니다.

ⅰ. 지속적 통합 (Continuous Integration, CI)
지속적 통합(CI)은 개발자들이 코드 변경 사항을 자주, 그리고 정기적으로 중앙 저장소에 통합하는 개발 관행입니다. CI의 주요 목표는 코드 변경 사항을 자주 병합하고, 자동화된 빌드와 테스트를 통해 문제를 조기에 발견하는 것입니다.
ⅱ. 지속적 통합 (Continuous Integration, CI) 주요 요소
 1) 버전 관리 시스템: 모든 코드 변경 사항은 Git, Subversion(SVN) 등의 버전 관리 시스템에 커밋됩니다.
 2) 자동화된 빌드: 코드가 커밋될 때마다 자동으로 빌드가 트리거됩니다. 이는 코드가 컴파일되고, 필요한 종속성이 해결되며, 애플리케이션이 패키징되는 과정을 포함합니다.
 3) 자동화된 테스트: 빌드 과정에서 자동화된 테스트가 실행됩니다. 이는 단위 테스트(Unit Test), 통합 테스트(Integration Test), 기능 테스트(Functional Test) 등을 포함할 수 있습니다.
 4) 피드백 루프: 빌드와 테스트 결과는 개발자에게 즉시 피드백으로 제공됩니다. 이를 통해 문제를 조기에 발견하고 수정할 수 있습니다.
ⅲ. 지속적 통합 (Continuous Integration, CI)  도구
 1) Jenkins
 2) Travis CI
 3) CircleCI
 4) GitLab CI/CD
 5) Bamboo
 6) TeamCity
ⅳ. 지속적 배포 (Continuous Deployment, CD)
 지속적 배포(CD)는 CI의 확장으로, 코드 변경 사항이 자동으로 배포 파이프라인을 통해 프로덕션 환경에 배포되는 과정을 의미합니다. CD의 주요 목표는 코드 변경 사항이 안정적으로 그리고 신속하게 사용자에게 전달되도록 하는 것입니다.
ⅴ. 지속적 배포 (Continuous Deployment, CD) 주요 요소
 1) 자동화된 배포 파이프라인: 빌드가 성공적으로 완료되면, 자동화된 배포 파이프라인이 트리거됩니다. 이는 여러 단계의 테스트와 검증을 포함할 수 있습니다.
 2) 자동화된 테스트: 배포 파이프라인에서 추가적인 자동화된 테스트가 실행됩니다. 이는 성능 테스트, 보안 테스트, 사용자 수용 테스트(UAT) 등을 포함할 수 있습니다.
 3) 배포 전략: 다양한 배포 전략을 사용하여 코드 변경 사항을 프로덕션 환경에 배포합니다. 예를 들어, 블루-그린 배포(Blue-Green Deployment), 카나리 배포(Canary Deployment), 롤링 배포(Rolling Deployment) 등이 있습니다.
 4) 모니터링 및 피드백: 배포 후 애플리케이션의 성능과 안정성을 모니터링하고, 피드백을 수집하여 문제를 신속하게 해결합니다.
 ⅵ. 지속적 배포 (Continuous Deployment, CD)  도구
  1) Jenkins
  2)  GitLab CI/CD
  3)  Spinnaker
  4)  Argo CD
  5)  Octopus Deploy
  6)  AWS CodePipeline

Ⅱ. CI/CD(Continuous Integration/Continuous Deployment) 이점

 ⅰ. 빠른 피드백: 코드 변경 사항에 대한 피드백을 신속하게 제공하여 문제를 조기에 발견하고 수정할 수 있습니다.
 ⅱ. 높은 품질: 자동화된 테스트와 검증을 통해 코드 품질을 유지하고, 버그를 줄일 수 있습니다.
 ⅲ. 신속한 배포: 코드 변경 사항이 자동으로 배포 파이프라인을 통해 프로덕션 환경에 배포되어, 새로운 기능과 수정 사항을 빠르게 사용자에게 전달할 수 있습니다.
 ⅳ. 안정성: 자동화된 배포와 모니터링을 통해 배포 과정의 안정성을 높이고, 문제 발생 시 신속하게 대응할 수 있습니다.
 ⅴ. 효율성: 수동 작업을 자동화하여 개발 팀의 효율성을 높이고, 반복적인 작업에서 벗어나 더 중요한 작업에 집중할 수 있습니다.

Ⅲ. CI/CD(Continuous Integration/Continuous Deployment) 파이프라인 예시

 ⅰ. 코드 커밋: 개발자가 코드 변경 사항을 버전 관리 시스템에 커밋합니다.
 ⅱ. 빌드 트리거: 코드 커밋 시 자동으로 빌드가 트리거됩니다.
 ⅲ. 자동화된 빌드: 코드가 컴파일되고, 필요한 종속성이 해결되며, 애플리케이션이 패키징됩니다.
 ⅳ. 자동화된 테스트: 단위 테스트, 통합 테스트, 기능 테스트 등이 실행됩니다.
 ⅴ. 배포 트리거: 빌드와 테스트가 성공적으로 완료되면, 자동으로 배포 파이프라인이 트리거됩니다.
 ⅵ. 자동화된 배포: 애플리케이션이 스테이징 환경에 배포되고, 추가적인 테스트와 검증이 수행됩니다.
 ⅶ. 프로덕션 배포: 모든 테스트와 검증이 완료되면, 애플리케이션이 프로덕션 환경에 배포됩니다.
 ⅷ. 모니터링 및 피드백: 배포 후 애플리케이션의 성능과 안정성을 모니터링하고, 피드백을 수집하여 문제를 신속하게 해결합니다

반응형