Kiến trúc hạ tầng

Mô hình kiến trúc Terraform cho MILU2 Stage Infrastructure

Shared vs Stage

Terraform chia làm 2 config độc lập, mỗi config có state riêng:

SharedStage
Phạm viGlobal / account-levelPer-region
ResourcesS3 (4 bucket), IAM role, CloudFront (2)VPC, Subnets, ALB, NLB, EC2, ECR, ACM, Route53, CloudWatch
State fileshared/terraform.tfstateterraform.tfstate
Cơ chế existingCó — tự skip nếu đã tồn tạiAuto-import 31 loại resource

Thông tin

Luồng vận hành: (1) shared chạy trước (1 lần) — tạo tài nguyên global. (2) stage chạy sau (mỗi region/stage_index một lần).

Mô hình mạng (Network Topology)

Sơ đồ tổng quan các thành phần mạng và luồng traffic:

Sơ đồ kiến trúc tổng quan
Network Topology (ASCII)
Internet
                        │
              ┌─────────┴─────────┐
              │ ALB internet-facing│ (443 HTTPS)
              └─────────┬─────────┘
                        │
   ┌────────────────────┴─────────────────────────┐
   │  milu2stage-vpc  (172.{34+stage_index}.0.0/16)│
   │  ┌──────────────┐       ┌──────────────┐     │
   │  │ subnet main  │       │ subnet second│     │
   │  │   (AZ-1)     │       │   (AZ-2)     │     │
   │  └──────┬───────┘       └──────┬───────┘     │
   │         │  ALB internal / NLB  │             │
   │         │   ASG(API)  EC2(Web/DB/Node)       │
   └─────────┼──────────────────────┼─────────────┘
             │  VPC Peering (pcx)   │
             ▼                      ▼
       milu2-vpc (build, 172.31.0.0/16) — cùng account

CIDR Scheme

Tất cả CIDR (VPC + subnets) được tính tự động từ biến stage_index:

stage_indexVPC CIDRSubnet mainSubnet second
0172.34.0.0/16172.34.0.0/24172.34.1.0/24
1172.35.0.0/16172.35.0.0/24172.35.1.0/24
2172.36.0.0/16172.36.0.0/24172.36.1.0/24
............

Mẹo

reserved_offsets tự skip các CIDR đã dùng (172.30–33.0.0/16). preflight-check.ps1 tự đề xuất stage_index trống khi VPC Peering được bật.

VPC Peering

Cho phép giao tiếp giữa VPC stage và VPC build:

VPC Peering Configuration
# terraform.tfvars
peer_build_vpc_id   = "vpc-xxxxxxxxx"      # VPC ID of the build VPC
peer_build_vpc_cidr = "172.31.0.0/16"      # CIDR of the build VPC
peer_region         = "ap-northeast-1"     # Region (leave empty if same region)

Security Groups

7 Security Groups theo vai trò:

TênMục đích
milu2stage-VN-trusted-ip-sgIP văn phòng / tin cậy
MILU2stage-sgSG chung ứng dụng
MILU2-stage-node-game-sgNode game
MILU2-stage-node-world-sgNode world
MILU2-stage-node-chat-sgNode chat
MILU2-stage-node-commu-sgNode commu
milu2stage-dbDB / ICMP