Ngôn ngữ hiển thị:
Có một cái bẫy mà hầu hết team startup đều rơi vào: launch xong sản phẩm, quên mất hóa đơn cloud. Đến cuối tháng nhận bill từ AWS, giật mình. Tháng sau lại giật mình hơn. Đến lúc sếp hỏi "sao chi phí infrastructure tăng 40%?" thì không ai có câu trả lời rõ ràng.
FinOps — hay Financial Operations — chính là bộ công cụ tư duy + kỹ thuật để bạn không còn bị "bất ngờ" bởi hóa đơn cloud nữa. Và trên AWS, ba thứ bạn cần nắm đầu tiên là Cost Explorer, Savings Plans, và Spot Instances.
Cloud không giống on-premise. On-premise bạn mua server một lần, dùng mãi. Cloud bạn trả tiền theo giờ — và nếu không chú ý, những resource "tạm thời" từ sprint trước có thể chạy âm thầm mãi tháng sau.
Mình từng gặp một case: team dev spin up EC2 m5.2xlarge để test load, xong sprint quên terminate. Cứ thế chạy 3 tháng. Tổng thiệt hại: khoảng 1.200 USD. Không phải vì team lơ là — mà vì họ không có visibility vào chi phí theo thời gian thực.
FinOps giải quyết ba thứ cơ bản: Visibility (ai đang dùng gì, tốn bao nhiêu), Optimization (có thể mua rẻ hơn không, có resource nào thừa không), và Accountability (team nào chịu trách nhiệm cho khoản chi nào).
Cost Explorer là dashboard miễn phí để bạn xem chi phí AWS theo nhiều chiều: theo service, theo region, theo tag, theo account.
Bật Cost Allocation Tags ngay hôm nay — đây là thứ quan trọng nhất mà nhiều người bỏ qua. Khi bạn gắn tag Environment: production, Team: backend, Project: payment-service cho resource, Cost Explorer sẽ cho bạn thấy chính xác khoản chi nào thuộc về ai.
# Gắn tag khi tạo resource (ví dụ EC2 qua AWS CLI)
aws ec2 create-tags \
--resources i-1234567890abcdef0 \
--tags Key=Environment,Value=production \
Key=Team,Value=backend \
Key=Project,Value=payment-serviceSau đó vào AWS Console → Billing → Cost Explorer → Tags để activate tags này. Mất 24h để data hiện ra — nhưng từ đó về sau bạn có thể filter chi phí cực kỳ chính xác.
Anomaly Detection là tính năng mình thấy underrated nhất. Bật nó lên, AWS tự học "baseline" chi phí bình thường của bạn và alert ngay khi có spike bất thường. Cài đặt qua Cost Explorer → Cost Anomaly Detection → Create monitor. Nối với SNS để nhận thông báo khi có bất thường.
Tip thực chiến: Tạo riêng một report "Top 10 services by cost" và schedule gửi email hàng tuần. Sau 2-3 tháng bạn sẽ có baseline rõ ràng để nhận ra ngay khi có gì không ổn.
On-demand pricing của AWS là "giá lẻ" — bạn trả full price mà không cần cam kết gì. Savings Plans cho phép bạn cam kết một mức spend cố định mỗi giờ (tính bằng USD/hour) trong 1 hoặc 3 năm, đổi lại được giảm tới 72% so với on-demand.
Có ba loại chính: Compute Savings Plans linh hoạt nhất — áp dụng cho mọi EC2, Lambda, Fargate, bất kể instance family, region, hay OS, giảm tới 66%. EC2 Instance Savings Plans cam kết theo instance family trong một region cụ thể, giảm sâu hơn tới 72% nhưng ít linh hoạt hơn. SageMaker Savings Plans dành riêng cho ML workload.
Khi nào nên mua Savings Plans? Khi bạn có baseline workload chạy 24/7 ổn định — ví dụ production API server, database proxy, monitoring stack. Với những thứ này, bạn biết chắc tháng nào cũng cần, không có lý do gì trả on-demand.
Workflow mình hay dùng: Vào Cost Explorer → Savings Plans → Recommendations — AWS tự phân tích usage 7/30/60 ngày qua và recommend mức commitment phù hợp. Chọn "Compute Savings Plans" với term 1 năm, payment upfront một nửa. Sau đó theo dõi Savings Plans Utilization hàng tuần để đảm bảo bạn đang dùng hết phần đã commit.
Lưu ý: Nếu Utilization dưới 80%, nghĩa là bạn đang "trả tiền cho thứ không dùng". Xem lại workload hoặc consolidate resource trước khi gia hạn.
AWS có một lượng EC2 capacity không được đặt trước — họ bán số này với giá Spot, thường rẻ hơn 70-90% so với on-demand. Đổi lại, AWS có thể thu hồi instance với 2 phút cảnh báo khi họ cần capacity đó cho người khác.
Workload phù hợp với Spot: batch processing (image resize, video transcode, data pipeline), CI/CD workers (GitHub Actions self-hosted runners, Jenkins agents), ML training jobs có checkpoint để restart khi bị interrupt, và stateless web tier sau Load Balancer. Workload KHÔNG phù hợp: Database primary, session store, bất cứ thứ gì stateful mà không có proper replication.
Cách deploy an toàn với Spot — dùng Mixed Instance Policy trong Auto Scaling Group:
aws autoscaling create-auto-scaling-group \
--auto-scaling-group-name my-mixed-asg \
--mixed-instances-policy '{
"InstancesDistribution": {
"OnDemandBaseCapacity": 2,
"OnDemandPercentageAboveBaseCapacity": 20,
"SpotAllocationStrategy": "capacity-optimized"
},
"LaunchTemplate": {
"LaunchTemplateSpecification": {
"LaunchTemplateName": "my-launch-template",
"Version": "$Latest"
},
"Overrides": [
{"InstanceType": "m5.xlarge"},
{"InstanceType": "m5a.xlarge"},
{"InstanceType": "m4.xlarge"},
{"InstanceType": "m5n.xlarge"}
]
}
}' \
--min-size 2 --max-size 20 --desired-capacity 6Config trên giữ 2 On-Demand instance làm "base" không bao giờ mất, 20% capacity tiếp theo cũng là On-Demand, phần còn lại là Spot. Strategy capacity-optimized giúp AWS chọn pool Spot ít bị interrupt nhất.
Mẹo khi dùng Spot: Đa dạng hóa instance type (ít nhất 4-5 loại tương đương nhau). Khi một pool bị cạn kiệt, ASG tự dùng pool khác. Đừng bao giờ chỉ chọn 1 instance type cho Spot ASG.
Data Transfer costs bị bỏ qua: Mọi người tập trung vào EC2 và RDS, nhưng nhiều khi chi phí data transfer (đặc biệt egress ra internet, hoặc cross-AZ) mới là thủ phạm thực sự. Dùng Cost Explorer filter theo "Data Transfer" để kiểm tra.
Idle Load Balancers và NAT Gateways: ALB/NLB và NAT Gateway tính phí theo giờ dù không có traffic. Xóa ngay những thứ không dùng — đây là "tiền chết" thuần túy.
Snapshot tích lũy không được dọn: EBS snapshot tích lũy mãi theo thời gian. Dùng AWS Backup hoặc script tự động xóa snapshot cũ hơn 30 ngày cho môi trường non-production.
Rightsizing bị bỏ quên: EC2 instance bạn chọn lúc launch thường là "safe choice" — to hơn cần thiết. Bật Cost Explorer → Rightsizing Recommendations để xem AWS suggest downsize những instance nào đang underutilized (CPU thấp hơn 40% trong 14 ngày).
Q: Savings Plans và Reserved Instances khác nhau thế nào?A: Reserved Instances (RI) cũ hơn và cứng hơn — bạn cam kết theo instance type, region, OS cụ thể. Savings Plans linh hoạt hơn nhiều: với Compute Savings Plans bạn chỉ cần cam kết mức spend (USD/hour), còn AWS tự áp dụng discount cho bất kỳ EC2/Lambda/Fargate nào bạn dùng. AWS hiện khuyến nghị dùng Savings Plans thay RI cho hầu hết use case.
Q: Spot Instance bị interrupt thì ứng dụng có bị mất data không?A: Phụ thuộc vào cách bạn thiết kế. Với stateless app (web server, API), Load Balancer tự drain connection và ASG thay thế instance mới — user hầu như không cảm nhận được. Với batch job, bạn cần implement checkpoint để job restart từ điểm cuối cùng thay vì chạy lại từ đầu. AWS gửi interruption notice 2 phút trước — đủ để gracefully shutdown.
Q: Nên bắt đầu FinOps từ đâu nếu hiện tại chưa có gì?A: Ba bước theo thứ tự: (1) Bật Cost Allocation Tags cho tất cả resource ngay hôm nay. (2) Cài Cost Anomaly Detection với alert qua email. (3) Xem Savings Plans Recommendations sau 30 ngày để thấy AWS suggest bạn nên commit bao nhiêu. Visibility trước, optimization sau.
Đây là thứ mình muốn mọi engineer hiểu: FinOps không phải việc của kế toán. Khi bạn viết Terraform, khi bạn chọn instance type, khi bạn quyết định architecture — bạn đang ra quyết định tài chính. Tốt hơn là ra quyết định đó với đầy đủ thông tin.
Cost Explorer cho bạn thấy tiền đang chạy đi đâu. Savings Plans giúp bạn trả ít hơn cho thứ bạn chắc chắn cần. Spot Instances cho bạn compute với giá không tưởng nếu workload chịu được interruption. Ba công cụ này, dùng đúng cách, có thể cắt 40-60% hóa đơn AWS mà không cần downgrade bất cứ dịch vụ nào.
Mình nghĩ đó là khoản đầu tư thời gian xứng đáng nhất bạn có thể làm tuần này.