{ "version": "1.1", "id": "application-core-c04", "audience": [ "플랫폼 어댑터를 읽는 사람" ], "source_context": { "document": "docs/clean-architecture-backend-template/final/document.md", "document_sha256": "8071fe71b3359d9cf60b95909c26c7b50653ce2f22bbc5fcf6988719bb91236d", "anchor": { "kind": "line", "value": 22371, "line": 22371 } }, "groups": [], "legend": [], "metadata": {}, "title": "응답을 잃은 구간을 맡는 세 장치", "question": "효과는 일어났는데 응답만 잃은 구간을 무엇이 맡는가?", "type": "dependency", "direction": "LR", "summary": "응답 유실 구간을 멱등성·inbox·outbox 셋이 나눠 맡고 어느 쪽도 불확실을 성공이나 실패로 접지 않는다.", "alt": "응답 유실 구간에서 idempotency V2 와 inbox 와 outbox 로 갈라진다.", "long_description": "SSOT §7.1 은 outbox·inbox 체인이 만족되지 않는 조건 뒤에 있다고 적는다. 세 장치는 효과가 이미 일어났을 수 있는데 응답만 잃은 구간을 나눠 맡고, 어느 쪽도 불확실을 성공이나 실패로 접지 않는다.", "composition": { "profile": "component-flow", "diagram_only": true, "reference_ids": [ "payment-event-flow" ], "rationale": "한 구간이 세 장치로 나뉘는 분담 방향이 논지다.", "focus_node": "gap" }, "nodes": [ { "id": "gap", "label": "응답 유실 구간", "kind": "service", "role": "source", "evidence": [ { "start_line": 22371, "end_line": 22380 } ], "assumption": false, "emphasis": "primary" }, { "id": "idem", "label": "idempotency V2", "kind": "service", "role": "sink", "evidence": [ { "start_line": 22371, "end_line": 22390 } ], "assumption": false }, { "id": "inbox", "label": "inbox", "kind": "service", "role": "sink", "evidence": [ { "start_line": 22371, "end_line": 22390 } ], "assumption": false }, { "id": "outbox", "label": "outbox", "kind": "service", "role": "sink", "evidence": [ { "start_line": 22371, "end_line": 22390 } ], "assumption": false } ], "edges": [ { "id": "a", "from": "gap", "to": "idem", "label": "owner-safe CAS", "kind": "request", "evidence": [ { "start_line": 22371, "end_line": 22390 } ], "assumption": false }, { "id": "b", "from": "gap", "to": "inbox", "label": "owner-safe 수신 상태", "kind": "request", "evidence": [ { "start_line": 22371, "end_line": 22390 } ], "assumption": false }, { "id": "c", "from": "gap", "to": "outbox", "label": "at-least-once 발행", "kind": "request", "evidence": [ { "start_line": 22371, "end_line": 22390 } ], "assumption": false } ] }