티스토리 뷰
- 프로젝트(멀티프로젝트 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 |
- Total
- Today
- Yesterday
- Spring Actuator
- spring boot redis cache
- spring boot gzip
- codecommit repository
- JdbcBatchItem
- cacheevict
- redis cache
- actuator prometheus grafana
- spring boot jpa crud
- custom Item writer
- AWS 클라우드 환경
- spring boot jpa
- 업비트 웹소켓 자바
- Enum equals
- sse vs websocket
- SpringBatch 5.1.1
- okhttp3 websocket
- CompositeItemWriter
- Enum Equals ==
- spring redis cache
- 업비트 웹소켓
- nginx gzip
- WebSocketClient
- nvWebSocket
- spring security
- Spring boot Actuator
- tomcat gzip
- Enum ==
- 프라이빗 저장소
- interceptor 예제
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |