<aside>
๐ก
Point !!
- Frontend: AWS Amplify
- Backend: k8s
- Knative: K3s ๊ธฐ๋ฐ EC2 ํด๋ฌ์คํฐ
- Database: RDS PostgreSQL
- Storage: S3 (User Function Storage)
- Private EC2 ์ ์: AWS SSM (No Bastion)
</aside>
<aside>
1. Summary
// Frontend(Amplify)๋ VPC ์ธ๋ถ์์ ๋ฐฐํฌํ๋ฏ๋ก VPC์ ๋ถ๋ฆฌ
[Public Subnet]
- ALB (ECS ์๋น์ค์ฉ)
- NAT Gateway
[Private Subnet A/B]
- ECS Fargate Tasks (BE API)
- RDS PostgreSQL
- K8s Master (EC2)
- K8s Worker - ops (EC2)
- K8s Worker - build (EC2)
- K8s Worker - run (EC2)
- S3 Functions Bucket
- ECR
[Management Subnet]
- VPC Endpoint (SSM)
- VPC Endpoint (S3, ECR, Logs)
- CloudWatch
</aside>
<aside>
2. ๋ณด์ & ๋ง๋ถ๋ฆฌ ์ ๋ต
2-1. 3-Tier ๋ง๋ถ๋ฆฌ
| ๊ตฌ์ญ |
๋ด์ฉ |
| Public Zone |
ALB, NAT |
| App Private Zone |
ECSยทK8s WorkerยทMaster |
| Data Private Zone |
RDS(Postgres)๋ง ์กด์ฌํ๋ ์ ์ฉ Subnet |
- DB Access๋ ์ค์ง Security Group ์์ฒด ํต์ ์ผ๋ก๋ง ํ์ฉ
- ALB โ ECS(Fargate)
- K8s Worker โ ์ธ๋ถ๋ NAT๋ง
2-2. SSM ๊ธฐ๋ฐ EC2 ์ ์ ๊ตฌ์กฐ
-
EC2๋ ํผ๋ธ๋ฆญ IP ์์
-
SSM Agent + VPC Interface Endpoint(ssm, ssmmessages)
โ ์ธํฐ๋ท ์์ด ์์ ํ ๋ด๋ถ๋ง์์ ์ ์ ๊ฐ๋ฅ
2-3. ECS / Knative / RDS ์์ ๋ถ๋ฆฌ
- ECS๋ ALB์์ ์ค๋ API ์์ฒญ๋ง ์ฒ๋ฆฌ
- Knative EC2 ํด๋ฌ์คํฐ๋ ๋ณ๋ Private Subnet ์ด์
- ๋ฐ์ดํฐ ๊ณ์ธต(RDS)์ ์ ๊ทผ SG๋ฅผ ์ต์ํ
- S3 Functions๋ Worker-run์์๋ง ์ ๊ทผ
</aside>
<aside>
3. ์ปดํฌ๋ํธ ์์ธ ์ค๊ณ
3-1. VPC ๊ตฌ์ฑ
CIDR: 10.0.0.0/16
์๋ธ๋ท ๋ถํ
- Public Subnet A/B
- Private-App Subnet A/B
- ECS Fargate
- K8s Worker Ops / Worker Build / Worker Run
- Private-Control Subnet
- K8s Master
- (์ ํ) K8s etcd
- Private-DB Subnet A/B
VPC Endpoint ๊ตฌ์ฑ
- SSM
- EC2 Messages
- S3
- ECR
- CloudWatch Logs
- Secrets Manager
โ EC2ยทECSยทLambda ๋ชจ๋ ์ธํฐ๋ท ์์ด Pull/Push ๊ฐ๋ฅ
3-2. EC2๋ก ๊ตฌ์ฑ๋๋ Knative ํด๋ฌ์คํฐ
ํ์ ์คํ์ ๊ทธ๋๋ก ์ ์ฉ:
| Name |
vCPU |
RAM |
Subnet |
| k8s-master |
2 |
4GB |
Private-Control |
| k8s-worker-ops |
2 |
6GB |
Private-App |
| k8s-worker-build |
4 |
8GB |
Private-App |
| k8s-worker-run |
2 |
6GB |
Private-App |
ํน์ง
- Public IP ์์
- Ingress๋ ALB ์ฌ์ฉ (Knative Kourier or Istio๋ Internal LB)
- Worker-run์ S3์ ์ ์ฅ๋ Runna Function ์ด๋ฏธ์ง๋ฅผ pull
- Worker-build๋ ๊ฐ ํจ์ Build ์ ์ฉ ๋
ธ๋
3-3. Backend (ECS Fargate)
- Container ์ด๋ฏธ์ง๋ ECR์ push
- CodePipeline โ CodeBuild โ ECS Fargate ์๋๋ฐฐํฌ
- ALB โ Target Group โ Fargate Tasks
๋ณด์ ํฌ์ธํธ
- ECS Subnet์ Private
- ALB๋ง Public
- ALB โ ECS SG๋ง ํ์ฉ
- ECS โ RDS SG ์ฐ๊ฒฐ
3-4. Database (RDS PostgreSQL)
- Multi-AZ
- Public Access OFF
- Only ECS SG + K8s Worker-run SG๋ง ์ธ๋ฐ์ด๋ ํ์ฉ
- Secrets Manager์์ DB ์ ๋ณด ๊ด๋ฆฌ
3-5. S3 Functions ์ ์ฅ ๊ตฌ์กฐ
S3 runna-functions
โโโ function-A/
โ โโโ source.zip
โ โโโ metadata.json
โโโ function-B/
โ โโโ ...
- Knative Worker-run์์ ๊ฐ์ ธ์์ ์คํ
</aside>
<aside>
</aside>
<aside>
</aside>