
487
12
장
회복 탄력성
TIP
타임아웃은 매우 유용하다. 다른 프로세스를 호출하는 데 항상 타임아웃을 설정하고 모든 곳에 기본 타임아
웃 값을 지정하라. 타임아웃이 발생하면 기록하고, 어떤 일이 발생하는지 살펴보고, 그 결과에 따라 변경하라.
다운스트림 서비스에 대한 ‘정상’ 상태의 응답 시간을 확인하고 이를 이용해 타임아웃 임계값을 설정하라.
단일 서비스 호출에 대해 타임아웃을 설정하는 것만으로 충분하지 않을 수 있다. 타임아웃이
발생하기 전에 포기하고 싶은 더 큰 작업의 일부분으로 이 타임아웃이 발생한다면 어떻게 될
까? 예를 들어 애드버트코프의 경우 사용자가 이미 요청을 포기했을 가능성이 높다면 최신 순
무 가격을 기다릴 필요가 없다. 이러한 상황에서는 전체 작업에 대한 타임아웃을 설정해두고
이를 초과하면 포기하는 것이 합리적일 수 있다. 이렇게 작동하려면 작업에 남은 현재 시간을
다운스트림으로 전달해야 한다. 예를 들어 페이지를 렌더링하는 전체 작업이
1
,
000ms
이내에
완료돼야 하고 다운스트림 순무 광고 서비스를 호출할 때 이미
300ms
가 경과했다면, 나머지
호출을 완료하는 데
700ms
이상 기다리지 않도록 해야 한다.
CAUTION
단일 서비스 호출에 대한 타임아웃만 고려하면 안 된다. 즉, 해당 작업 전체에 대한 타임아웃을 생각하고 ...