WEBBOOK CHAPTER

NestJS 11, 시작부터 런칭까지: 36장. 외부 지도와 알림에 비용·시간 예산을 건다

36장. 외부 지도와 알림에 비용·시간 예산을 건다

주소 geocoding은 개인정보 전송이므로 provider, 목적, 보존, region과 계약을 검토한다. 정규화된 결과를 내부 type으로 변환하고 provider raw response가 domain에 퍼지지 않게 한다. cache key에 원문 주소를 평문으로 노출하지 않는다. 잘못된 좌표는 거리 알고리즘이 아니라 사용자 확인 경로로 보낸다.

connect, TLS, response header, body, 전체 deadline을 구분한다. 429는 Retry-After와 업무 deadline을 함께 보고 제한적으로 retry한다. 무제한 Promise.all 대신 concurrency limit과 bulkhead를 둔다. 한 provider 장애가 event loop와 DB pool을 동시에 고갈시키지 않게 한다.

계약 test는 정상, 빈 결과, schema 누락, 429, 500, slow body, connection reset을 재현한다. metric에는 provider·operation·result·latency·retry만 넣고 주소·전화는 label에서 제외한다. 비용 alert는 call count, cache miss, message segment, retry 폭증을 예산과 연결한다.