[BE] CI/CD란?

kiteB·2021년 9월 30일
0

BE

목록 보기
1/2
post-thumbnail

CI/CD란?

  • 어플리케이션 개발 단계부터 배포까지의 모든 과정을 자동화를 통해서 조금 더 효율적이고 빠르게 사용자들에게 빈번히 배포할 수 있도록 만드는 것.
  • 새로운 코드 통합으로 인해 개발 및 운영팀에 발생하는 문제인 인테그레이션 헬(integration hell)을 해결하기 위한 솔루션.
  • CI/CD는 애플리케이션의 통합 및 테스트 단계에서부터 제공 및 배포에 이르는 애플리케이션의 라이프사이클 전체에 걸쳐 지속적인 자동화와 지속적인 모니터링을 제공한다. 이러한 구축 사례를 일반적으로 "CI/CD 파이프라인"이라고 부른다.

CI(Continuous Integration, 지속적 통합)

Build & Packaging

  • 개발자를 위한 자동화 프로세스
  • 자동화 전, 구성원들의 코드에 문제가 없는지 확인하는 과정이 필요하다. 이를 위한 것으로,
    애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트하여 공유 레포지토리에 병합되어 관리되는 것을 의미한다.

CI를 하면 좋은 점은?

  • 주기적으로 merge를 하기 때문에 merge 충돌을 피할 수 있어 개발 생산성이 향상된다.
  • merge되는 모든 코드들은 자동으로 빌드되고 테스트되기 때문에 코드의 결함이나 문제점을 빠르게 발견할 수 있다. 또한 버그 수정도 용이하다.

∴ 결론적으로 코드의 퀄리티가 향상된다


CD(Continuous Deployment / Continuous Delivery)

지속적인 서비스 제공(Continuous Delivery) 및/또는 지속적인 배포(Continuous Deployment)를 의미한다. 이 두 용어는 상호 교환적으로 사용.

  • 두 가지 모두 파이프라인의 추가 단계에 대한 자동화를 뜻한다.
  • 자동화 수준에 따라 Continuous Delivery, Continuous Deployment로 구분된다.

1. 지속적 전달/제공 (Continuous Delivery)

  • CI에서 한 단계 더 나아가는 것으로, 실제로 어플리케이션이 배포되기 전까지의 작업을 자동화한다.
  • 빌드 결과물을 지속적으로 전달하지만 실제 배포는 사람이 개입하여 실행해주어야 한다.

2. 지속적 배포 (Continuous Deployment)

  • delivery에서 한 단계 더 나아가는 것으로,
    CI를 통해 신규 작성된 코드의 무결성을 검증하고, 완료되면 배포까지 자동으로 진행한다.
  • 배포까지 사람의 개입 없이 자동으로 진행되며 어플리케이션은 지속적으로 신규 코드가 반영된다.

📌 Continuous Delivery vs Continuous Deployment

Continuous Delivery프로덕션을 수동으로 배포해줘야 하며,
Continuous Deployment프로덕션까지 자동으로 배포해준다!

CD를 하면 좋은 점은?

  • 개발부터 배포까지 과정이 번거롭지 않고 간소화되기 때문에 사용자 피드백을 빠르게 반영할 수 있다.
    • 장애 대응이 빨라진다.
  • 만약, 로드 밸런서로 수십대의 서버를 동시에 운용한다면?
    • 자동화를 하지 않으면 직접 서버에 들어가서 일일이 실행해야 하기 때문에 하루종일 배포를 할 수도 있다.

CI/CD가 무엇을 해결할 수 있는가?

  • 빌드, 테스트 및 배포 단계를 자동화
  • 소프트웨어 릴리스 주기 가속화
  • 비용 및 배포 변경에 대한 위험 감소
  • 개발자가 빠르게 피드백을 얻을 수 있음
  • 소프트웨어 개발에 대한 반복적인 접근이 쉬워짐

CI/CD의 이점

  • 향상된 협업
  • 신속한 전달
  • 신뢰성
  • 보안
  • 확장성
  • 속도
profile
🚧 https://coji.tistory.com/ 🏠

0개의 댓글