드디어 이번 프로젝트의 목표인 무중단 배포를 할것입니다.
제목 그대로 엘라스틱빈톡 & DB & CI/CD 배포를해볼것입니다.
이전에는 jar 파일을직접 업로드 하였지만 이제는 jar파일마저 CI/CD를 통해 자동으로 배포하겠습니다.
테스트 환경과 실행 환경이 다르다
앞서 엘라스틱빈스톡으로 배포를 했습니다.
하지만 배포를 했다고 무조건 배포에 성공한다고 보장할 수 없습니다.
프로젝트는 로컬 컴퓨터에서 테스트했지만,
배포는 리눅스 환경
이기 때문입니다.
build gradlew
을 로컬에서 하여 jar
파일을 만들지 않고 프로젝트를 Github
에 배포합니다.CI
(continuous Integration 지속적 통합) 서버를만든 뒤 프로젝트 전달. CI서버
에서 테스트하고 빌드하여 jar파일생성CI서버는 AWS에서의 실행 성공을 보장합니다.
CD
(Contunuous Delivery : 지속적 제공, 배포)를 합니다.총 2번
: CD
가 실행 되는 시점2
번과정인 Github가 변경감지하여 CI서버로 배포할때4
번과정 성공 후 5
번과정인 실행파일(jar)을 AWS로 배포할떄LAM
우리는 AWS로 배포할때 웹사이트에서 로그인되어있는 상태로 배포를 하였습니다.
하지만 CI/CD
를 도입하면 CI
서버에서AWS에 접근하여 배포할때 CD
를하기위해 Access Key
가 필요합니다.
접근키를 만들기 위해 AWS의 LAM
이라는 개념을 알아야 합니다.
Github이 제공해주는 서비스입니다.
폴링기법과 하는일은 똑같지만, 깃헙 특정 Repository가 변경되면 Hook을 날려줍니다.
폴링은 지속적으로 request요청을해야하니 서버에 무리가 갑니다.
폴링
: Travis
웹훅
: JenKins
hook을 받으면 코드를 테스트 서버로 내려받고
테스트에 필요한 프로그램을설치한 뒤
테스트를하고
프로젝트를 빌드하여
AWS로 전달해 줍니다.
설명한대로 프로젝트를 Github에 push하면 CI/CD 과정을 거처 테스트를 진행 후 AWS로 배포해보겠습니다.