Xây dựng hạ tầng AWS phức tạp cho business bé - cú sốc về chi phí vận hành

Xây dựng hạ tầng AWS phức tạp cho business bé - cú sốc về chi phí vận hành

avatar

Phong Nguyen

2025.12.12

Tiếp nối câu chuyện xây dựng product, ở phần này mình muốn chia sẻ câu chuyện lựa chọn và xây dựng hạ tầng cho hệ thống Cloud Exam Pro. Một hạ tầng phức tạp, cồng kềnh chỉ cho một business bé, và kết quả là chi phí hạ tầng cao ngất ngưỡng, đến mức phải mất ngủ.

312 USD (tương đương khoảng 8.2 triệu VNĐ) là chi phí hạ tầng AWS mình đã trả vào tháng 9-10/2025.

Tại thời điểm mà hệ thống mình còn chưa public, chưa có một đồng doanh thu nào thì Bill AWS gửi đến khiến tinh thần mình gần như sụp đổ. 8,2 triệu không phải là con số lớn, nhưng nếu suy nghĩ rằng đó là khoản mình phải trả hàng tháng để nuôi hệ thống thi online đơn giản, rồi doanh thu khi public hệ thống - bán ra các bộ đề AWS liệu có thể đạt tới 8 triệu 1 tháng không?

Công sức 1 năm trời ròng rã của cả nhóm, bao đêm mất ngủ xử lý các vấn đề kỹ thuật phức tạp. Số tiền đã đầu tư để outsource cho anh em dev cũng không hề nhỏ. Mặc dù đã lường trước kết quả nhưng sự thật vẫn rất phũ phàng, mình đã gần như mất ngủ cả đêm để suy nghĩ - liệu hệ thống sẽ còn tồn tại đến khi nào!


Chào mọi người, mình là Phong - Founder hệ thống CloudExam.pro

Sau hơn 1 năm ròng rã xây dựng product, đến hiện tại đã có thể cho ra mắt cộng đồng, mình muốn ngồi lại để viết đôi chút về hành trình mình đã trải qua. Mình muốn ghi lại những khoảng khắc, cảm xúc đáng nhớ trong hành trình này.

phần 1 mình đã chia sẻ quá trình hình thành ý tưởng cho product, ở phần này mình muốn đi sâu hơn chia sẻ về hạ tầng infra của hệ thống - thứ lấy đi của mình bao nhiêu công sức và tiền bạc.

Kinh nghiệm xây dựng hệ thống trên AWS

Mình từng tham gia các dự án như:

  • Migration hệ thống xử lý báo cáo tài chính chứng khoán từ Onpremise -> AWS (Sử dụng các service Serverless)
  • Migration Net Banking từ Onpremise -> AWS (Chủ yếu là EC2)
  • Migration 1 trong những hệ thống dùng trong chính phủ Nhật AWS (EC2) -> AWS (áp dụng Government Cloud)
  • Tham gia như SRE Engineer trong hệ thống Credit Card chạy trên môi trường AWS
  • Và một số dự án khác

Khi làm việc với những dự án lớn, cùng đội ngũ có kinh nghiệm mình đã học hỏi rất nhiều nhưng cũng có một hạn chế là:

  • Nhiều dự án xây dựng infra AWS rất hay nhưng mình đã vào ở giai đoạn gần như hoàn thành
  • Dự án lớn thì chia việc, mỗi người phụ trách xây dựng service khác nhau
  • Thiết kế tổng thể, basic design thường là phần mình ít khi đụng tới.

Vậy nên nếu không tự xây dựng cho mình 1 hệ thống từ đầu với những kinh nghiệm mình học được, rõ ràng vẫn còn lỗ hổng đâu đó.

Có nhiều cái học được rất hay, thiết kế rất tốt nhưng khi tự làm thì mới gặp vấn đề này vấn đề kia, việc troubleshooting giúp mình hiểu rõ hơn cho solution đó.

Chức năng hệ thống

User

  • Đăng ký / đăng nhập
  • Home - List all danh sách các bộ đề
  • Course Introduction
  • Order / Checkout
  • Practice Test
  • View Test History
  • Rating / Feedback

Operator

  • Đăng nhập
  • Quản lý User / Instructor
  • Quản lý Order
  • Quản lý Course
  • Quản lý Class (Nội bộ Cloud Mentor Pro)
  • Tracking Transaction
  • etc

Hình ảnh từ thiết kế

Ý tưởng cho hạ tầng cho dự án cá nhân

Cấu trúc AWS Accounts

Cloud Exam Pro được xây dựng trên nền tảng AWS Organizations với chiến lược multi-account, tách biệt môi trường và chức năng để tối ưu security, compliance và quản lý chi phí.

1. Organization Root - Quản lý tập trung

Sử dụng AWS Organizations để quản lý tất cả các accounts con với structure sau:

cmp-platform-dev (Development)

  • Môi trường phát triển và thử nghiệm features mới
  • Developers có quyền cao để thử nghiệm và debug
  • Chi phí thấp với resources nhỏ hơn

cmp-platform-staging (Staging)

  • Môi trường pre-production, mirror của production
  • Testing end-to-end trước khi deploy lên production
  • Validate performance, security và integration

cmp-platform-prod (Production)

  • Môi trường chạy thực tế
  • Security cao nhất, access control nghiêm ngặt
  • High availability

2. IAM-GENERAL Account - Identity Management Hub

Account chuyên dụng để quản lý authentication và authorization:

IAM Identity Center (AWS SSO)

  • Centralized identity management cho toàn bộ organization
  • Single sign-on cho developers và operators

3. cmp-platform-deployment Account - CI/CD Hub

Account chuyên dụng cho deployment pipeline:

AWS CodePipeline

  • Orchestrate toàn bộ workflow từ code → production

AWS CodeBuild

  • Build Docker images
  • Push đến ECR

AWS CodeDeploy

  • Deploy lên dev → staging → prod theo stages
  • Rolling update hoặc Blue/green deployment cho zero-downtime updates

4. cmp-platform-logs-archived Account - Centralized Logging

Account chuyên dụng để lưu trữ logs lâu dài:

Amazon S3 (Logs Bucket)

  • Collect logs từ tất cả accounts (dev, staging, prod, deployment)
  • Long-term retention cho compliance (6 tháng - 3 năm)
  • Cost-optimized với S3 lifecycle policies:
    • 30 ngày đầu: S3 Standard
    • 30-90 ngày: S3 Infrequent Access
    • 90+ ngày: S3 Glacier

Overview Architecture

Danh Sách AWS Services Sử Dụng cho Cloud Exam Pro

Analytics

Tên ServiceMục Đích Sử DụngGhi Chú
Amazon Kinesis Data FirehoseThu thập và chuyển logs từ VPC về S3 log-archived account để lưu trữ dài hạnLog application, VPC Flow log, ClouTrail log

Application Integration

Tên ServiceMục Đích Sử DụngGhi Chú
Amazon SQSXử lý các tác vụ bất đồng bộ trong hệ thống.Xử lý Order
AWS LambdaXử lý event-driven tasks và automation workflowsStart/stop Service. Xử lý Order, Đăng ký User v.v

Container

Tên ServiceMục Đích Sử DụngGhi Chú
Amazon ECSContainer orchestration cho Frontend API và Backend API microservices2 ECS Clusters: Frontend API và Backend API
AWS FargateData plane cho ECS, chạy containers serverlessKhông cần quản lý EC2 instances
Amazon ECRContainer registry lưu trữ Docker imagesNằm trong deployment account
AWS BatchChạy batch processing jobs định kỳThông báo Couser sắp hết hạn. Xử lý khi Course hết thời gian access

Database

Tên ServiceMục Đích Sử DụngGhi Chú
Amazon RDSDatabase chính cho application dataCó thể là MySQL hoặc PostgreSQL

Developer Tools

Tên ServiceMục Đích Sử DụngGhi Chú
AWS CodePipelineCI/CD pipeline orchestration từ GitHub đến productionNằm trong deployment account
AWS CodeBuildBuild Docker images và run automated tests, Push lên ECRNằm trong deployment account
AWS CodeDeployDeploy containers lên ECS clustersNằm trong deployment account

Management & Governance

Tên ServiceMục Đích Sử DụngGhi Chú
AWS ChatbotTích hợp Slack cho ChatOps, monitoring alerts và notificationsPhát hiện lỗi hệ thống, Alert khi metric vượt ngưỡng
AWS CloudTrailAudit trail cho tất cả AWS API callsLogs lưu tại log-archived account
Amazon CloudWatchMonitoring, logging và alerting cho toàn bộ hệ thốngCloudWatch Logs thu thập logs từ ECS tasks, Lambda, Flow log v.v
AWS ConfigContinuous monitoring và compliance tracking cho AWS resourcesTracking thay đổi resource theo thời gian. Cảnh báo khi có resource không tuân thủ rule
AWS Systems ManagerParameter Store để quản lý application configurationsQuản lý biến môi trường

Networking & Content Delivery

Tên ServiceMục Đích Sử DụngGhi Chú
Amazon Route 53DNS management cho domain cloudexam.pro
Amazon CloudFrontCDN cho static content và caching
AWS WAFWeb Application Firewall bảo vệ khỏi attacks
Amazon VPCPrivate network cho ECS clusters và databasesBao gồm subnets, route tables, NAT Gateway
VPC EndpointsPrivate connectivity đến AWS services không qua InternetEndpoints: Logs, ECS, Firehose, S3, Etc

Security, Identity & Compliance

Tên ServiceMục Đích Sử DụngGhi Chú
Amazon CognitoUser authentication và authorization cho users
AWS Certificate ManagerQuản lý TLS/SSL certificates cho HTTPS
AWS IAMIdentity and Access Management cho users, roles và permissionsRole cho ECS Task, Role cho Lambda, v.v
AWS Secrets ManagerLưu trữ và rotate database credentials, API keysDB username and password

Storage

Tên ServiceMục Đích Sử DụngGhi Chú
Amazon S3Lưu trữ logs, static assets và backup data

Third-party Integration

Tên ServiceMục Đích Sử DụngGhi Chú
GitHubSource code repository và trigger CI/CD pipelineTích hợp với CodePipeline
SlackChatOps interface cho operatorsTích hợp qua AWS Chatbot

Ghi chú:

  • Kiến trúc sử dụng multi-account strategy với deployment account riêng biệt
  • ECS tasks chạy trong private subnets, truy cập AWS services qua VPC Endpoints
  • Logs được centralized về log-archived account qua Kinesis Firehose
  • Auto Scaling được cấu hình cho cả Frontend và Backend ECS services

Hạ tầng hiện tại

Do suy xét về mặt thời gian, chi phí, công sức, từ ý tưởng thiết kế ban đầu mình đã lược bỏ đi nhiều

Cấu trúc AWS Accounts

  • Bỏ môi trường staging: giảm chi phí và công sức xây dựng
  • Bỏ Account cho CICD thay vào đó sẽ dùng Github Action cho tiết kiệm chi phí
  • Bỏ Account log-archived: giảm thiểu độ phức tạp của hệ thống

Overview Architecture

Kiến trúc sau khi loại bỏ đi sự phức tạp

Action tiếp theo

Với chi phí hiện tại hơn 300 USD mỗi tháng cho 2 môi trường dev và prod, mình chắc chắn sẽ tìm cách để tối ưu chi phí vận hành.

Các chiến lược mình đang nghĩ đến:

  • Right Sizing
  • Start / Stop môi trường dev
  • Tối ưu chi phí cho từng service
  • Vận dụng các Saving plan aws cung cấp
  • Tích cực bán bộ đề để phần nào cover chi phí
  • Chia sẻ hành trình xây dựng production đến nhiều người để nhiều người biết về hệ thống hơn (từ đó mua ủng hộ :)) )

Kết

Ngay từ khi bản thiết kế infra còn trên giấy, mình đã có thể hình dung được sự phức tạp và chi phí lớn. Mình đã tưởng tưởng rằng nếu xây dựng được hạ tầng này thì cũng được xem là có thứ để tự hào, mang đi chém gió khi phỏng vấn.

Thế nhưng sự thật nó đè bẹp mơ mộng chưa thành hiện thực đó, và điều cấp thiết bây giờ là tìm mọi cách để giảm chi phí nhưng vẫn giữ được sự ổn định của hệ thống, tính sẵn sàng cao và security.

Qua trải nghiệm xây dựng infra lần này cho mình nhiều bài học quý giá

  • Cách lên chiến lược hạ tầng ngay thời điểm thiết kế
  • Cách xây dựng hạ tầng hoàn chỉnh từ A đến Z
  • Hiểu hơn về cách các service liên kết cùng nhau
  • Hiểu hơn về chi phí hệ thống

Để xây dựng hệ thống này, mình rất cảm ơn các anh em Cloud Mentor Pro đã cùng nhau đóng góp ý tưởng, thiết kế và xây dựng nó.

Thời điểm hiện tại hệ thống đã trải qua gần 4 tháng hoạt động, 2 tháng đầu khi chưa public (chỉ sử dụng nội bộ) mình thử nghiệm và fix một số lỗi nhỏ, sau khi public đến nay trộm vía hệ thống đang chạy ổn định.

Hy vọng bài viết này hữu ích cho các anh chị em đang có dự định xây dựng production chạy trên môi trường aws, hoặc các bạn đang làm việc trên AWS có thể tham khảo và áp dụng cho công việc của mình.

🌐 Website: https://cloudexam.pro