지금까지 무중단 배포 개념과 전략, 배포에 필요한 기술 스택을 학습했습니다.
본격적으로 프로젝트를 생성하여 환경 설정 후 블루그린, 롤링, 카나리 배포 전략 실습을 진행하겠습니다.
GitHub Repository의 script 디렉토리를 통해 각 배포 전략에 맞는 deploy.sh
파일을 확인하실 수 있습니다.
<aside> <img src="https://prod-files-secure.s3.us-west-2.amazonaws.com/cb6212cb-2898-430e-808a-a921b31f12b9/485153d5-648a-4b6a-8b25-5dd81eb03638/252314.png" alt="https://prod-files-secure.s3.us-west-2.amazonaws.com/cb6212cb-2898-430e-808a-a921b31f12b9/485153d5-648a-4b6a-8b25-5dd81eb03638/252314.png" width="40px" />
https://github.com/ZeroDowntimeHub/zero-downtime-deployment/tree/main/script
</aside>
cicd
디렉토리로 옮깁니다. 이전 프로세스를 종료 시킨 후 구 버전의 JAR 파일을 old_build
디렉토리로 옮기고, 신 버전의 JAR 파일을 실행 시킵니다. 이전 프로세스를 종료시키고, 신 버전의 프로세스가 서비스되기까지 다운타임이 발생하게 됩니다.deploy.sh
파일을 실행하게 됩니다. 쉘 스크립트를 통해 구 버전의 JAR 파일은 old_build
디렉토리로 옮기고, 신 버전의 애플리케이션을 실행시킵니다. 헬스 체크를 통과하면 Nginx 설정파일을 동적으로 바꿔 로드 밸런싱할 포트를 변경합니다. 헬스 체크가 통과하지 않는다면 롤백 합니다. 마지막으로 구 버전의 애플리케이션을 안정적으로 종료합니다.먼저 Termius 를 이용하여 EC2 Ubuntu 서버에 SSH 원격 접속합니다.
sudo apt update
sudo apt update
****를 통해 로컬 패키지 목록을 최신 상태로 업데이트합니다. 즉, 패키지 목록을 새로 가져와 설치 가능한 최신 버전을 확인하는 과정입니다.