무중단 배포 환경 구축 완료
카테고리: Diary
무중단 배포 환경 구축을 완료 하였다.
-
환경구축을 하면서 말로만 듣던 Jenkins와 Nginx, Docker의 사용 이유를 알수있었다.
Jenkins와 Github Webhook을 연동하여 지정해놓은 브랜치에 push하면 Webhook으로 인해
Jenkins가 호출되어 빌드를 진행할수 있었고, 호출된 Jenkins는 두가지 일을 진행하였다.- 빌드한 파일을 s3에 전달하여 업로드
- Codedeploy에 배포 요청
- Jekins에서 두가지 처리 후 Codedeploy에선 ec2에 배포를 진행했다.
-
여기까진 내가 알고있던 자동배포 CI 정도 이고 이후 NginX를 통해 무중단 배포를 진행하였다.
rolling방식으로 현재 동작 중인 애플리케이션의 profile은 real1/8081, 동작하고 있지 않은 애플리케이션의
profile은 real2/8082, nginx의 리버스 프록시는 포트 8081을 가리키게 했다.codedeploy에서 배포 할 때 현재 동작하고 있는 애플리케이션을 확인한다
- 현재 real1이 동작 중인 것을 확인
현재 동작하고 있지 않은 애플리케이션을 삭제하고, 새 버전의 애플리케이션을 배포 - 동작하고 있지 않은 애플리케이션은 real2이기 때문에 real2 컨테이너 종료 -> 컨테이너 삭제 -> 도커 이미지 삭제순으로 진행
nginx에서 기존에 사용하고 있는 이전 버전 애플리케이션의 포트를 새롭게 배포한 애플리케이션의 포트로 변경 - real2 도커 이미지 생성 -> 도커 컨테이너 실행 이후 nginx가 바라보고 있는 포트를 8081에서 8082로 변경처리
- 현재 real1이 동작 중인 것을 확인
-
클라이언트 입장에서는 다음과 같이 애플리케이션을 사용할수있다.
- real2가 배포되고 실행되는 도중에는 real1/8081로 접속해 기존 서비스를 사용
- real2의 배포가 완료되고 nginx의 리버스 프록시가 적용되면 real2/8082로 접속해 새로운 서비스를 사용가능
- 결과적으로 클라이언트는 배포 도중에도 서비스를 사용할 수 있다.
-
배포 환경 구축 완료 후 HTTPS
무료 인증서로 Let’s Encrypt를 이용하여 HTTPS 적용
RSA키(공개키 암호화 알고리즘) 4096으로 변경하여 SSL Server Test 보안점수A 완료
상세 적용과정은 정리 후에 분류해서 올려보겠다.
댓글남기기