더북(TheBook)

불능 서비스 복구

히스트릭스 같은 라이브러리는 부분적인 솔루션에 불과합니다. 무응답 원격 서비스를 어떻게 복구하면 좋을지는 그때그때 상황에 맞게 판단해야 합니다. 그림 3-2와 같이 주문 생성 요청이 실패하는 상황에서는 그냥 알기 쉽게 서비스가 클라이언트에 에러를 반환하는 것이 낫습니다. API 게이트웨이가 할 수 있는 것은 모바일 클라이언트에 에러를 반환하는 것뿐이죠.

부분 실패 시 미리 정해진 기본값이나 캐시된 응답 등 대체 값(fallback value)을 반환하는 방법도 있습니다. 그림 3-3의 GET /orders/{orderId} 끝점은 주문 서비스, 주방 서비스, 배달 서비스 등을 호출해서 그 결과를 조합합니다.

물론 모든 서비스의 데이터가 클라이언트에 똑같이 중요하지는 않습니다. 주문 서비스 데이터가 가장 중요하죠. 서비스가 불능 상태가 되어도 다른 서비스 데이터는 상대적으로 덜 중요하기 때문에 API 게이트웨이는 캐시된 버전의 데이터 또는 에러를 반환합니다. 이를테면 배달 서비스가 불능 상태가 될 경우, API 게이트웨이가 캐시된 버전의 데이터를 반환하거나 아예 해당 데이터를 응답에서 제거해도 클라이언트는 유용한 정보를 사용자에게 표시할 수 있을 것입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.