본문 바로가기

프로그래밍/스프링 부트와 AWS로 구현하는 웹서비스

9.1 CI & CD 소개

스프링 부트 프로젝트를 EC2에 배포하면서

스크립트를 개발자가 직접 실행해야하는 불편을 경험하였습니다.

 

그래서 CI, CD 환경을 구축하여 개선하고자 합니다.

 

CI, CD란 무엇인가???

 

CI( Continuous Integration - 지속적 통합)

- 코드 버전 관리를 하는 VCS 시스템 ( Git, SVN 등)에 PUSH가 되면 자동으로 테스트와 빌드가 수행되어

안정적인 배포 파일을 만드는 과정

 

CD( Continuous Deployment - 지속적인 배포)

이 빌드 결과를 자동으로 운영 서버에 무중단 배포까지 진행되는 과정

 

여기서 주의할 점은 CI 도구를 도입했다고 해서 CI를 하고 있는 것은 아닙니다.

마틴 파울러의 블로그를 참고해보면 http://bit.ly/2Yv0vFp 를 참고하면

CI에 대해 다음과 같은 4가지 규칙을 이야기 합니다.

 

  • 모든 소스 코드가 살아 있고 (현재 실행되고) 누구든 현재의 소스에 접근할 수 있는 단일 지점을 유지할 것
  • 빌드 프로세서를 자동화해서 누구든 소스로부터 시스템을 빌드하는 단일 명령어를 사용할 수 있게 할 것 
  • 테스팅을 자동화해서 단일 명령어로 언제든지 시스템에 대한 건전한 테스트 수트를 실행할 수 있게 할 것
  • 누구나 현재 실행 파일을 얻으면 지금까지 가장 완전한 실행 파일을 얻었다는 확신을 하게 할 것

 

여기서 특히나 중요한 것은 테스팅 자동화입니다.

지속적으로 통합하기 위해서는 무엇보다 이 프로젝트가 완전한 상태임을 보장하기 위해

테스트 코드가 구현되어 있어야만 합니다.