[CI/CD] CI/CD란?

매번 개발자가 코드를 작성하거나 수정하고 빌드와 테스트를 하고 매번 배포를 하게되면 많은 시간이 소요됩니다. 하지만 git에 코드를 올리는 것으로 빌드와 테스트 그리고 배포까지 자동으로 된다면 쓸데없는 시간을 단축시키고 개발에 시간을 더 쏟을 수 있습니다. 그래서 오늘 CICD에 대해 정리해보겠습니다.

CI란?

CI는 간단히 빌드/테스트 자동화 과정입니다. CI를 성공적으로 구현한 경우 애플리케이션에 대한 새로운 코드나 코드의 변경사항이 발생하면 정기적으로 빌드 및 테스트되어 공유 레포지토리에 통합되어 여러명의 개발자가 동시에 개발하는 경우 서로 충돌할 수 있는 문제를 해결할 수 있습니다.

커밋할 때마다 빌드와 테스트가 자동적으로 이루어져 정상동작 하는지 확인하고 문제가 생기는 부분이 없도록 보장해줍니다.

CD란?

CD는 간단히 배포 자동화 과정입니다. CI는 Continuous Delivery 혹은 Continuous Deployment 두 용어로 사용됩니다.
Continuous Delivery는 공유 레포지토리로 자동 Release 하는것, Continuous Deployment는 Production 레벨까지 자동으로 deploy하는 것을 의미합니다.

CI/CD 적용 전과 후

CI/CD 적용 전

  1. 개발자들이 개발하여 코드를 수정한다.
  2. 각자의 feature 브랜치에 코드를 push한다.
  3. 각자의 코드를 git에 올리고 통합합니다.
  4. 에러 벌생시 에러가 발생한 부분을 찾기 위해 디버깅하고 코드를 수정합니다.
  5. 1~4 과정을 반복합니다.
  6. 배포를 시작하지만, 배포도 개발자가 직접 하므로 시간이 많이 소요됩니다.

CI/CD 적용 후

  1. 개발자들이 개발하고 feature 브랜치에 push합니다.
  2. git push가 trigger되어 CI서버에서 알아서 build, test를 실행하고 결과를 전송합니다.
  3. 개발자는 에러가 발생하면 에러부분을 수정하고 커밋하는 과정을 반복합니다.
  4. CI가 성공했다면 main 브랜치에 merge합니다.
  5. main에 merge되면 trigger되어 Ci 서버에서 build, test를 수행하고 deploy까지 자동적으로 진행됩니다.