{ "version": "1.1", "id": "grpc-policy-f03", "audience": [ "플랫폼 어댑터를 읽는 사람" ], "source_context": { "document": "docs/clean-architecture-backend-template/final/document.md", "document_sha256": "8071fe71b3359d9cf60b95909c26c7b50653ce2f22bbc5fcf6988719bb91236d", "anchor": { "kind": "line", "value": 23467, "line": 23467 } }, "groups": [], "legend": [], "metadata": {}, "title": "두 자리가 가리키는 대상", "question": "DROP_OLDEST 에서 제거되는 것과 차감되는 값은 같은 것인가?", "type": "data-flow", "direction": "LR", "summary": "큐에서 빠지는 것은 가장 오래된 봉투인데 queuedBytes 에서 빠지는 것은 새 메시지의 바이트다.", "alt": "DROP_OLDEST 승인에서 가장 오래된 봉투로 큐 제거 화살표가 가고 queuedBytes 로는 차감 화살표가 간다. 봉투의 바이트는 차감되지 않는다.", "long_description": "SSOT 는 queuedBytes = Math.max(0, queuedBytes - nextBytes) 에서 nextBytes 가 들어오는 메시지 크기라고 적는다. DROP_OLDEST 프로파일에서 10바이트를 버리며 10,000바이트를 넣으면 queuedBytes 는 변화가 없는데 실제 큐는 9,990바이트 늘어난다. 반복되면 바이트 경계가 발화하지 않는다.", "composition": { "profile": "component-flow", "diagram_only": true, "reference_ids": [ "payment-event-flow" ], "rationale": "제거 대상과 차감 대상이 다른 곳을 가리키는 것이 논지다.", "focus_node": "bytes" }, "nodes": [ { "id": "drop", "label": "DROP_OLDEST 승인", "kind": "service", "role": "source", "evidence": [ { "start_line": 23488, "end_line": 23488 } ], "assumption": false }, { "id": "oldest", "label": "가장 오래된 봉투", "kind": "service", "role": "sink", "evidence": [ { "start_line": 23488, "end_line": 23488 } ], "assumption": false, "details": [ "바이트 미차감" ] }, { "id": "bytes", "label": "queuedBytes", "kind": "store", "role": "service", "evidence": [ { "start_line": 23467, "end_line": 23467 } ], "assumption": false, "emphasis": "primary", "details": [ "새 메시지 바이트만 차감" ] } ], "edges": [ { "id": "a", "from": "drop", "to": "oldest", "label": "큐 제거", "kind": "request", "evidence": [ { "start_line": 23488, "end_line": 23488 } ], "assumption": false, "emphasis": "primary" }, { "id": "b", "from": "drop", "to": "bytes", "label": "차감", "kind": "data", "evidence": [ { "start_line": 23467, "end_line": 23467 } ], "assumption": false } ] }