208
클라우드 네이티브
6.2
회복력 확인
회복력은 장애에서 회복하고 함수와 서버 요청을 계속하는 시스템의 능력입니다. 회복력은 장
애를 피하지는 않는 대신에 심각한 다운타임이나 데이터 유실을 피하는 방법으로 장애에 대응
하는 모든 것입니다.
6.2.1
재시도로 일시적인 실패 처리
요청은 네트워크 지연, 커넥션 유실, 다운스트림 서비스가 바빠서 타임아웃 등의 여러 이유로
실패할 수 있습니다. 요청을 재시도하면 이런 실패는 대부분 극복할 수 있습니다. 재시도는 애
플리케이션의 안정성을 개선할 수 있습니다. 하지만 모든 요청을 무조건 재시도하기 전에 요청
을 재시도해야 하는지 확인하는 로직을 넣어야 합니다. 실패가 일시적이지 않거나 재시도가 성
공하지 않으면 해당 구성 요소의 요청을 취소하고 적절한 에러 메시지를 가진 응답을 하는 게
좋습니다. 예를 들어 잘못된 비밀번호를 넣어서 실패한 로그인을 재시도하는 것은 별 도움이
되지 않습니다. 장애가 일시적인 네트워크 문제로 요청을 다시하면 동일한 문제가 발생하지 않
습니다. 마지막으로, 다운스트림 서비스가 바쁘거나 비율 제한 때문에 실패했다면 조금 기다렸
다가 재시도해야 합니다. 다음은 재시도 동작을 처리하는 몇 가지 일반적인 전략입니다.
상수
매번 같은 시간을 기다렸다가 시도합니다.
선형
재시도할 때마다 시간을 꾸준히 증가시킵니다. 예를 들어 처음에
1
초 후 재시도했다면 다음에
는
3
초 후 재시도, 그다음에는
5
초 후 재시도합니다.
지수백오프
대기 시간을 지수적으로 증가시키면서 재시도합니다. 예를 들어