Files
document-haness/docs/clean-architecture-backend-template/tech-log-studio/http-failure-classification/concept/concept-three-failure-vocabularies.md
T

2.6 KiB

id, kind, slug, title, topic, topicName, project, status, studio, basisVersion, source, sourceRevision
id kind slug title topic topicName project status studio basisVersion source sourceRevision
CONCEPT three-failure-vocabularies 실패 어휘 세 층과 그 사이를 잇는 SQLState 매트릭스 http-failure-classification HTTP 실패 분류와 재시도 안전성 clean-architecture-backend-template 게시 전 sourceRevision 21234e38cdb9a926cbc92bb97a2aee2e4a7d2916
final/document.md#a02
final/document.md#a05
final/document.md#5-1
final/document.md#a05 §7.1
final/document.md#a02
21234e38cdb9a926cbc92bb97a2aee2e4a7d2916

실패 어휘 세 층과 그 사이를 잇는 SQLState 매트릭스

저수준 driver 오류, 애플리케이션 failure category, 외부 HTTP 응답은 서로 다른 질문에 답한다. 이 프로젝트는 그 사이를 명시적 매핑으로 연결하고, 모르는 값은 추측하지 않는다.

관계

  • 인식하지 못한 SQLSTATE 는 추측하지 않는다 매트릭스에 없는 값을 임의의 failure category로 바꾸지 않는 결정이다.
  • 같은 SQLState 를 둘이 등록하면 값이 같아도 시작을 실패시킨다 매핑 소유권을 한 곳으로 유지하는 규칙이다.
  • 전송 여부 판정은 evidence와 operation semantics를 함께 본다 failure category가 곧 retry eligibility가 아니라는 후속 결정이다.

본문

첫 번째 어휘는 공급자 오류다

JDBC나 HTTP client는 SQLSTATE, status, exception type처럼 공급자에 가까운 값을 준다. 이 값은 어떤 기술 경계에서 실패했는지를 말하지만 애플리케이션 정책을 직접 결정하지 않는다.

두 번째 어휘는 failure category다

애플리케이션은 transient, conflict, unavailable처럼 정책이 이해할 수 있는 범주로 변환한다. PostgreSQL 경로에서는 SQLSTATE 매트릭스가 이 변환을 소유한다.

매트릭스에 없는 SQLSTATE는 기존 항목과 비슷해 보인다는 이유로 추측하지 않는다. 새 매핑이 필요하면 그 소유자를 명시적으로 추가한다.

세 번째 어휘는 외부 계약이다

HTTP 응답은 클라이언트가 알아야 할 상태와 오류 코드를 표현한다. 내부 failure category와 1:1일 필요는 없고, 내부 구현 세부가 그대로 노출되어서도 안 된다.

retry는 별도 판정이다

failure category는 retry 입력 중 하나다. 최종 retry eligibility는 전송 evidence, operation의 멱등성·의미, deadline과 retry budget을 함께 본다.

현재 source repository를 다시 실행하지 못했으므로 이 기록은 SSOT가 고정한 매핑 구조를 설명한다.