[CI/CD] - CI/CD란?

GOSS·2024년 9월 13일

CI/CD

목록 보기
1/3
post-thumbnail

CI란?

CI (Continuous Integration) : 지속적 통합

CI란 코드 변경 사항을 공유 소스 코드 저장소(Repository)에 자동으로
자주 통합하는 것을 뜻한다.

Git으로 예시를 들어본다면

브런치를 생성하여 작업을 한 뒤, 버그가 없는 완전한 코드를 main 브런치에 PR(Pull Request)을 통해 병합한다.
이 과정에서 자동화된 빌드와 테스트를 통해 코드 변경 사항이 저장소에 통합되는 것을 CI라고 뜻한다.

CI의 장점

  • 코드의 검증에 들어가는 시간이 줄어든다.
  • 개발 편의성이 증가한다.
  • 항상 테스트 코드를 통과한 코드만 레포지토리에 올라가기 때문에,
    좋은 퀄리티를 유지할 수 있다.

CI 정리

CI는 애플리케이션의 버그 수정이나 새로운 코드 변경이 주기적으로 빌드 및 테스트 되면서 공유되는 레포지토리에 통합(merge)하는 것을 의미한다.




CD란?

CD (Continuous Delivery/Deployment) : 지속적 제공/배포

CI에서 빌드와 단위 및 통합 테스트를 자동화한 다음 검증된 코드를 레포지토리로 릴리스하는 것(배포)을 자동화하는 것을 뜻한다.
CD에는 두 가지 의미가 있는데 Delivery랑 Deployment이다.

간단한 예를 들자면

EC2에 웹프로젝트를 띄웠다고 가정했을 때
새로운 기능을 추가하거나 오류로 인해 코드를 수정한 경우
해당 코드를 CI를 통해 검증 후 통합을 하였다면
이 변경된 코드를 서버에 다시 배포 해야 한다.
즉, 코드의 변경이 일어날 때마다 Release하고 서버에 Deploy해야 한다.
위의 작업(Release->Deploy)을 자동화 시키는 것을 CD라고 한다.


Continuous Delivery / Deployment 의 차이

  • Continuous Delivery

    CI가 문제없이 빌드되고 테스트되는것을 검증한다면 CD(delivery) 는 한단계 더 나아간다. 실제로 애플리케이션이 배포되기 전까지의 작업을 자동화한다. 빌드 결과물을 지속적으로 전달하지만 실제 배포는 사람이 개입하여 실행해주어야된다.

  • Continuous Deployment

    delivery 가 CI 보다 한단계 나아간 것이라면 CD(deployment) 는 delivery 보다 한단계 더 나아간다. CI 를 통해 신규 작성된 코드의 무결성을 검증하고, delivery 를 통해 배포 작업을 진행하며, 완료되면 배포까지 자동으로 진행된다. 배포까지 사람의 개입이 없이 자동으로 진행되며 애플리케이션은 지속적으로 신규 코드가 반영된다.


    CD의 장점

    개발자는 배포보다는 개발에만 더 신경 쓸 수 있도록 도와준다.
    클릭 한 번으로 일련의 과정을 자동화 할 수 있다.

CD 정리

CD는 CI를 적용하여 검증된 코드들이 병합한 이후 해당 소프트웨어를
실제 프로덕션 환경으로 배포까지의 과정을 자동화하는 것을 의미한다.






Reference
Goro CI/CD란 무엇일까?
드림코딩 CI/CD 5분 개념 정리
Red Hat CI/CD란?

profile
새싹개발자[유년기II]

0개의 댓글