%%{init: {
"theme": "base",
"themeVariables": {
"primaryColor": "#EBF3FB",
"primaryTextColor": "#1a1a1a",
"primaryBorderColor": "#5B9BD5",
"lineColor": "#444",
"secondaryColor": "#FFF3E0",
"tertiaryColor": "#F3F4F6",
"clusterBkg": "#EEF5FF",
"clusterBorder": "#5B9BD5",
"edgeLabelBackground": "#fff",
"fontFamily": "Spoqa Han Sans Neo, Arial, sans-serif",
"fontSize": "20px"
},
"flowchart": {
"rankSpacing": 90,
"nodeSpacing": 80,
"curve": "linear",
"htmlLabels": true,
"padding": 30
}
}}%%
graph TD
Users["

Users"]
Dev["

Developer"]
R53["

Route53
pposiraegi.cloud"]
ACM["

ACM
us-east-1"]
CF["

CloudFront
HTTPS · SPA"]
subgraph AWS["AWS Cloud · ap-northeast-2"]
S3["

S3
Frontend OAC"]
SSM["

SSM
Session Manager"]
subgraph VPC["VPC 10.0.0.0/16"]
subgraph Pub["Public Subnets"]
IGW["

Internet
Gateway"]
ALB["

ALB
:80 → :8080"]
NAT["

NAT
Gateway"]
BAS["

Bastion
t3.micro"]
end
subgraph Priv["Private Subnets"]
EC2["

Spring Boot
t3.medium · :8080"]
RDS["

PostgreSQL 16
db.t3.micro · :5432"]
RDI["

Redis 7
cache.t3.micro · :6379"]
end
end
end
Users --> R53
R53 --> CF
ACM -.->|TLS cert| CF
CF -->|"/*"| S3
CF -->|"/api/* /ws/*"| IGW
IGW --> ALB
ALB -->|":8080"| EC2
EC2 -->|":5432"| RDS
EC2 -->|":6379"| RDI
EC2 -.->|outbound| NAT
NAT --> IGW
Dev -.->|SSH| BAS
BAS -.->|SSH| EC2
Dev -.->|SSM| SSM
SSM -.-> EC2
linkStyle 2,9,11,12,13,14 stroke:#888888,stroke-width:1.5px