Đừng Để Database Của Bạn Chạy "Tồng Ngồng" Trên AWS Nữa: Thiết Kế Kiến Trúc Cloud An Toàn Từ Đầu (Kèm Source Code)
Chào anh em, làm Backend Dev thì chắc hẳn ai cũng từng trải qua cái cảnh "code xong chạy ngon ở localhost rồi, nhưng deploy lên AWS thì... trầm cảm".
Setup một con EC2 cởi truồng thì dễ, nhưng để build một hệ thống đàng hoàng với VPC, Private/Public Subnets, NAT Gateway, Security Groups chằng chịt, Load Balancer, rồi Database... thì tốn hàng giờ đồng hồ rà chuột trên AWS Console. Chưa kể cấu hình tay rất dễ dính lỗi bảo mật hoặc quên xóa resource dẫn đến "cháy túi".
Để giải quyết triệt để vấn đề này, mình đã tích hợp Terraform (Infrastructure as Code) vào package nodejs-quickstart-structure mà mình vừa release. Giờ đây, bạn có thể tự động gen ra toàn bộ code hạ tầng AWS chuẩn Production chỉ bằng 1 câu lệnh.
Trong bài viết này, mình sẽ phân tích sâu hơn về kiến trúc AWS mà tool tự động tạo ra, cũng như cách anh em có thể test nó hoàn toàn miễn phí nhé!

1. Giới thiệu nhanh
Anh em chỉ cần chạy lệnh sau để khởi tạo project:
npx nodejs-quickstart-structure@latest init -n "nodejs-service" -l "TypeScript" -a "Clean Architecture" -d "MySQL" --db-name "demo" -c "REST APIs" --caching "None" --ci-provider "GitHub Actions" --auth None --terraform "Production" --no-include-security --advanced-options
Đến bước hỏi về Infrastructure, anh em chọn Terraform. Tool sẽ cung cấp 2 tùy chọn kiến trúc tùy theo "túi tiền" và quy mô dự án: Standard hoặc Production.
2. Bài toán chi phí và sự đánh đổi (Standard vs Production)
Khi làm hạ tầng, chúng ta luôn phải cân bằng giữa tính sẵn sàng cao (High Availability) và Chi phí.
Tùy chọn 1: Standard Tier (Dành cho Startup/Dev nghèo)
- Mục tiêu: Chạy được, an toàn cơ bản, và RẺ.
- Kiến trúc: Dùng 1 máy chủ EC2 duy nhất, 1 con RDS Database nằm ở Single-AZ.
- Chi phí: Rất rẻ, xoay quanh mức ~$20-$50/tháng, thậm chí có thể lách vào Free Tier nếu khéo chọn size (t2.micro).
Tùy chọn 2: Production Tier (High Availability)
- Mục tiêu: Zero-downtime, bảo mật tận răng, chịu tải tốt.
- Kiến trúc: Multi-AZ. Có Application Load Balancer (ALB) đứng trước. EC2 được triển khai ở nhiều Availability Zones khác nhau. RDS cũng bật Multi-AZ để tự động failover nếu một zone bị tèo.
- Bảo mật Edge: Bật sẵn AWS WAF (Web Application Firewall) để chặn đứng SQLi và XSS.
- Chi phí: Khá thốn, từ ~$150 - $250/tháng trở lên.
3. Những Best Practices đã áp dụng vào Terraform Config
Không chỉ là tạo bừa vài cái tài nguyên, code Terraform được gen ra đã tuân thủ chặt chẽ AWS Well-Architected Framework:
- VPC 3-Tiers (Mô hình 3 lớp mạng):
- Lớp Public: Chỉ chứa Load Balancer và NAT Gateway.
- Lớp Private: Chứa Application (EC2) và Redis Cache. Có mạng ra ngoài (qua NAT) nhưng không ai có thể ping trực tiếp từ ngoài vào.
- Lớp Isolated: Chứa Database (RDS). Hoàn toàn cách ly với Internet. "Nội bất xuất, ngoại bất nhập".
Trực quan hóa Kiến trúc Bảo mật
Khi build một dự án mới, anh em dev thường dồn 90% công lực vào việc viết code, chọn framework, tối ưu query... và xem nhẹ phần Infrastructure. Hậu quả là gì? Vô số ứng dụng được deploy thẳng lên Default VPC của AWS, nhét EC2 vào Public Subnet, và thảm họa nhất: Mở toang Port Database (3306/5432) ra Internet.
Kiến trúc cũ (Dễ bị tấn công từ bên trong)

Kiến trúc 3-Tier (Do tool sinh ra)

- Least Privilege Security Groups: Database chỉ nhận traffic mở từ EC2. EC2 chỉ nhận traffic từ ALB.
- Say "KHÔNG" với SSH (Port 22): Quản lý SSH Keys cực kỳ rủi ro. Thay vào đó, hạ tầng này cấu hình sẵn AWS Systems Manager (SSM). Anh em có thể terminal thẳng vào server thông qua AWS Console mà không cần mở bất kỳ cổng Inbound nào.
4. Đặc sản: Test toàn bộ hạ tầng AWS với giá 0 Đồng (LocalStack)
Nhiều anh em ngại dùng Terraform vì sợ lệnh terraform apply lỡ tay tạo nhầm resource sẽ bị AWS charge thẻ tín dụng. Đừng lo!
Trong file Docs của dự án, mình đã hướng dẫn chi tiết cách chạy toàn bộ kiến trúc này trên local bằng LocalStack cách cài đặt tại đây Local Testing LocalStack.
Anh em chỉ cần cài Docker, bật LocalStack lên:
localstack start -d
Sau đó tạo file localstack.tf (tool đã hướng dẫn sẵn code), và chạy:
terraform apply -auto-approve
Bùm! Anh em đã có VPC, EC2, RDS chạy ngay trên máy tính cá nhân. Có thể test thoải mái các script setup server mà không lo mất tiền.
Trải nghiệm thử ngay!
Việc áp dụng IaC ngay từ đầu giúp dự án trở nên chuyên nghiệp hơn rất nhiều. Nếu anh em sắp có dự án mới (hoặc đơn giản là muốn đọc code Terraform chuẩn), hãy cài thử package và vọc vạch nhé.
👉 How to use the tool and video demo
👉 Sample Project: nodejs-service-terraform
All Rights Reserved