<?xml version="1.0" encoding="UTF-8"?>
<mxfile host="app.diagrams.net">
<diagram name="CA v2 — Cloud Architecture" id="ca-v2"><mxGraphModel dx="1400" dy="900" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="2010" pageHeight="1240" math="0" shadow="0" background="#FFFFFF"><root><mxCell id="0"/><mxCell id="1" parent="0"/>
<mxCell id="ttl" value="FillMap · Cloud Architecture v2 (2026.07) — AWS ap-northeast-2 · Multi-AZ · fillmap.kr" style="text;html=1;strokeColor=none;fillColor=none;align=left;fontSize=17;fontStyle=1;fontColor=#232F3E;" vertex="1" parent="1"><mxGeometry x="20" y="8" width="960" height="26" as="geometry"/></mxCell>
<mxCell id="a1" value="사용자" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;fontSize=10;fontStyle=1;strokeColor=#232F3E;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="30" y="290" width="30" height="55" as="geometry"/></mxCell>
<mxCell id="a2" value="운영자" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;fontSize=10;fontStyle=1;strokeColor=#232F3E;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="30" y="410" width="30" height="55" as="geometry"/></mxCell>
<mxCell id="b3" value="Mobile · Web Client&#10;(React Native · React)" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#232F3E;strokeWidth=1;fontSize=10;fontColor=#232F3E;shadow=1;" vertex="1" parent="1"><mxGeometry x="100" y="325" width="155" height="62" as="geometry"/></mxCell>
<mxCell id="g6" value="AWS Cloud" style="shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_aws_cloud_alt;grStroke=1;rounded=0;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#232F3E;strokeWidth=1.3;dashed=0;verticalAlign=top;align=left;spacingLeft=30;spacingTop=2;fontSize=10.5;fontStyle=1;fontColor=#232F3E;" vertex="1" parent="1"><mxGeometry x="300" y="60" width="1650" height="1010" as="geometry"/></mxCell>
<mxCell id="g7" value="Region · ap-northeast-2" style="shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_region;grStroke=1;rounded=0;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#00A4A6;strokeWidth=1.3;dashed=1;verticalAlign=top;align=left;spacingLeft=30;spacingTop=2;fontSize=10.5;fontStyle=1;fontColor=#00A4A6;" vertex="1" parent="1"><mxGeometry x="320" y="100" width="1340" height="950" as="geometry"/></mxCell>
<mxCell id="i8" value="Route 53&#10;fillmap.kr" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=#945DF2;gradientDirection=north;fillColor=#4D27AA;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=9.5;fontStyle=1;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.route_53;" vertex="1" parent="1"><mxGeometry x="360" y="170" width="50" height="50" as="geometry"/></mxCell>
<mxCell id="i9" value="CloudFront&#10;static.fillmap.kr" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=#945DF2;gradientDirection=north;fillColor=#4D27AA;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=9.5;fontStyle=1;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.cloudfront;" vertex="1" parent="1"><mxGeometry x="360" y="320" width="50" height="50" as="geometry"/></mxCell>
<mxCell id="i10" value="S3 · 정적 웹" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=#60A337;gradientDirection=north;fillColor=#277116;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=9.5;fontStyle=1;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.s3;" vertex="1" parent="1"><mxGeometry x="360" y="470" width="50" height="50" as="geometry"/></mxCell>
<mxCell id="g11" value="VPC · 10.0.0.0/16" style="shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_vpc2;grStroke=1;rounded=0;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#8C4FFF;strokeWidth=1.3;dashed=0;verticalAlign=top;align=left;spacingLeft=30;spacingTop=2;fontSize=10.5;fontStyle=1;fontColor=#8C4FFF;" vertex="1" parent="1"><mxGeometry x="510" y="140" width="1120" height="890" as="geometry"/></mxCell>
<mxCell id="i12" value="Internet&#10;Gateway" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=#945DF2;gradientDirection=north;fillColor=#4D27AA;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=9.5;fontStyle=1;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.internet_gateway;" vertex="1" parent="1"><mxGeometry x="1048" y="170" width="50" height="50" as="geometry"/></mxCell>
<mxCell id="i13" value="AWS WAF&#10;(ALB·CloudFront)&#10;= SysA API Gateway" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=#F54749;gradientDirection=north;fillColor=#C7131F;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=9.5;fontStyle=1;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.waf;" vertex="1" parent="1"><mxGeometry x="1048" y="375" width="50" height="50" as="geometry"/></mxCell>
<mxCell id="i14" value="ALB&#10;(Active-Active)&#10;= SysA API Gateway" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=#945DF2;gradientDirection=north;fillColor=#4D27AA;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=9.5;fontStyle=1;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.elastic_load_balancing;" vertex="1" parent="1"><mxGeometry x="1048" y="622" width="50" height="50" as="geometry"/></mxCell>
<mxCell id="g15" value="가용영역 a" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#147EBA;strokeWidth=1.3;dashed=1;verticalAlign=top;align=left;spacingLeft=8;spacingTop=2;fontSize=10.5;fontStyle=1;fontColor=#147EBA;" vertex="1" parent="1"><mxGeometry x="545" y="425" width="460" height="585" as="geometry"/></mxCell>
<mxCell id="g16" value="가용영역 c" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#147EBA;strokeWidth=1.3;dashed=1;verticalAlign=top;align=left;spacingLeft=8;spacingTop=2;fontSize=10.5;fontStyle=1;fontColor=#147EBA;" vertex="1" parent="1"><mxGeometry x="1140" y="425" width="460" height="585" as="geometry"/></mxCell>
<mxCell id="g17" value="Public subnet" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#F2F6E8;strokeColor=#7AA116;strokeWidth=1.3;dashed=0;verticalAlign=top;align=left;spacingLeft=8;spacingTop=2;fontSize=10.5;fontStyle=1;fontColor=#7AA116;" vertex="1" parent="1"><mxGeometry x="565" y="455" width="420" height="112" as="geometry"/></mxCell>
<mxCell id="i18" value="NAT Gateway" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=#945DF2;gradientDirection=north;fillColor=#4D27AA;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=9.5;fontStyle=1;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.nat_gateway;" vertex="1" parent="1"><mxGeometry x="730" y="478" width="50" height="50" as="geometry"/></mxCell>
<mxCell id="g19" value="Public subnet" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#F2F6E8;strokeColor=#7AA116;strokeWidth=1.3;dashed=0;verticalAlign=top;align=left;spacingLeft=8;spacingTop=2;fontSize=10.5;fontStyle=1;fontColor=#7AA116;" vertex="1" parent="1"><mxGeometry x="1160" y="455" width="420" height="112" as="geometry"/></mxCell>
<mxCell id="i20" value="NAT Gateway" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=#945DF2;gradientDirection=north;fillColor=#4D27AA;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=9.5;fontStyle=1;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.nat_gateway;" vertex="1" parent="1"><mxGeometry x="1325" y="478" width="50" height="50" as="geometry"/></mxCell>
<mxCell id="g21" value="Private subnet · App" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#E6F6F7;strokeColor=#00A4A6;strokeWidth=1.3;dashed=0;verticalAlign=top;align=left;spacingLeft=8;spacingTop=2;fontSize=10.5;fontStyle=1;fontColor=#00A4A6;" vertex="1" parent="1"><mxGeometry x="565" y="585" width="420" height="225" as="geometry"/></mxCell>
<mxCell id="i22" value="FastAPI&#10;AI 서버 (상시)" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=#F78E04;gradientDirection=north;fillColor=#D05C17;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=9.5;fontStyle=1;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.ec2;" vertex="1" parent="1"><mxGeometry x="592" y="622" width="50" height="50" as="geometry"/></mxCell>
<mxCell id="i23" value="Kafka&#10;(EC2)" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=#F78E04;gradientDirection=north;fillColor=#D05C17;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=9.5;fontStyle=1;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.ec2;" vertex="1" parent="1"><mxGeometry x="728" y="622" width="50" height="50" as="geometry"/></mxCell>
<mxCell id="i24" value="Spring Boot&#10;API #1" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=#F78E04;gradientDirection=north;fillColor=#D05C17;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=9.5;fontStyle=1;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.ec2;" vertex="1" parent="1"><mxGeometry x="864" y="622" width="50" height="50" as="geometry"/></mxCell>
<mxCell id="g25" value="Private subnet · App" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#E6F6F7;strokeColor=#00A4A6;strokeWidth=1.3;dashed=0;verticalAlign=top;align=left;spacingLeft=8;spacingTop=2;fontSize=10.5;fontStyle=1;fontColor=#00A4A6;" vertex="1" parent="1"><mxGeometry x="1160" y="585" width="420" height="225" as="geometry"/></mxCell>
<mxCell id="i26" value="Spring Boot&#10;API #2" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=#F78E04;gradientDirection=north;fillColor=#D05C17;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=9.5;fontStyle=1;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.ec2;" vertex="1" parent="1"><mxGeometry x="1190" y="622" width="50" height="50" as="geometry"/></mxCell>
<mxCell id="g27" value="Private subnet · Data" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FDF6E3;strokeColor=#D6A34A;strokeWidth=1.3;dashed=0;verticalAlign=top;align=left;spacingLeft=8;spacingTop=2;fontSize=10.5;fontStyle=1;fontColor=#D6A34A;" vertex="1" parent="1"><mxGeometry x="565" y="828" width="420" height="165" as="geometry"/></mxCell>
<mxCell id="i28" value="RDS PostgreSQL&#10;+PostGIS (Primary)" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=#4D72F3;gradientDirection=north;fillColor=#3334B9;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=9.5;fontStyle=1;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.rds;" vertex="1" parent="1"><mxGeometry x="592" y="864" width="50" height="50" as="geometry"/></mxCell>
<mxCell id="i29" value="ElastiCache&#10;Redis (Primary)" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=#4D72F3;gradientDirection=north;fillColor=#3334B9;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=9.5;fontStyle=1;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.elasticache;" vertex="1" parent="1"><mxGeometry x="756" y="864" width="50" height="50" as="geometry"/></mxCell>
<mxCell id="g30" value="Private subnet · Data" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FDF6E3;strokeColor=#D6A34A;strokeWidth=1.3;dashed=0;verticalAlign=top;align=left;spacingLeft=8;spacingTop=2;fontSize=10.5;fontStyle=1;fontColor=#D6A34A;" vertex="1" parent="1"><mxGeometry x="1160" y="828" width="420" height="165" as="geometry"/></mxCell>
<mxCell id="i31" value="RDS&#10;(Standby·Read)" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=#4D72F3;gradientDirection=north;fillColor=#3334B9;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=9.5;fontStyle=1;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.rds;" vertex="1" parent="1"><mxGeometry x="1190" y="864" width="50" height="50" as="geometry"/></mxCell>
<mxCell id="i32" value="ElastiCache&#10;(Replica)" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=#4D72F3;gradientDirection=north;fillColor=#3334B9;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=9.5;fontStyle=1;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.elasticache;" vertex="1" parent="1"><mxGeometry x="1354" y="864" width="50" height="50" as="geometry"/></mxCell>
<mxCell id="i33" value="S3&#10;영상 원본·인코딩본" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=#60A337;gradientDirection=north;fillColor=#277116;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=9.5;fontStyle=1;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.s3;" vertex="1" parent="1"><mxGeometry x="1710" y="230" width="50" height="50" as="geometry"/></mxCell>
<mxCell id="i34" value="ECR" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=#F78E04;gradientDirection=north;fillColor=#D05C17;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=9.5;fontStyle=1;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.ecr;" vertex="1" parent="1"><mxGeometry x="1710" y="390" width="50" height="50" as="geometry"/></mxCell>
<mxCell id="i35" value="Systems Manager&#10;(배포 Run Command)" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=#F34482;gradientDirection=north;fillColor=#BC1356;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=9.5;fontStyle=1;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.systems_manager;" vertex="1" parent="1"><mxGeometry x="1710" y="540" width="50" height="50" as="geometry"/></mxCell>
<mxCell id="i36" value="CloudWatch&#10;Logs·Metrics" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=#F34482;gradientDirection=north;fillColor=#BC1356;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=9.5;fontStyle=1;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.cloudwatch_2;" vertex="1" parent="1"><mxGeometry x="1710" y="700" width="50" height="50" as="geometry"/></mxCell>
<mxCell id="i37" value="Secrets&#10;Manager" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=#F54749;gradientDirection=north;fillColor=#C7131F;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=9.5;fontStyle=1;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.secrets_manager;" vertex="1" parent="1"><mxGeometry x="1710" y="850" width="50" height="50" as="geometry"/></mxCell>
<mxCell id="b38" value="GitHub · Actions&#10;(Build → Test → Push)" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#232F3E;strokeWidth=1;fontSize=10;fontColor=#232F3E;shadow=1;" vertex="1" parent="1"><mxGeometry x="100" y="1110" width="175" height="58" as="geometry"/></mxCell>
<mxCell id="b39" value="카카오 OAuth" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#232F3E;strokeWidth=1;fontSize=10;fontColor=#232F3E;shadow=1;" vertex="1" parent="1"><mxGeometry x="620" y="1120" width="135" height="46" as="geometry"/></mxCell>
<mxCell id="b40" value="네이버 지도 SDK" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#232F3E;strokeWidth=1;fontSize=10;fontColor=#232F3E;shadow=1;" vertex="1" parent="1"><mxGeometry x="780" y="1120" width="135" height="46" as="geometry"/></mxCell>
<mxCell id="b41" value="Firebase FCM (푸시)" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#232F3E;strokeWidth=1;fontSize=10;fontColor=#232F3E;shadow=1;" vertex="1" parent="1"><mxGeometry x="940" y="1120" width="145" height="46" as="geometry"/></mxCell>
<mxCell id="lg" value="" style="rounded=1;arcSize=6;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#D3D3D3;strokeWidth=1;shadow=1;" vertex="1" parent="1"><mxGeometry x="1310" y="1105" width="620" height="72" as="geometry"/></mxCell>
<mxCell id="lgl0" value="" style="endArrow=blockThin;endFill=1;endSize=5;html=1;strokeColor=#232F3E;strokeWidth=1.6;" edge="1" parent="1"><mxGeometry relative="1" as="geometry"><mxPoint x="1326" y="1131" as="sourcePoint"/><mxPoint x="1372" y="1131" as="targetPoint"/></mxGeometry></mxCell>
<mxCell id="lgt0" value="사용자 트래픽" style="text;html=1;strokeColor=none;fillColor=none;fontSize=9;fontColor=#232F3E;" vertex="1" parent="1"><mxGeometry x="1318" y="1141" width="110" height="16" as="geometry"/></mxCell>
<mxCell id="lgl1" value="" style="endArrow=blockThin;endFill=1;endSize=5;html=1;strokeColor=#6B7280;strokeWidth=1.6;" edge="1" parent="1"><mxGeometry relative="1" as="geometry"><mxPoint x="1446" y="1131" as="sourcePoint"/><mxPoint x="1492" y="1131" as="targetPoint"/></mxGeometry></mxCell>
<mxCell id="lgt1" value="데이터 접근" style="text;html=1;strokeColor=none;fillColor=none;fontSize=9;fontColor=#232F3E;" vertex="1" parent="1"><mxGeometry x="1438" y="1141" width="110" height="16" as="geometry"/></mxCell>
<mxCell id="lgl2" value="" style="endArrow=blockThin;endFill=1;endSize=5;html=1;strokeColor=#8C4FFF;strokeWidth=1.6;dashed=1;dashPattern=5 4;" edge="1" parent="1"><mxGeometry relative="1" as="geometry"><mxPoint x="1566" y="1131" as="sourcePoint"/><mxPoint x="1612" y="1131" as="targetPoint"/></mxGeometry></mxCell>
<mxCell id="lgt2" value="비동기 이벤트" style="text;html=1;strokeColor=none;fillColor=none;fontSize=9;fontColor=#232F3E;" vertex="1" parent="1"><mxGeometry x="1558" y="1141" width="110" height="16" as="geometry"/></mxCell>
<mxCell id="lgl3" value="" style="endArrow=blockThin;endFill=1;endSize=5;html=1;strokeColor=#BC1356;strokeWidth=1.6;dashed=1;dashPattern=5 4;" edge="1" parent="1"><mxGeometry relative="1" as="geometry"><mxPoint x="1686" y="1131" as="sourcePoint"/><mxPoint x="1732" y="1131" as="targetPoint"/></mxGeometry></mxCell>
<mxCell id="lgt3" value="CI/CD·배포" style="text;html=1;strokeColor=none;fillColor=none;fontSize=9;fontColor=#232F3E;" vertex="1" parent="1"><mxGeometry x="1678" y="1141" width="110" height="16" as="geometry"/></mxCell>
<mxCell id="lgl4" value="" style="endArrow=blockThin;endFill=1;endSize=5;html=1;strokeColor=#9AA0A6;strokeWidth=1.6;dashed=1;dashPattern=5 4;" edge="1" parent="1"><mxGeometry relative="1" as="geometry"><mxPoint x="1806" y="1131" as="sourcePoint"/><mxPoint x="1852" y="1131" as="targetPoint"/></mxGeometry></mxCell>
<mxCell id="lgt4" value="복제·외부·관측" style="text;html=1;strokeColor=none;fillColor=none;fontSize=9;fontColor=#232F3E;" vertex="1" parent="1"><mxGeometry x="1798" y="1141" width="110" height="16" as="geometry"/></mxCell>
<mxCell id="e4" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#232F3E;strokeWidth=1.6;endArrow=blockThin;endFill=1;endSize=5;jumpStyle=arc;jumpSize=8;fontSize=9;fontStyle=1;fontColor=#232F3E;labelBackgroundColor=#FFFFFF;exitX=1;exitY=0.5;entryX=0;entryY=0.15;" edge="1" parent="1" source="a1" target="b3"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
<mxCell id="e5" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#232F3E;strokeWidth=1.6;endArrow=blockThin;endFill=1;endSize=5;jumpStyle=arc;jumpSize=8;fontSize=9;fontStyle=1;fontColor=#232F3E;labelBackgroundColor=#FFFFFF;exitX=1;exitY=0.5;entryX=0;entryY=0.38;" edge="1" parent="1" source="a2" target="b3"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
<mxCell id="e42" value="HTTPS" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#232F3E;strokeWidth=1.6;endArrow=blockThin;endFill=1;endSize=5;jumpStyle=arc;jumpSize=8;fontSize=9;fontStyle=1;fontColor=#232F3E;labelBackgroundColor=#FFFFFF;exitX=1;exitY=0.3;entryX=0;entryY=0.5;" edge="1" parent="1" source="b3" target="i8"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
<mxCell id="e43" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#232F3E;strokeWidth=1.6;endArrow=blockThin;endFill=1;endSize=5;jumpStyle=arc;jumpSize=8;fontSize=9;fontStyle=1;fontColor=#232F3E;labelBackgroundColor=#FFFFFF;exitX=0.5;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="i8" target="i9"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
<mxCell id="e44" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#232F3E;strokeWidth=1.6;endArrow=blockThin;endFill=1;endSize=5;jumpStyle=arc;jumpSize=8;fontSize=9;fontStyle=1;fontColor=#232F3E;labelBackgroundColor=#FFFFFF;exitX=0.5;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="i9" target="i10"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
<mxCell id="e45" value="api.fillmap.kr" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#232F3E;strokeWidth=1.6;endArrow=blockThin;endFill=1;endSize=5;jumpStyle=arc;jumpSize=8;fontSize=9;fontStyle=1;fontColor=#232F3E;labelBackgroundColor=#FFFFFF;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1" source="i8" target="i12"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
<mxCell id="e46" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#232F3E;strokeWidth=1.6;endArrow=blockThin;endFill=1;endSize=5;jumpStyle=arc;jumpSize=8;fontSize=9;fontStyle=1;fontColor=#232F3E;labelBackgroundColor=#FFFFFF;exitX=0.5;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="i12" target="i13"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
<mxCell id="e47" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#232F3E;strokeWidth=1.6;endArrow=blockThin;endFill=1;endSize=5;jumpStyle=arc;jumpSize=8;fontSize=9;fontStyle=1;fontColor=#232F3E;labelBackgroundColor=#FFFFFF;exitX=0.5;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="i13" target="i14"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
<mxCell id="e48" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#232F3E;strokeWidth=1.6;endArrow=blockThin;endFill=1;endSize=5;jumpStyle=arc;jumpSize=8;fontSize=9;fontStyle=1;fontColor=#232F3E;labelBackgroundColor=#FFFFFF;exitX=0;exitY=0.5;entryX=1;entryY=0.5;" edge="1" parent="1" source="i14" target="i24"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
<mxCell id="e49" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#232F3E;strokeWidth=1.6;endArrow=blockThin;endFill=1;endSize=5;jumpStyle=arc;jumpSize=8;fontSize=9;fontStyle=1;fontColor=#232F3E;labelBackgroundColor=#FFFFFF;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1" source="i14" target="i26"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
<mxCell id="e50" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#6B7280;strokeWidth=1.6;endArrow=blockThin;endFill=1;endSize=5;jumpStyle=arc;jumpSize=8;fontSize=9;fontStyle=1;fontColor=#6B7280;labelBackgroundColor=#FFFFFF;exitX=0.3;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="i24" target="i28"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="879" y="790"/><mxPoint x="617" y="790"/></Array></mxGeometry></mxCell>
<mxCell id="e51" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#6B7280;strokeWidth=1.6;endArrow=blockThin;endFill=1;endSize=5;jumpStyle=arc;jumpSize=8;fontSize=9;fontStyle=1;fontColor=#6B7280;labelBackgroundColor=#FFFFFF;exitX=0.3;exitY=1;entryX=0.9;entryY=0;" edge="1" parent="1" source="i26" target="i28"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="1205" y="818"/><mxPoint x="637" y="818"/></Array></mxGeometry></mxCell>
<mxCell id="e52" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#6B7280;strokeWidth=1.6;endArrow=blockThin;endFill=1;endSize=5;jumpStyle=arc;jumpSize=8;fontSize=9;fontStyle=1;fontColor=#6B7280;labelBackgroundColor=#FFFFFF;exitX=0.7;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="i24" target="i29"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="899" y="760"/><mxPoint x="781" y="760"/></Array></mxGeometry></mxCell>
<mxCell id="e53" value="READY 갱신" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#6B7280;strokeWidth=1.6;endArrow=blockThin;endFill=1;endSize=5;jumpStyle=arc;jumpSize=8;fontSize=9;fontStyle=1;fontColor=#6B7280;labelBackgroundColor=#FFFFFF;exitX=0.3;exitY=1;entryX=0.2;entryY=0;" edge="1" parent="1" source="i22" target="i28"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
<mxCell id="e54" value="복제·Failover" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#9AA0A6;strokeWidth=1.6;endArrow=blockThin;endFill=1;endSize=5;dashed=1;dashPattern=5 4;jumpStyle=arc;jumpSize=8;fontSize=9;fontStyle=1;fontColor=#9AA0A6;labelBackgroundColor=#FFFFFF;exitX=0.5;exitY=1;entryX=0.5;entryY=1;" edge="1" parent="1" source="i28" target="i31"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="617" y="950"/><mxPoint x="1215" y="950"/></Array></mxGeometry></mxCell>
<mxCell id="e55" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#9AA0A6;strokeWidth=1.6;endArrow=blockThin;endFill=1;endSize=5;dashed=1;dashPattern=5 4;jumpStyle=arc;jumpSize=8;fontSize=9;fontStyle=1;fontColor=#9AA0A6;labelBackgroundColor=#FFFFFF;exitX=0.5;exitY=1;entryX=0.5;entryY=1;" edge="1" parent="1" source="i29" target="i32"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="781" y="968"/><mxPoint x="1379" y="968"/></Array></mxGeometry></mxCell>
<mxCell id="e56" value="이벤트" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#8C4FFF;strokeWidth=1.6;endArrow=blockThin;endFill=1;endSize=5;dashed=1;dashPattern=5 4;jumpStyle=arc;jumpSize=8;fontSize=9;fontStyle=1;fontColor=#8C4FFF;labelBackgroundColor=#FFFFFF;exitX=0;exitY=0.5;entryX=1;entryY=0.5;" edge="1" parent="1" source="i24" target="i23"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
<mxCell id="e57" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#8C4FFF;strokeWidth=1.6;endArrow=blockThin;endFill=1;endSize=5;dashed=1;dashPattern=5 4;jumpStyle=arc;jumpSize=8;fontSize=9;fontStyle=1;fontColor=#8C4FFF;labelBackgroundColor=#FFFFFF;exitX=0;exitY=0.5;entryX=1;entryY=0.5;" edge="1" parent="1" source="i23" target="i22"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
<mxCell id="e58" value="인코딩본" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#8C4FFF;strokeWidth=1.6;endArrow=blockThin;endFill=1;endSize=5;dashed=1;dashPattern=5 4;jumpStyle=arc;jumpSize=8;fontSize=9;fontStyle=1;fontColor=#8C4FFF;labelBackgroundColor=#FFFFFF;exitX=0.5;exitY=0;entryX=0;entryY=0.3;" edge="1" parent="1" source="i22" target="i33"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
<mxCell id="e59" value="presigned" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#6B7280;strokeWidth=1.6;endArrow=blockThin;endFill=1;endSize=5;jumpStyle=arc;jumpSize=8;fontSize=9;fontStyle=1;fontColor=#6B7280;labelBackgroundColor=#FFFFFF;exitX=0.5;exitY=0;entryX=0;entryY=0.7;" edge="1" parent="1" source="i24" target="i33"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
<mxCell id="e60" value="Docker push" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#BC1356;strokeWidth=1.6;endArrow=blockThin;endFill=1;endSize=5;dashed=1;dashPattern=5 4;jumpStyle=arc;jumpSize=8;fontSize=9;fontStyle=1;fontColor=#BC1356;labelBackgroundColor=#FFFFFF;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1" source="b38" target="i34"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="1120" y="1139"/><mxPoint x="1120" y="415"/></Array></mxGeometry></mxCell>
<mxCell id="e61" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#BC1356;strokeWidth=1.6;endArrow=blockThin;endFill=1;endSize=5;dashed=1;dashPattern=5 4;jumpStyle=arc;jumpSize=8;fontSize=9;fontStyle=1;fontColor=#BC1356;labelBackgroundColor=#FFFFFF;exitX=0.5;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="i34" target="i35"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
<mxCell id="e62" value="배포" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#BC1356;strokeWidth=1.6;endArrow=blockThin;endFill=1;endSize=5;dashed=1;dashPattern=5 4;jumpStyle=arc;jumpSize=8;fontSize=9;fontStyle=1;fontColor=#BC1356;labelBackgroundColor=#FFFFFF;exitX=0;exitY=0.5;entryX=1;entryY=0.5;" edge="1" parent="1" source="i35" target="i26"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="1615" y="565"/><mxPoint x="1615" y="647"/></Array></mxGeometry></mxCell>
<mxCell id="e63" value="관측" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#9AA0A6;strokeWidth=1.6;endArrow=blockThin;endFill=1;endSize=5;dashed=1;dashPattern=5 4;jumpStyle=arc;jumpSize=8;fontSize=9;fontStyle=1;fontColor=#9AA0A6;labelBackgroundColor=#FFFFFF;exitX=0;exitY=0.5;entryX=1;entryY=0.65;" edge="1" parent="1" source="i36" target="g11"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
<mxCell id="e64" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#9AA0A6;strokeWidth=1.6;endArrow=blockThin;endFill=1;endSize=5;dashed=1;dashPattern=5 4;jumpStyle=arc;jumpSize=8;fontSize=9;fontStyle=1;fontColor=#9AA0A6;labelBackgroundColor=#FFFFFF;exitX=0;exitY=0.5;entryX=1;entryY=0.85;" edge="1" parent="1" source="i37" target="g11"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
<mxCell id="e65" value="OAuth" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#9AA0A6;strokeWidth=1.6;endArrow=blockThin;endFill=1;endSize=5;dashed=1;dashPattern=5 4;jumpStyle=arc;jumpSize=8;fontSize=9;fontStyle=1;fontColor=#9AA0A6;labelBackgroundColor=#FFFFFF;exitX=0;exitY=0.6;entryX=0.4;entryY=1;" edge="1" parent="1" source="b3" target="b39"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="84" y="362"/><mxPoint x="84" y="1196"/><mxPoint x="674" y="1196"/></Array></mxGeometry></mxCell>
<mxCell id="e66" value="지도 타일" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#9AA0A6;strokeWidth=1.6;endArrow=blockThin;endFill=1;endSize=5;dashed=1;dashPattern=5 4;jumpStyle=arc;jumpSize=8;fontSize=9;fontStyle=1;fontColor=#9AA0A6;labelBackgroundColor=#FFFFFF;exitX=0;exitY=0.75;entryX=0.5;entryY=1;" edge="1" parent="1" source="b3" target="b40"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="78" y="371"/><mxPoint x="78" y="1204"/><mxPoint x="847" y="1204"/></Array></mxGeometry></mxCell>
<mxCell id="e67" value="푸시 수신" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#9AA0A6;strokeWidth=1.6;endArrow=blockThin;endFill=1;endSize=5;dashed=1;dashPattern=5 4;jumpStyle=arc;jumpSize=8;fontSize=9;fontStyle=1;fontColor=#9AA0A6;labelBackgroundColor=#FFFFFF;exitX=0.5;exitY=1;entryX=0;entryY=0.9;" edge="1" parent="1" source="b41" target="b3"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="1012" y="1212"/><mxPoint x="72" y="1212"/><mxPoint x="72" y="381"/></Array></mxGeometry></mxCell>
</root></mxGraphModel></diagram></mxfile>
