271 lines
26 KiB
Plaintext
271 lines
26 KiB
Plaintext
<mxfile host="app.diagrams.net" modified="2026-05-08T00:00:00.000Z" agent="Mozilla/5.0" version="24.0.0" type="device">
|
|
<diagram name="s14-traffic-flow" id="traffic-flow">
|
|
<mxGraphModel dx="1600" dy="900" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1600" pageHeight="900" math="0" shadow="0">
|
|
<root>
|
|
<mxCell id="0" />
|
|
<mxCell id="1" parent="0" />
|
|
|
|
<mxCell id="title" value="트래픽 흐름 — L7 라우팅 & TLS (SNI 기반 핸드셰이크)" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=26;fontStyle=1;fontFamily=Pretendard,Helvetica;" vertex="1" parent="1">
|
|
<mxGeometry x="60" y="36" width="1500" height="40" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="subtitle" value="TLS 단계 SNI 로 인증서 선택 → 복호화된 요청이 Router → Middleware → Service 그래프 통과" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=15;fontFamily=Pretendard,Helvetica;fontColor=#57606A;" vertex="1" parent="1">
|
|
<mxGeometry x="60" y="76" width="1500" height="22" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="grp-tls" value="① TLS 단계 — SNI 기반 인증서 선택" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FFF7ED;strokeColor=#FB923C;strokeWidth=1;fontSize=13;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#C2410C;align=left;verticalAlign=top;spacingLeft=10;spacingTop=6;" vertex="1" parent="1">
|
|
<mxGeometry x="40" y="120" width="1520" height="290" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="browser" value="" style="sketch=0;outlineConnect=0;fillColor=#232F3E;strokeColor=#232F3E;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;aspect=fixed;shape=mxgraph.aws4.user;" vertex="1" parent="1">
|
|
<mxGeometry x="120" y="220" width="60" height="60" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="browser-lbl" value="Browser" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=12;fontFamily=Pretendard,Helvetica;fontStyle=1;" vertex="1" parent="1">
|
|
<mxGeometry x="80" y="284" width="140" height="20" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="browser-sub" value="https://a.com/api/v1/users" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontFamily=monospace;fontColor=#57606A;" vertex="1" parent="1">
|
|
<mxGeometry x="40" y="306" width="220" height="18" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="traefik" value="" style="shape=image;html=1;image=https://www.vectorlogo.zone/logos/traefikio/traefikio-icon.svg;imageAspect=1;" vertex="1" parent="1">
|
|
<mxGeometry x="700" y="210" width="80" height="80" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="traefik-lbl" value="Traefik (TLS 종단)" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=12;fontFamily=Pretendard,Helvetica;fontStyle=1;" vertex="1" parent="1">
|
|
<mxGeometry x="660" y="294" width="160" height="20" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="certpool" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#FB923C;strokeWidth=2;" vertex="1" parent="1">
|
|
<mxGeometry x="900" y="150" width="380" height="100" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="certpool-title" value="Cert Pool (TLS Store)" style="text;html=1;align=left;verticalAlign=top;whiteSpace=wrap;fontSize=12;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#C2410C;spacingLeft=12;spacingTop=8;" vertex="1" parent="1">
|
|
<mxGeometry x="900" y="150" width="380" height="22" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="certpool-l1" value="• tls-a-com → CN=a.com" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=11;fontFamily=monospace;fontColor=#24292F;spacingLeft=18;" vertex="1" parent="1">
|
|
<mxGeometry x="900" y="178" width="380" height="20" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="certpool-l2" value="• tls-b-com → CN=b.com" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=11;fontFamily=monospace;fontColor=#24292F;spacingLeft=18;" vertex="1" parent="1">
|
|
<mxGeometry x="900" y="200" width="380" height="20" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="certpool-l3" value="• tls-wildcard → CN=*.dev.com" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=11;fontFamily=monospace;fontColor=#24292F;spacingLeft=18;" vertex="1" parent="1">
|
|
<mxGeometry x="900" y="222" width="380" height="20" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="tlsopt" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#FB923C;strokeWidth=2;" vertex="1" parent="1">
|
|
<mxGeometry x="900" y="270" width="380" height="105" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="tlsopt-title" value="TLSOption: modern-tls" style="text;html=1;align=left;verticalAlign=top;whiteSpace=wrap;fontSize=12;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#C2410C;spacingLeft=12;spacingTop=8;" vertex="1" parent="1">
|
|
<mxGeometry x="900" y="270" width="380" height="22" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="tlsopt-l1" value="• minVersion: VersionTLS12" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=11;fontFamily=monospace;fontColor=#24292F;spacingLeft=18;" vertex="1" parent="1">
|
|
<mxGeometry x="900" y="298" width="380" height="20" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="tlsopt-l2" value="• sniStrict: true" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=11;fontFamily=monospace;fontColor=#24292F;spacingLeft=18;" vertex="1" parent="1">
|
|
<mxGeometry x="900" y="320" width="380" height="20" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="tlsopt-l3" value="• cipherSuites: [ECDHE_*_GCM]" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=11;fontFamily=monospace;fontColor=#24292F;spacingLeft=18;" vertex="1" parent="1">
|
|
<mxGeometry x="900" y="342" width="380" height="20" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="cert-note" value="✓ 한 IP 가 N 개 도메인 인증서를
SNI hostname 으로 분기 선택" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFEDD5;strokeColor=#FB923C;strokeWidth=1;dashed=1;fontSize=11;fontStyle=2;fontFamily=Pretendard,Helvetica;fontColor=#C2410C;align=center;verticalAlign=middle;" vertex="1" parent="1">
|
|
<mxGeometry x="1320" y="180" width="220" height="60" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="tlsopt-note" value="✓ 프로토콜 버전 / cipher 정책
= 보안 baseline 의 단일 출처" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFEDD5;strokeColor=#FB923C;strokeWidth=1;dashed=1;fontSize=11;fontStyle=2;fontFamily=Pretendard,Helvetica;fontColor=#C2410C;align=center;verticalAlign=middle;" vertex="1" parent="1">
|
|
<mxGeometry x="1320" y="295" width="220" height="55" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="e-ch" style="endArrow=classic;html=1;strokeColor=#C2410C;strokeWidth=3;fontFamily=Pretendard,Helvetica;exitX=1;exitY=0.2;exitDx=0;exitDy=0;entryX=0;entryY=0.2;entryDx=0;entryDy=0;" edge="1" parent="1" source="browser" target="traefik">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="num1" value="①" style="ellipse;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#C2410C;fontColor=#C2410C;fontSize=13;fontStyle=1;fontFamily=Pretendard,Helvetica;strokeWidth=2;" vertex="1" parent="1">
|
|
<mxGeometry x="395" y="217" width="24" height="24" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="e-ch-lbl" value="ClientHello { server_name: a.com }" style="text;html=1;align=center;verticalAlign=middle;fontSize=11;fontFamily=Pretendard,Helvetica;fontColor=#C2410C;fillColor=#FFFFFF;" vertex="1" parent="1">
|
|
<mxGeometry x="220" y="195" width="320" height="18" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="e-lookup" style="endArrow=classic;startArrow=classic;html=1;strokeColor=#C2410C;strokeWidth=2;dashed=1;fontFamily=Pretendard,Helvetica;exitX=1;exitY=0.3;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="traefik" target="certpool">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="num2" value="②" style="ellipse;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#C2410C;fontColor=#C2410C;fontSize=13;fontStyle=1;fontFamily=Pretendard,Helvetica;strokeWidth=2;" vertex="1" parent="1">
|
|
<mxGeometry x="828" y="190" width="24" height="24" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="e-lookup-lbl" value="SNI 로 cert 선택" style="text;html=1;align=center;verticalAlign=middle;fontSize=11;fontFamily=Pretendard,Helvetica;fontColor=#C2410C;fillColor=#FFFFFF;" vertex="1" parent="1">
|
|
<mxGeometry x="790" y="170" width="120" height="18" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="e-sh" style="endArrow=classic;html=1;strokeColor=#C2410C;strokeWidth=3;fontFamily=Pretendard,Helvetica;exitX=0;exitY=0.7;exitDx=0;exitDy=0;entryX=1;entryY=0.7;entryDx=0;entryDy=0;" edge="1" parent="1" source="traefik" target="browser">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="num3" value="③" style="ellipse;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#C2410C;fontColor=#C2410C;fontSize=13;fontStyle=1;fontFamily=Pretendard,Helvetica;strokeWidth=2;" vertex="1" parent="1">
|
|
<mxGeometry x="395" y="251" width="24" height="24" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="e-sh-lbl" value="ServerHello + Cert(a.com) + cipher 협상" style="text;html=1;align=center;verticalAlign=middle;fontSize=11;fontFamily=Pretendard,Helvetica;fontColor=#C2410C;fillColor=#FFFFFF;" vertex="1" parent="1">
|
|
<mxGeometry x="195" y="280" width="380" height="18" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="e-enc" style="endArrow=classic;startArrow=classic;html=1;strokeColor=#15803D;strokeWidth=4;fontFamily=Pretendard,Helvetica;" edge="1" parent="1">
|
|
<mxGeometry relative="1" as="geometry">
|
|
<mxPoint x="180" y="370" as="sourcePoint" />
|
|
<mxPoint x="700" y="370" as="targetPoint" />
|
|
</mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="num4" value="④" style="ellipse;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#15803D;fontColor=#15803D;fontSize=13;fontStyle=1;fontFamily=Pretendard,Helvetica;strokeWidth=2;" vertex="1" parent="1">
|
|
<mxGeometry x="425" y="358" width="24" height="24" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="e-enc-lbl" value="암호화된 GET /api/v1/users — TLSOption 적용 (TLS 1.2+ · ECDHE)" style="text;html=1;align=center;verticalAlign=middle;fontSize=11;fontFamily=Pretendard,Helvetica;fontColor=#15803D;fillColor=#FFFFFF;fontStyle=1;" vertex="1" parent="1">
|
|
<mxGeometry x="160" y="386" width="560" height="18" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="decrypt-arrow" style="endArrow=classic;html=1;strokeColor=#1E40AF;strokeWidth=4;fontFamily=Pretendard,Helvetica;" edge="1" parent="1">
|
|
<mxGeometry relative="1" as="geometry">
|
|
<Array as="points">
|
|
<mxPoint x="740" y="440" />
|
|
<mxPoint x="240" y="440" />
|
|
</Array>
|
|
<mxPoint x="740" y="290" as="sourcePoint" />
|
|
<mxPoint x="240" y="510" as="targetPoint" />
|
|
</mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="num5" value="⑤" style="ellipse;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#1E40AF;fontColor=#1E40AF;fontSize=13;fontStyle=1;fontFamily=Pretendard,Helvetica;strokeWidth=2;" vertex="1" parent="1">
|
|
<mxGeometry x="478" y="428" width="24" height="24" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="decrypt-lbl" value="복호화된 HTTP 요청 (Router 그래프 진입)" style="text;html=1;align=center;verticalAlign=middle;fontSize=11;fontFamily=Pretendard,Helvetica;fontColor=#1E40AF;fillColor=#FFFFFF;fontStyle=1;" vertex="1" parent="1">
|
|
<mxGeometry x="510" y="428" width="280" height="22" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="grp-l7" value="② L7 단계 — Router · Middleware · Service 그래프 (Traefik 내부)" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#EFF6FF;strokeColor=#3B82F6;strokeWidth=2;fontSize=13;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#1E40AF;align=left;verticalAlign=top;spacingLeft=10;spacingTop=6;" vertex="1" parent="1">
|
|
<mxGeometry x="40" y="460" width="1300" height="320" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="router-bg" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#DBEAFE;strokeColor=#1E40AF;strokeWidth=2;" vertex="1" parent="1">
|
|
<mxGeometry x="80" y="510" width="320" height="240" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="router-title" value="Router" style="text;html=1;align=center;verticalAlign=top;whiteSpace=wrap;fontSize=14;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#1E40AF;spacingTop=10;" vertex="1" parent="1">
|
|
<mxGeometry x="80" y="510" width="320" height="28" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="router-match" value="match:
 Host: a.com
 Path: /api/v1/users
 PathType: Prefix" style="text;html=1;align=left;verticalAlign=top;whiteSpace=wrap;fontSize=11;fontFamily=monospace;fontColor=#1E40AF;spacingLeft=18;" vertex="1" parent="1">
|
|
<mxGeometry x="90" y="546" width="300" height="78" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="pathtype-divider" value="" style="endArrow=none;html=1;strokeColor=#1E40AF;strokeWidth=1;dashed=1;" edge="1" parent="1">
|
|
<mxGeometry relative="1" as="geometry">
|
|
<mxPoint x="100" y="630" as="sourcePoint" />
|
|
<mxPoint x="380" y="630" as="targetPoint" />
|
|
</mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="pathtype-title" value="PathType 비교" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=11;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#1E40AF;spacingLeft=10;" vertex="1" parent="1">
|
|
<mxGeometry x="90" y="638" width="300" height="20" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="pt-prefix" value="• Prefix → /api 입력 시 /api · /api/v1 · /api/v1/u 모두 매칭" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=11;fontFamily=Pretendard,Helvetica;fontColor=#24292F;spacingLeft=10;" vertex="1" parent="1">
|
|
<mxGeometry x="90" y="660" width="300" height="20" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="pt-exact" value="• Exact → /api 만 매칭, /api/v1 은 미매칭" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=11;fontFamily=Pretendard,Helvetica;fontColor=#24292F;spacingLeft=10;" vertex="1" parent="1">
|
|
<mxGeometry x="90" y="682" width="300" height="20" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="pt-isp" value="• ImplementationSpecific → controller 별 해석 (legacy default)" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=11;fontFamily=Pretendard,Helvetica;fontColor=#57606A;fontStyle=2;spacingLeft=10;" vertex="1" parent="1">
|
|
<mxGeometry x="90" y="704" width="300" height="20" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="pt-note" value="✓ Host + Path 매칭에서 분기 결정 — 미매칭 = 404" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontStyle=2;fontFamily=Pretendard,Helvetica;fontColor=#1E40AF;" vertex="1" parent="1">
|
|
<mxGeometry x="90" y="726" width="300" height="18" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="mw-bg" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#DBEAFE;strokeColor=#1E40AF;strokeWidth=2;" vertex="1" parent="1">
|
|
<mxGeometry x="440" y="510" width="460" height="240" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="mw-title" value="Middleware Chain (선언 순서대로 적용)" style="text;html=1;align=center;verticalAlign=top;whiteSpace=wrap;fontSize=14;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#1E40AF;spacingTop=10;" vertex="1" parent="1">
|
|
<mxGeometry x="440" y="510" width="460" height="28" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="mw1" value="auth
(ForwardAuth)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#1E40AF;strokeWidth=2;fontSize=12;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#1E40AF;align=center;verticalAlign=middle;" vertex="1" parent="1">
|
|
<mxGeometry x="460" y="580" width="130" height="70" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="mw2" value="rate-limit
(100 rps)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#1E40AF;strokeWidth=2;fontSize=12;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#1E40AF;align=center;verticalAlign=middle;" vertex="1" parent="1">
|
|
<mxGeometry x="605" y="580" width="130" height="70" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="mw3" value="headers
(HSTS · X-Frame)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#1E40AF;strokeWidth=2;fontSize=12;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#1E40AF;align=center;verticalAlign=middle;" vertex="1" parent="1">
|
|
<mxGeometry x="750" y="580" width="130" height="70" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="e-mw1-mw2" style="endArrow=classic;html=1;strokeColor=#1E40AF;strokeWidth=2;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="mw1" target="mw2">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="e-mw2-mw3" style="endArrow=classic;html=1;strokeColor=#1E40AF;strokeWidth=2;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="mw2" target="mw3">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="mw-note" value="✓ 단계마다 거부 가능 (4xx) — 통과 시에만 다음 미들웨어로
✓ Traefik 의 Middleware CRD = 재사용 가능한 정책 빌딩블록" style="text;html=1;align=center;verticalAlign=top;whiteSpace=wrap;fontSize=11;fontStyle=2;fontFamily=Pretendard,Helvetica;fontColor=#1E40AF;" vertex="1" parent="1">
|
|
<mxGeometry x="450" y="670" width="440" height="40" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="mw-note2" value="auth · rate-limit · header · circuitbreaker · ip-allowlist · ..." style="text;html=1;align=center;verticalAlign=top;whiteSpace=wrap;fontSize=10;fontStyle=2;fontFamily=monospace;fontColor=#57606A;" vertex="1" parent="1">
|
|
<mxGeometry x="450" y="715" width="440" height="20" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="svc-bg" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#DBEAFE;strokeColor=#1E40AF;strokeWidth=2;" vertex="1" parent="1">
|
|
<mxGeometry x="940" y="510" width="320" height="240" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="svc-title" value="Service" style="text;html=1;align=center;verticalAlign=top;whiteSpace=wrap;fontSize=14;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#1E40AF;spacingTop=10;" vertex="1" parent="1">
|
|
<mxGeometry x="940" y="510" width="320" height="28" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="svc-body" value="endpoints:
 - auth-server-svc:8080
loadBalancer:
 algorithm: round-robin
healthCheck:
 path: /actuator/health" style="text;html=1;align=left;verticalAlign=top;whiteSpace=wrap;fontSize=11;fontFamily=monospace;fontColor=#1E40AF;spacingLeft=20;" vertex="1" parent="1">
|
|
<mxGeometry x="950" y="546" width="300" height="120" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="svc-note" value="✓ K8s Endpoint 자동 동기화
Pod 추가/제거 즉시 반영" style="text;html=1;align=center;verticalAlign=top;whiteSpace=wrap;fontSize=11;fontStyle=2;fontFamily=Pretendard,Helvetica;fontColor=#1E40AF;" vertex="1" parent="1">
|
|
<mxGeometry x="950" y="685" width="300" height="40" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="e-r-mw" style="endArrow=classic;html=1;strokeColor=#1E40AF;strokeWidth=3;fontFamily=Pretendard,Helvetica;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="router-bg" target="mw1">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="num6" value="⑥" style="ellipse;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#1E40AF;fontColor=#1E40AF;fontSize=13;fontStyle=1;fontFamily=Pretendard,Helvetica;strokeWidth=2;" vertex="1" parent="1">
|
|
<mxGeometry x="418" y="603" width="24" height="24" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="e-r-mw-lbl" value="match 통과" style="text;html=1;align=center;verticalAlign=middle;fontSize=11;fontFamily=Pretendard,Helvetica;fontColor=#1E40AF;fillColor=#FFFFFF;" vertex="1" parent="1">
|
|
<mxGeometry x="395" y="630" width="80" height="18" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="e-mw-svc" style="endArrow=classic;html=1;strokeColor=#1E40AF;strokeWidth=3;fontFamily=Pretendard,Helvetica;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="mw3" target="svc-bg">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="num7" value="⑦" style="ellipse;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#1E40AF;fontColor=#1E40AF;fontSize=13;fontStyle=1;fontFamily=Pretendard,Helvetica;strokeWidth=2;" vertex="1" parent="1">
|
|
<mxGeometry x="908" y="603" width="24" height="24" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="e-mw-svc-lbl" value="체인 통과" style="text;html=1;align=center;verticalAlign=middle;fontSize=11;fontFamily=Pretendard,Helvetica;fontColor=#1E40AF;fillColor=#FFFFFF;" vertex="1" parent="1">
|
|
<mxGeometry x="888" y="630" width="80" height="18" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="grp-bk" value="Backend Pods" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ECFDF5;strokeColor=#10B981;strokeWidth=2;fontSize=12;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#047857;align=left;verticalAlign=top;spacingLeft=10;spacingTop=6;" vertex="1" parent="1">
|
|
<mxGeometry x="1360" y="460" width="200" height="320" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="pod1" value="Pod 1
auth-server" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#15803D;strokeWidth=2;fontSize=12;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#15803D;align=center;verticalAlign=middle;" vertex="1" parent="1">
|
|
<mxGeometry x="1380" y="510" width="160" height="60" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="pod2" value="Pod 2
auth-server" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#15803D;strokeWidth=2;fontSize=12;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#15803D;align=center;verticalAlign=middle;" vertex="1" parent="1">
|
|
<mxGeometry x="1380" y="590" width="160" height="60" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="pod3" value="Pod 3
auth-server" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#15803D;strokeWidth=2;fontSize=12;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#15803D;align=center;verticalAlign=middle;" vertex="1" parent="1">
|
|
<mxGeometry x="1380" y="670" width="160" height="60" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="e-svc-pod1" style="endArrow=classic;html=1;strokeColor=#15803D;strokeWidth=2;fontFamily=Pretendard,Helvetica;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="svc-bg" target="pod1">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="e-svc-pod2" style="endArrow=classic;html=1;strokeColor=#15803D;strokeWidth=2;fontFamily=Pretendard,Helvetica;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="svc-bg" target="pod2">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="e-svc-pod3" style="endArrow=classic;html=1;strokeColor=#15803D;strokeWidth=2;fontFamily=Pretendard,Helvetica;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="svc-bg" target="pod3">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="num8" value="⑧" style="ellipse;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#15803D;fontColor=#15803D;fontSize=13;fontStyle=1;fontFamily=Pretendard,Helvetica;strokeWidth=2;" vertex="1" parent="1">
|
|
<mxGeometry x="1300" y="618" width="24" height="24" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="e-svc-pods-lbl" value="LB fan-out
(round-robin)" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=11;fontFamily=Pretendard,Helvetica;fontColor=#15803D;fillColor=#FFFFFF;fontStyle=1;" vertex="1" parent="1">
|
|
<mxGeometry x="1276" y="643" width="80" height="36" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="caption-bg" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#F6F8FA;strokeColor=#D0D7DE;" vertex="1" parent="1">
|
|
<mxGeometry x="40" y="800" width="1520" height="44" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="caption" value="TLS 단계: SNI 로 cert 선택 + TLSOption 적용 → 복호화 후 Router(Host/Path 매칭) → Middleware 체인 → Service(Pod 묶음)" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=14;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#24292F;" vertex="1" parent="1">
|
|
<mxGeometry x="40" y="800" width="1520" height="44" as="geometry" />
|
|
</mxCell>
|
|
|
|
</root>
|
|
</mxGraphModel>
|
|
</diagram>
|
|
</mxfile>
|