[infra] CI/CD는 무엇인가요

orca·2024년 9월 22일

CS

목록 보기
17/46

CI/CD는 소프트웨어 개발에서 코드를 자동으로 테스트하며 배포할 수 있는 상태로 만드는 개발 프로세스를 말합니다. CI/CD 를 통해 코드의 변경 사항이 항상 자동으로 테스트되고 배포되므로, 클라이언트는 최신 버전의 안정적인 서비스를 이용할 수 있습니다.

Continuous Integration (CI)

  • 개발자들이 각자 작업한 코드를 통합하는 과정
  • 모든 코드 변경 사항을 자동으로 빌드하고 테스트함
    ➡️ 코드 품질을 유지하고 버그를 초기에 잡을 수 있음

Continuous Delivery (CD)

  • CI 이후에 코드가 운영 환경에 배포될 수 있도록 하는 과정
    ➡️ 운영 환경에 배포할 수 있는 상태로 만듦
    ➡️ 코드의 변경 사항이 자동으로 배포된다면, 고객은 최신 버전의 안정적인 서비스를 이용할 수 있음
  • 배포는 수동으로 이루어질 수 있지만, 배포를 준비하는 단계는 자동화됨

Jenkins

  • 가장 널리 사용되는 오픈소스 CICD 툴
  • 플러그인 기반으로 유연한 확장 가능
  • 복잡한 파이프라인 구축 가능

Jenkins를 활용한 CI/CD example

  1. CI
    • 개발자들이 코드 변경 사항을 Git에 푸시할 때마다, Jenkins가 이를 감지하고 파이프라인을 트리거한다.
    • jenkins 는 다음을 수행함
      • 코드 빌드 및 컴파일
      • 유닛 테스트 및 통합 테스트
  2. CD
    • 모든 테스트가 성공적으로 통과되면 Jenkins는 자동으로 Docker 이미지를 빌드함
    • 새로운 버전의 이미지는 AWS ECS에 배포됨
    • Jenkins 는 배포 후 애플리케이션의 상태를 모니터링함
    • 만약 문제가 생기면 Jenkins 는 관리자에게 경고를 보냄

0개의 댓글