코드 그라데이션

[사전 지식] CI / CD 본문

SpringBoot [예제] 블로그 만들기/CI, CD

[사전 지식] CI / CD

완벽한 장면 2023. 10. 25. 15:51
# CI / CD는 도구가 아니라 방법이다.

* CI / CD가 필요한 상황

만약 서비스를 배포하고 운용하던 중에 코드를 변경할 일이 생기면 어떤 작업을 할 것인가? 
우선은 코드 수정을 하고, 로컬 환경에서 테스트를 진행한다. 그리고 빌드도 잘되는지 확인할 것이다.

그런 다음에는 jar 파일을 생성해 복사하고,
AWS에 접속해서 복사한 jar 파일을 업로드해 새 배포 버전을 제공해야 한다. 

지금 이 과정을 기계적으로 계속하는건 현실적으로 어렵다. 

프로젝트 규모가 커진다면 더 말할 필요도 없고.

=> 이럴 때 도입하는 것이 CI/CD

이 방법을 도입하면 빌드부터 배포까지의 과정을 자동화할 수 있고, 또 잘 되는지 모니터링 할 수 있다.

사실 이는 지속적 통합, CD는 지속적 제공이라는 의미가 있다.

 


CI (Continuous Integration)

  • 한글로 해석하면 지속적 통합이고, 풀면 개발자를 위해 빌드와 테스트를 자동화하는 과정.

- CI는 변경 사항을 자동으로 테스트해 애플리케이션에 문제가 없다는 것을 보장한다. 

- 그리고 코드를 정기적으로 빌드하고 테스트하므로 여러 명이 동시에 작업을 하는 경우 층돌을 방지하고 모니터링할 수 있다.

CI 과정

- 보통 코드 변경 사항이 코드 저장소에 업로드되면 CI를 시작하고, CI 도중 문제가 생기면 실패하므로 코드의 오류도 쉽게 파악할 수 있게 된다.

 


CD(지속적 제공과 지속적 배포)

  • CD는 CI 작업을 끝낸 다음 실행하는 작업.
  • 배포 준비가 된 코드를 자동으로 서버에 배포하는 작업을 자동화하는 것이다.

 

- CI가 통과되면 개발자가 수작업으로 코드를 배포하지 않아도 자동으로 배포하니 매우 편리하다.

- 때문에 CD는 지속적 제공(continuous delivery)이라는 의미와

   지속적 배포(continuous deployment) 라는 의미를 모두 가진다.

 

 

지속적 제공에서의 CD 의미

- 애플리케이션에 적용한 코드의 빌드와 테스트를 성공적으로 진행했을 때

  깃허브와 같은 코드 저장소에 자동으로 업로드하는 과정을 의미한다.

  최소의 노력으로 코드 배포를 쉽게 하는 것을 목표로 한다.


지속적 배포에서의 CD 의미

- 지속적 제공을 통해 성공적으로 병합한 코드 내역을 AWS와 같은 배포 환경으로 보내는 것을 의미한다.

- 이를 실무에서는 릴리스라고 한다.

- 지속적인 배포는 지속적 제공의 다음 단계까지 자동화한다.

  즉, 개발자가 애플리케이션에 변경 사항을 커밋한 후 몇 분 이내에 애플리케이션을 자동으로 배포하여 적용된다.

 

 

728x90

'SpringBoot [예제] 블로그 만들기 > CI, CD' 카테고리의 다른 글

CI / CD 적용하기  (0) 2023.10.26
Comments