digraph techviz { graph [rankdir=LR, splines=ortho, nodesep=0.55, ranksep=0.85]; node [fontname=Helvetica, fontsize=11, margin="0.18,0.12", style="rounded,filled", fillcolor=white, color="#2d4357", penwidth=1.5]; edge [fontname=Helvetica, fontsize=10, color="#364b5f", penwidth=1.4, arrowsize=0.75]; n0 [label="클라이언트", shape=box, style="rounded,dashed,filled"]; n1 [label="인증 게이트웨이", shape=box, style="rounded,filled"]; n2 [label="체크아웃 API", shape=box, style="rounded,filled"]; n3 [label="PostgreSQL 주문 저장소", shape=cylinder, style="rounded,filled"]; n4 [label="결제 제공자 API", shape=box, style="rounded,filled"]; n5 [label="이벤트 버스", shape=oval, style="rounded,filled"]; n0 -> n1 [label="HTTPS 결제 요청", style=solid]; n1 -> n2 [label="검증된 요청 전달", style=solid]; n2 -> n3 [label="PENDING 주문 기록", style=solid]; n2 -> n4 [label="승인 요청", style=solid]; n4 -> n2 [label="승인 응답", style=solid]; n2 -> n3 [label="PAID 상태 갱신", style=solid]; n2 -> n5 [label="payment.approved 발행", style=dashed]; }