- 프로젝트(멀티프로젝트 A API, B API) 의 CI/CD 를 Aws code series 사용하여 구축
- 서버의 구성 A API 이중화, B API 이중화 하여 총 4개의 WAS
- ALB 를 통해 로드밸런싱
운영서버의 배포시간이 최소 25분이 소요되어 CodeDeploy view events 를 분석하던 중 BlockTraffic , AllowTraffic 에서 시간이 오래걸리고 AllowTraffic은 5분이 넘어가면 배포가 실패되면서 롤백이 되는 현상을 발견하여 설정값을 변경하여 시간을 단축
변경 전 소요 시간
Deregistration delay(등록취소지연 시간)
컨테이너를 종료하고 싶거나 다른 이유로 로드 밸런서에 컨테이너로의 트래픽 전송을 중지하는 신호를 전송하면 로드 밸런서는 다운스트림 컨테이너에 대한 새 연결 전송을 중지합니다. 하지만 기존 연결은 컨테이너가 close 될 때 까지 기다리며 deregistration delay 라 불리는 기간 이후에 연결 유지를 강제적으로 끊습니다.
Block Traffic 시간을 줄이기 위한 설정
로드밸런스 > 대상그룹 > 대상그룹 속성편집 > 등록취소지연 기본값 300 → 60 (1분이면 대부분의 트랜젹신이 처리 됐을거라 판단하여 변경)
Allow Traffic 시간을 줄이기 위한 설정
로드밸런스 > 대상그룹 > 상태그룹설정편집 > 정상임계값 기본값 5 → 2
로드밸런스 > 대상그룹 > 상태그룹설정편집 > 간격 기본값 30 → 10
헬스체크의 간격을 줄이고 성공여부 횟수를 줄이므로써 시간을 단축
변경 후 소요시간
각 서버에 맞게 임계치, 딜레이시간을 조절하여 배포시간을 단축하는게 적당해 보인다. 변경 전에는 배포완료 시간까지 총 25분이 걸렸으나 수정 후 배포완료 시간이 10분내외로 줄었다.
'AWS' 카테고리의 다른 글
Aws CodeCommit 사용법 (0) | 2023.11.20 |
---|---|
Nginx AWS ELB connect() failed (113: No route to host) while connecting to upstream (2) | 2023.03.08 |
AWS Aurora DB Cluster 엔드포인트 (0) | 2023.03.08 |
댓글