무중단 배포 환경 구축 완료

Date:     Updated:

카테고리:

태그:

무중단 배포 환경 구축을 완료 하였다.

  • 환경구축을 하면서 말로만 듣던 Jenkins와 Nginx, Docker의 사용 이유를 알수있었다.

    Jenkins와 Github Webhook을 연동하여 지정해놓은 브랜치에 push하면 Webhook으로 인해
    Jenkins가 호출되어 빌드를 진행할수 있었고, 호출된 Jenkins는 두가지 일을 진행하였다.

    1. 빌드한 파일을 s3에 전달하여 업로드
    2. Codedeploy에 배포 요청
    3. Jekins에서 두가지 처리 후 Codedeploy에선 ec2에 배포를 진행했다.
  • 여기까진 내가 알고있던 자동배포 CI 정도 이고 이후 NginX를 통해 무중단 배포를 진행하였다.

    rolling방식으로 현재 동작 중인 애플리케이션의 profile은 real1/8081, 동작하고 있지 않은 애플리케이션의
    profile은 real2/8082, nginx의 리버스 프록시는 포트 8081을 가리키게 했다.

    codedeploy에서 배포 할 때 현재 동작하고 있는 애플리케이션을 확인한다

    1. 현재 real1이 동작 중인 것을 확인
      현재 동작하고 있지 않은 애플리케이션을 삭제하고, 새 버전의 애플리케이션을 배포
    2. 동작하고 있지 않은 애플리케이션은 real2이기 때문에 real2 컨테이너 종료 -> 컨테이너 삭제 -> 도커 이미지 삭제순으로 진행
      nginx에서 기존에 사용하고 있는 이전 버전 애플리케이션의 포트를 새롭게 배포한 애플리케이션의 포트로 변경
    3. real2 도커 이미지 생성 -> 도커 컨테이너 실행 이후 nginx가 바라보고 있는 포트를 8081에서 8082로 변경처리
  • 클라이언트 입장에서는 다음과 같이 애플리케이션을 사용할수있다.

    1. real2가 배포되고 실행되는 도중에는 real1/8081로 접속해 기존 서비스를 사용
    2. real2의 배포가 완료되고 nginx의 리버스 프록시가 적용되면 real2/8082로 접속해 새로운 서비스를 사용가능
    3. 결과적으로 클라이언트는 배포 도중에도 서비스를 사용할 수 있다.
  • 배포 환경 구축 완료 후 HTTPS

    무료 인증서로 Let’s Encrypt를 이용하여 HTTPS 적용
    RSA키(공개키 암호화 알고리즘) 4096으로 변경하여 SSL Server Test 보안점수A 완료

상세 적용과정은 정리 후에 분류해서 올려보겠다.

Diary 카테고리 내 다른 글 보러가기

댓글남기기