엘라스틱빈톡 & DB & CI/CD 배포하기 1 (CI/CD, Webhock - JenKins)

Sol's·2023년 5월 17일
0

Aws 무중단 배포

목록 보기
24/28

드디어 이번 프로젝트의 목표인 무중단 배포를 할것입니다.
제목 그대로 엘라스틱빈톡 & DB & CI/CD 배포를해볼것입니다.
이전에는 jar 파일을직접 업로드 하였지만 이제는 jar파일마저 CI/CD를 통해 자동으로 배포하겠습니다.

기존 배포방식의 위험한점

테스트 환경과 실행 환경이 다르다

앞서 엘라스틱빈스톡으로 배포를 했습니다.
하지만 배포를 했다고 무조건 배포에 성공한다고 보장할 수 없습니다.

프로젝트는 로컬 컴퓨터에서 테스트했지만,
배포는 리눅스 환경이기 때문입니다.

즉, 테스트와 실행환경이 다릅니다.

CI/CD

  1. build gradlew을 로컬에서 하여 jar파일을 만들지 않고 프로젝트를 Github에 배포합니다.
  2. Github가 코드의 변경을 감지하여 CI(continuous Integration 지속적 통합) 서버를만든 뒤 프로젝트 전달.
  3. CI서버에서 테스트하고 빌드하여 jar파일생성
    • 핵심은 CI서버가 AWS 환경(리눅스)과 동일해야 합니다.
  4. CI서버에서 AWS로 배포한 뒤 실행
    • CI서버에서 테스트를성광했으면 실제 환경에서 무조건 실행에 성공합니다.
    • CI서버는 AWS에서의 실행 성공을 보장합니다.
      - 환경이 동일하기 때문입니다.
  5. CI서버에서 실행파일(jar)생성 후 드래그하여 배포하지 않고, CD(Contunuous Delivery : 지속적 제공, 배포)를 합니다.
    • 즉, 자동배포를하는것입니다.
    • 총 2번 : CD가 실행 되는 시점
      1. 2번과정인 Github가 변경감지하여 CI서버로 배포할때
      1. 4번과정 성공 후 5번과정인 실행파일(jar)을 AWS로 배포할떄

주의할점

LAM
우리는 AWS로 배포할때 웹사이트에서 로그인되어있는 상태로 배포를 하였습니다.
하지만 CI/CD를 도입하면 CI서버에서AWS에 접근하여 배포할때 CD를하기위해 Access Key가 필요합니다.
접근키를 만들기 위해 AWS의 LAM이라는 개념을 알아야 합니다.

Webhook 기법 (JenKins)

Github이 제공해주는 서비스입니다.
폴링기법과 하는일은 똑같지만, 깃헙 특정 Repository가 변경되면 Hook을 날려줍니다.
폴링은 지속적으로 request요청을해야하니 서버에 무리가 갑니다.

폴링 : Travis
웹훅 : JenKins

hook을 받으면 코드를 테스트 서버로 내려받고
테스트에 필요한 프로그램을설치한 뒤
테스트를하고
프로젝트를 빌드하여
AWS로 전달해 줍니다.

과정 스케치

설명한대로 프로젝트를 Github에 push하면 CI/CD 과정을 거처 테스트를 진행 후 AWS로 배포해보겠습니다.

profile
배우고, 생각하고, 행동해라

0개의 댓글