
드디어 이번 프로젝트의 목표인 무중단 배포를 할것입니다.
제목 그대로 엘라스틱빈톡 & 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로 배포해보겠습니다.