CI/CD의 개념과 흐름

Kim sejin·2023년 12월 25일
0

Deploy

목록 보기
1/4
post-thumbnail

CI/CD란

어플리케이션 개발부터 배포까지 이 모든 단계들을 자동화를 통하여 효율적으로 빠르게 사용자에게 빈번이 배포할 수 있도록 하는 것이다.

CI는 Continuous Integration(지속적인 통합)의 약자이며,
CD는 Continuous Delivery(지속적인 제공) / Continuous Deployment(지속적인 배포)의 약자이다.

Continuous Delivery와 Continuous Deployment는 각각 서로 연관성이 있고, 또 함께 섞어서 사용하기 때문에 비슷하다. 자세한 내용은 밑에서 알아보자


CI가 필요한 이유?

  1. 코드 변경사항을 주기적으로 빈번하게 Main Repository에 Merge 해야한다.

    두 명의 개발자가 동일한 소스 파일을 수정할 때 충돌이 발생할 수 있다. 이것은 코드를 통합하는 과정에서 자연스럽게 발생하는 문제 중 하나이다. 때로는 새로운 기능을 개발하는 시간보다 충돌을 해결하는 데 더 많은 시간이 걸릴 수 있다.
    = 기능을 구현할 때는 작은 단위로 나누어서 개발하고 통합해나가는 것이 중요!

  2. 통합을 위한 단계(빌드, 테스트, 머지)의 자동화

    코드를 주기적으로 Merge하면 자동으로 코드의 변경 사항을 빌드해야 한다. 이를 통해 코드 변경 후에도 Build의 성공여부를 확인하고, 기존 시스템에 버그를 유발하지 않는지를 테스트하여 확인해야 한다.


CI의 흐름

  1. 개발자가 코드를 Main Repository에 Merge한다.
  2. CI 스크립트가 실행되어 변경된 코드와 함께 빌드가 시작된다.
  3. 빌드가 성공적으로 완료되면 팀에서 작성한 테스트가 실행된다.
  4. 만약 빌드나 테스트 중에 문제가 발생하면 해당 부분을 개선하고 다시 시도하게 된다.
  5. 빌드와 테스트가 모두 성공하면, 그때 해당 변경사항이 Main Repository에 Merge될 수 있다.

이 과정을 통해 코드의 통합이 안정적으로 이뤄지고, 테스트를 통해 배포 전에 문제를 발견하고 수정할 수 있다.


CD의 흐름

Continuous Delivery(CD):

  1. CI를 통해 코드가 Build되고 테스트되며, 코드를 Merge한다.
  2. 배포를 위한 릴리즈(새로운 기능, 업데이트)가 준비된다.
  3. 이 단계에서 릴리즈가 개발자 또는 검증 팀에 의해 사용자에게 배포될 준비가 되었는지 확인한다.
  4. 이후 사용자에게 배포하기 위한 절차를 수동으로 진행한다.

Continuous Deployment(CD):

  1. CI를 통해 코드가 빌드되고 테스트된 후, 코드가 Merge 된다.
  2. 배포를 위한 릴리즈가 준비된다.
  3. 릴리즈가 완료되자마자 자동으로 사용자에게 배포된다.
    (릴리즈가 자동으로 사용자에게 바로 배포될 수 있도록 자동화된 프로세스를 갖추고 있다)

이 두 개념의 차이점은 릴리즈가 준비되었을 때 마지막 배포 단계가 자동화되었는지의 여부이다. Continuous Delivery에서는 릴리즈는 수동으로 배포되지만, Continuous Deployment에서는 릴리즈가 자동으로 배포된다.


CI/CD 한줄 정리

CODE -> BUILD -> TEST -> RELEASE -> DEPLOY(자동화 O / 자동화 X)


CI/CD Tool

  • Jenkins
  • GitHub Actions
  • Buildkite
  • GitLab CI/CD
  • Bitbucket Pipelines
  • circleci

참고 영상

CI/CD 참고 영상

0개의 댓글