1. 전략 - Rolling
: 실행 중인 서버들을 점진적으로 신버전으로 교체하는 전략
선택 이유
- 간편성 : 롤백이 간편하며 배포를 위한 추가 EC2 자원이 불필요하다
- 안정성 : 현재 가용 중인 서버 2대에서 변동 가능성이 거의 없다.
- blue green 전략을 고려했으나, AWS 오토 스케일링 권한이 없어 도입할 수 없다. Nginx로 구현이 가능하지만, 경유하는 네트워크 통신 단계가 많아 비효율적이라 판단했다.
- Rolling 전략 사용 시 서비스에 신/구버전이 공존하여 균일한 서비스를 제공하지 못한다는 단점이 있다. 하지만, 2대만 가용하는 상황에서는 해당 전략의 단점이 큰 문제가 되지 않는다.
2. 구현
GitHub Actions 운영 서버 배포 workflow 스크립트 작성
- backend-cd-prod.yml 중 무중단 배포 로직
동작 흐름
- 순차적으로 EC2 서버 신버전으로 교체
- 배포된 서버의
health check
actuator/health
api 사용
- 최대 5회 동안 health check API 호출
- 한 요청 당 1분 timeout 설정
- health 응답 시 → health check 성공
- unhealth 응답 시 → 6초 슬립 후, 재요청
3. 실행
release: 백엔드 버전 2.2 배포
****
