CI/CD

박핸지·2021년 11월 8일
1

긴급패치 업무를 맡게 된 기념으로 CI/CD 개념을 정리해보았다 깨륵

CI/CD란?

  • CI(Continuous Integration 지속적 통합) : 지속적으로 퀄리티 컨트롤을 적용하는 프로세스를 실행하는 것. 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어서 하나의 레포지토리로 관리되는 것을 의미한다.
    • SCM(Source Code Management)의 과정도 CI에 속한다.
      • Git, SVN 사용 등등
    • 빌드 후 작성된 테스트 코드를 통해 유효성을 검증하는 것도 CI에 속한다.
      • 소스코드가 Conflict나는 경우 Merge 버튼이 비활성화 되는것도 유효성 검사에서 실패한 것으로 CI에 속한다.
    • CI의 장점
      • 지속적 통합을 하게되면 소스코드는 항상 Ready-to-Run 상태(배포가 가능한 상태는 아님)가 된다. 즉, 중간에 누군가 합류를 해도 빌드가 되는 코드를 받을 수 있다.
      • 항상 양질의 코드 퀄리티 유지 가능
        • 테스트의 자동화를 이루게 되면 항상 테스트 코드를 통과하는 코드만 공유 레포지토리에 올라갈 수 있기 때문에 상당한 퀄리티의 소스코드로 유지되게 된다.
  • CD(Continuous Delivery 지속적 배포) : 팀이 짧은 주기로 소프트웨어를 개발하는 소프트웨어 공학적 접근의 하나로, 소프트웨어가 언제든지 신뢰 가능한 수준으로 출시될 수 있도록 보증하기 위한 것.
    • 지속적 제공과 지속적 배포를 모두 의미한다.
      • 지속적 제공 : CI과정이 모두 끝난 뒤 유효성 검증이 된 코드를 레포지토리에 올리는 것을 자동화한다. ( 프로덕션 레벨로 배포하는 것과는 별개)
        • 항상 프로덕션 레벨로 배포할 수 있는 준비가 되어있는 소스코드를 자동으로 올라갈 수 있도록 한다.
      • 지속적 배포 : CI/CD과정의 마지막 단계이다. 지속적 제공을 통해 배포 가능한 소스코드를 프로덕션 레벨로 릴리즈하는 것을 의미한다.
    • CD의 장점
      • 개발부터 배포까지 과정이 번거롭지 않고 간소화 되기 때문에 피드백을 빠르게 반영할 수 있다.
        • 장애 대응이 빨라진다. 릴리즈 후 굉장히 크리티컬한 이슈가 발견되었을 때, 개발부터 배포까지의 과정이 복잡하면 반영에 오래걸리게 된다.

Dev > 개발 프로세스 (코딩, 빌드, 테스트)

Ops > 운영 프로세스 (릴리즈, 배포, 모니터링)

profile
핸지의 메모장ㅎㅅㅎ

0개의 댓글