Elastic Beanstalk
회사에서 Elastic Beanstalk(이하 EB)을 사용해 새로운 운영 환경을 구성을 했는데 놓치는 부분들이 있었고 선배 개발자분께서 여러 부분에서 함께 점검을 해주셨습니다.
그 중에 안정적인 운영을 위해 꼭 알아야 하는 것이 있어 공유해봅니다.
바로 무엇을 Health 체크에 포함시킬 것인가 입니다.
EB의 Health Check 설정에는 Ignore application 4xx 설정이 있습니다.
어플리케이션에서 발생한 4xx도 실패한 것으로 간주할 것인가입니다.
일반적으로 4xx, 5xx 응답은 실패이니 실패로 보는 것이 맞는 것 같지만 서버 운영 관점에서는 위험한 설정입니다.
왜냐하면 크롤링, 사용자의 잘못된 요청이 실패로 집계되어 사실 정상적인 인스턴스가 Health Check에 실패하여 클러스터에서 빠질 수 있기 때문입니다.
그렇기 때문에 일반적인 경우 4xx 응답은 정상으로 간주하고 운영을 하는 것이 좋고, 위 Ignore application 4xx 설정은 ON 해야 합니다.
Circuit Breaker
해당 어플리케이션에 Circuit Breaker로 reslience4j가 적용되어 있습니다.
그리고 reslience4j는 성공, 실패 카운트와 관련하여 무시할 수 있는 Exception을 제공합니다.
여기에서도 4xx 관련된 예외는 제외가 되어야 합니다.
만약 4xx 관련된 예외도 fail로 간주된다면 위에서 말했듯이 크롤링, 사용자의 잘못된 요청이 많은 시점에 Circuit Breaker가 OPEN 되면서 장애가 발생하게 됩니다.
저는 이 Circuit Breaker 관련해서 오픈 직전에 발견하고 수정을 해서 긴급하게 진행을 했었습니다.
오픈 전에 발견해서 다행이기는 하지만 더 미리 발견했으면 오픈 당일에 고생할 일이 없었겠다 싶습니다.
다른 분들은 관련 내용 파악하고 좀 더 빨리 대응할 수 있기를 바랍니다.
'제안&정리' 카테고리의 다른 글
Latency 관리 (0) | 2022.08.21 |
---|---|
[React Native] custom useAxios hook (2) | 2022.07.17 |
Application Scaling 전략 (0) | 2022.07.03 |
React Native - NumberInput (0) | 2022.06.25 |
Spring Cloud - Hystrix Out, Resilience4j In (0) | 2022.06.12 |