💾 CS

CI/CD (Continuous Integration/Delivery & Deployment)

별이⭐ 2024. 3. 21. 09:27

DevOps

💡 Development(개발) + Operations(운영)

  • 소프트웨어 개발의 Agile 방법론을 기반으로 개발, 운영 팀 간의 협력과 통합을 강조하는 문화 철학, 방식 및 도구의 조합
    • Agile 방법론?
       
      • 변화에 빠르게 대응하고, 고객의 피드백을 적극 반영해 짧은 주기로 소프트웨어를 개발, 배포하는 것을 목표로 한다.

 

DevOps를 왜 사용할까?

💡 왜 사용할까?

  • 개발주기 단축과 신속한 제공
    • CI/CD 같은 자동화된 프로세스를 통해 개발-배포까지의 시간을 크게 단축시킨다.
    • 배포 빈도와 속도를 개선해 제품을 더 빠르게 혁신하고 개선할 수 있다. 즉, 고객에게 빠르게 새로운 기능을 제공할 수 있다.
  • 안정성
    • CI/CD 방식을 사용해 각 변경 사항이 제대로 작동하는지, 안전한지 테스트해 품질을 보장한다.
  • 협업 강화
    • 개발팀과 운영팀이 긴밀하게 협력해 많은 책임을 공유해 비효율성을 줄이고 시간을 절약한다.

 

CI/CD

💡 지속적 통합과 지속적 제공/배포

  • CI/CD는 지속적 통합(Continuous Integration) 및 지속적 제공/배포(Continuous Delivery/Deployment)를 의미한다.
  • DevOps 방법론의 필수적인 부분이다.
  • 소프트웨어 개발 라이프사이클을 간소화하고 가속화하는 것을 목표로 한다.
  • CI/CD가 연결된 사례를 CI/CD 파이프라인이라고 부른다.

💡 CI(지속적 통합)

  • 개발자가 코드 변경 사항을 공유 소스 코드 리포지토리에 자동으로 자주 병합(merge)하는 소프트웨어 개발 방식
  • 이 과정에서 자동화된 빌드 및 테스트를 실행해 코드 변경 사항이 기존 코드와 잘 통합되는지 검증한다.
  • 핵심 목표는 신속한 버그 해결, 품질 개선, 업데이트 검증 및 배포 시간 단축이다.

💡 CD(지속적 제공/배포)

  • 코드의 변경 사항의 통합, 테스트, 제공을 나타내는 프로세스. 두 가지 부분으로 구성된다.
    • 지속적 제공
      • 코드 변경 사항이 자동으로 빌드, 테스트를 거쳐 준비된 환경까지 자동으로 배포되는 것
      • 프로덕션 환경에 배포하기 위해 준비하는 단계. 프로덕션 환경 배포 자동화 X
    • 지속적 배포
      • CI/CD 파이프라인의 최종 단계
      • 업데이트를 실제로 프로덕션 환경에 배포하는 것을 자동화해 고객이 사용할 수 있도록 하는 것