WEBBOOK CHAPTER

실패를 전제로 설계하는 분산시스템: 22장. API 계약 리뷰 실전

22장. API 계약 리뷰 실전

예약 생성 API에는 idempotency key, tenant context, client deadline, 상태 코드, 오류 body, retry 가능성, version을 정의한다. 500 하나로 모든 실패를 표현하면 클라이언트가 안전하게 재시도할 수 없다. validation, conflict, dependency timeout, 처리 중, 영구 실패를 업무 의미로 나눈다.


POST /v1/reservations
Idempotency-Key: <UNIQUE_COMMAND_KEY>
If-Match: "slot-version-7"

201 Created | 409 SlotTaken | 202 Processing | 503 RetryableDependency

리뷰어는 같은 키에 다른 body, 응답 유실, 202 뒤 조회, 클라이언트 취소, API version 혼재를 주입한다. 오류에는 안정된 machine code와 correlation ID를 두고 stack·SQL·내부 host를 넣지 않는다. 계약은 OpenAPI 파일만이 아니라 timeout·retry·권한·데이터 보존까지 포함한다.