AWS VPC: Kiến trúc mạng ảo nền tảng trong hệ sinh thái AWS
Phân tích chi tiết từ cơ bản đến nâng cao — kèm minh họa trực quan
1. Giới thiệu
AWS VPC (Virtual Private Cloud) là dịch vụ cho phép bạn tạo một **mạng ảo riêng biệt và cô lập** trong AWS — nơi bạn có toàn quyền kiểm soát không gian địa chỉ IP, subnet, route table, gateway và tường lửa. Mọi tài nguyên như EC2, RDS, Lambda (trong VPC) đều hoạt động trong phạm vi VPC này.
VPC là nền tảng bắt buộc cho bất kỳ hệ thống production nào trên AWS. Hiểu VPC không chỉ giúp bạn triển khai ứng dụng, mà còn đảm bảo **bảo mật, hiệu năng và khả năng mở rộng**.
2. Các khái niệm cơ bản
2.1. CIDR và dải địa chỉ IP
Khi tạo VPC, bạn phải chọn một khối địa chỉ IP theo chuẩn CIDR (Classless Inter-Domain Routing), ví dụ: 10.0.0.0/16
.
/16
→ 65.536 địa chỉ IP (từ 10.0.0.0 đến 10.0.255.255).- AWS **dành riêng 5 IP đầu tiên** trong mỗi subnet cho hệ thống → bạn chỉ dùng được 65.531 IP.
Các dải IP được phép dùng trong VPC (theo RFC 1918):
10.0.0.0 – 10.255.255.255
(/8)172.16.0.0 – 172.31.255.255
(/12)192.168.0.0 – 192.168.255.255
(/16)
2.2. Subnet: Public và Private
Subnet là phân vùng con của VPC. Có hai loại chính:
- Public Subnet: Có route ra internet (qua Internet Gateway). Dùng cho load balancer, bastion host.
- Private Subnet: Không có route trực tiếp ra internet. Dùng cho database, application server.

3. Các thành phần cốt lõi của VPC
3.1. Internet Gateway (IGW)
Cổng ra internet cho VPC. Là thành phần **bắt buộc** để EC2 trong public subnet có thể truy cập internet (hoặc ngược lại).
IGW là highly available, không giới hạn băng thông, và **miễn phí**.
3.2. Route Table
Bảng định tuyến quyết định “gói tin đi đâu”. Mỗi subnet gắn với một route table.
Ví dụ route table cho public subnet:
Destination Target
0.0.0.0/0 igw-12345678 ← route ra internet
10.0.0.0/16 local ← traffic nội bộ VPC
Route table cho private subnet:
Destination Target
10.0.0.0/16 local ← chỉ giao tiếp nội bộ
3.3. NAT Gateway
Cho phép instance trong **private subnet** truy cập internet (để tải package, cập nhật OS…) nhưng **không cho phép internet kết nối vào**.
NAT Gateway phải được đặt trong **public subnet** và có IP public.
Lưu ý: NAT Gateway **tính phí theo giờ + lưu lượng**.

3.4. Security Group và Network ACL
Cả hai đều là tường lửa, nhưng khác nhau:
Đặc điểm | Security Group | Network ACL (NACL) |
---|---|---|
Mức áp dụng | Instance | Subnet |
Loại tường lửa | Stateful (ghi nhớ kết nối) | Stateless (xử lý từng gói riêng lẻ) |
Mặc định | Chặn tất cả inbound, cho phép tất cả outbound | Cho phép tất cả inbound & outbound |
Thứ tự rule | Không có — tất cả rule đều áp dụng | Có — rule số nhỏ hơn ưu tiên hơn |
→ **Security Group** dùng cho kiểm soát truy cập ở mức ứng dụng. → **NACL** dùng như “tấm lưới an toàn” ở mức subnet — thường để chặn IP độc hại hàng loạt.
4. Mô hình VPC thực tế: Multi-AZ, HA và bảo mật
Trong production, VPC nên được triển khai trên **nhiều Availability Zone (AZ)** để đảm bảo high availability.
Mô hình điển hình:
- 2 public subnet (1 per AZ) → cho Application Load Balancer.
- 2 private subnet (1 per AZ) → cho EC2 application.
- 2 private subnet database (1 per AZ) → cho RDS.
- 1 NAT Gateway mỗi AZ (hoặc dùng shared VPC).

5. Kết nối giữa các VPC
5.1. VPC Peering
Cho phép hai VPC giao tiếp **trực tiếp qua private IP**, như trong cùng mạng nội bộ.
Giới hạn:
- Không hỗ trợ transitive routing (A ↔ B, B ↔ C → A không giao tiếp được với C).
- Phải không trùng CIDR.
5.2. AWS Transit Gateway
Là “trung tâm kết nối” cho nhiều VPC, on-premises network (qua Direct Connect/VPN). Hỗ trợ transitive routing.
Phù hợp cho hệ thống lớn với hàng chục VPC.

6. Kết luận
AWS VPC không chỉ là “mạng ảo” — mà là **nền tảng kiến trúc** cho toàn bộ hệ thống cloud. Việc thiết kế VPC đúng từ đầu giúp bạn:
- Đảm bảo an toàn: tách biệt public/private, kiểm soát traffic chặt chẽ.
- Tối ưu chi phí: tránh NAT Gateway dư thừa, chọn đúng AZ.
- Dễ mở rộng: hỗ trợ multi-region, hybrid cloud.
Hãy luôn bắt đầu dự án mới bằng việc **thiết kế sơ đồ VPC trên giấy** — xác định số subnet, AZ, gateway, và luồng dữ liệu — trước khi gõ lệnh hoặc click console.
Vì trong cloud, **mạng không phải là thứ “gắn thêm sau” — mà là xương sống của hệ thống**.