{
  "title": "API 재시도는 횟수가 아니라 부하 예산으로 설계한다",
  "document_type": "technical_blog",
  "sections": [
    {
      "id": "01-reader-promise",
      "intent": "reader_promise",
      "title": "먼저 결론: 무엇을 해결하는가",
      "reader_question": "이 글을 읽으면 무엇을 이해하거나 결정할 수 있는가?",
      "purpose": "독자의 문제, 글의 범위, 핵심 결론을 첫 화면에서 약속한다.",
      "must_include": [
        "독자 목표",
        "핵심 메시지",
        "범위와 비범위",
        "재시도가 장애를 증폭하지 않도록 타임아웃, 재시도 횟수, 백오프, 지터, 멱등성을 함께 설계한다",
        "재시도는 성공 확률을 높이는 무료 기능이 아니라 실패 중인 의존성에 추가 부하를 보내는 예산이므로, 멱등성·한도·백오프·지터·관측성을 하나의 정책으로 묶어야 한다.",
        "서비스 간 동기 HTTP 호출의 클라이언트 재시도 정책",
        "정책을 검증하는 운영 지표와 실패 실험",
        "메시지 큐의 전달 보장 전체 설계",
        "특정 클라우드 SDK의 모든 기본값",
        "정확히 한 번 처리 보장"
      ],
      "evidence_ids": [
        "S1"
      ],
      "transition_to_next": "이 답을 바탕으로 다음 독자 질문으로 자연스럽게 연결한다."
    },
    {
      "id": "02-context-problem",
      "intent": "context_problem",
      "title": "문제가 생기는 맥락과 제약",
      "reader_question": "왜 이 문제가 실제 시스템에서 어려워지는가?",
      "purpose": "문제의 배경, 실패 양상, 제약을 구체화한다.",
      "must_include": [
        "현상",
        "원인 후보",
        "제약",
        "재시도의 부하 증폭",
        "멱등성",
        "지수 백오프",
        "지터",
        "재시도 한도",
        "성공 및 중단 기준"
      ],
      "evidence_ids": [
        "S2"
      ],
      "transition_to_next": "이 답을 바탕으로 다음 독자 질문으로 자연스럽게 연결한다."
    },
    {
      "id": "03-mental-model",
      "intent": "mental_model",
      "title": "핵심 판단 기준과 멘털 모델",
      "reader_question": "뒤의 세부사항을 이해하려면 어떤 모델이 필요한가?",
      "purpose": "낯선 개념을 익숙한 개념과 연결하고 판단 기준을 제시한다.",
      "must_include": [
        "용어 정의",
        "인과 관계",
        "판단 기준"
      ],
      "evidence_ids": [
        "S3"
      ],
      "transition_to_next": "이 답을 바탕으로 다음 독자 질문으로 자연스럽게 연결한다."
    },
    {
      "id": "04-mechanism",
      "intent": "mechanism",
      "title": "해결 방식이 동작하는 과정",
      "reader_question": "구성요소와 데이터 흐름은 어떻게 연결되는가?",
      "purpose": "선택한 접근법의 메커니즘을 단계적 인과 사슬로 설명한다.",
      "must_include": [
        "구성요소",
        "데이터 또는 제어 흐름",
        "불변조건",
        "재시도의 부하 증폭",
        "멱등성",
        "지수 백오프",
        "지터",
        "재시도 한도",
        "성공 및 중단 기준"
      ],
      "evidence_ids": [
        "S1"
      ],
      "transition_to_next": "이 답을 바탕으로 다음 독자 질문으로 자연스럽게 연결한다."
    },
    {
      "id": "05-worked-example",
      "intent": "worked_example",
      "title": "끝까지 따라가는 구현 예시",
      "reader_question": "구체적인 입력이 어떻게 결과로 바뀌는가?",
      "purpose": "시작 상태부터 검증 가능한 결과까지 하나의 예시를 완주한다.",
      "must_include": [
        "초기 조건",
        "단계별 변화",
        "최종 결과",
        "재시도의 부하 증폭",
        "멱등성",
        "지수 백오프",
        "지터",
        "재시도 한도",
        "성공 및 중단 기준"
      ],
      "evidence_ids": [
        "S2"
      ],
      "transition_to_next": "이 답을 바탕으로 다음 독자 질문으로 자연스럽게 연결한다."
    },
    {
      "id": "06-evidence-verification",
      "intent": "evidence_verification",
      "title": "어떻게 검증할 것인가",
      "reader_question": "주장이 맞고 구현이 동작한다는 것을 어떻게 확인하는가?",
      "purpose": "관측값, 테스트, 성공 기준을 명시한다.",
      "must_include": [
        "검증 절차",
        "성공 기준",
        "관측 지표",
        "재시도의 부하 증폭",
        "멱등성",
        "지수 백오프",
        "지터",
        "재시도 한도",
        "성공 및 중단 기준"
      ],
      "evidence_ids": [
        "S3"
      ],
      "transition_to_next": "이 답을 바탕으로 다음 독자 질문으로 자연스럽게 연결한다."
    },
    {
      "id": "07-tradeoffs",
      "intent": "tradeoffs",
      "title": "대안, 트레이드오프, 실패 조건",
      "reader_question": "언제 이 접근법을 선택하지 말아야 하는가?",
      "purpose": "대안과 비용, 한계, 실패 조건을 함께 제시한다.",
      "must_include": [
        "대안",
        "얻는 것과 잃는 것",
        "적용 한계"
      ],
      "evidence_ids": [
        "S1"
      ],
      "transition_to_next": "이 답을 바탕으로 다음 독자 질문으로 자연스럽게 연결한다."
    },
    {
      "id": "08-action",
      "intent": "action",
      "title": "실무 적용 체크리스트",
      "reader_question": "독자가 자신의 환경에서 무엇부터 확인해야 하는가?",
      "purpose": "결정을 실제 행동으로 전환하는 짧은 체크리스트를 제공한다.",
      "must_include": [
        "사전 점검",
        "점진적 적용",
        "중단 또는 롤백 기준"
      ],
      "evidence_ids": [],
      "transition_to_next": "이 답을 바탕으로 다음 독자 질문으로 자연스럽게 연결한다."
    },
    {
      "id": "09-conclusion",
      "intent": "conclusion",
      "title": "결론",
      "reader_question": "독자가 기억해야 할 하나의 판단은 무엇인가?",
      "purpose": "핵심 메시지를 반복이 아닌 압축된 판단으로 마무리한다.",
      "must_include": [
        "핵심 판단",
        "다음 행동"
      ],
      "evidence_ids": [],
      "transition_to_next": "이 답을 바탕으로 다음 독자 질문으로 자연스럽게 연결한다."
    }
  ],
  "planning_notes": [
    "Each section answers one reader question.",
    "The order moves from reader goal to context, model, mechanism, evidence, limits, and action as applicable.",
    "Required section intents are a contract; a model may refine wording but must not remove or reorder them."
  ]
}
