
Tối Ưu Chi Phí AWS: Bí Quyết FinOps Cắt Giảm 60% Cloud Bill
Chi phí Cloud có thể âm thầm “hút cạn” ngân sách của bạn.
Theo báo cáo của Flexera năm 2025, hơn 80% tổ chức đang chi tiêu quá mức trên AWS từ 30–50%, lãng phí ước tính 26 tỷ USD mỗi năm.
Bảng nội dung
- Tối Ưu Chi Phí AWS: Bí Quyết FinOps Cắt Giảm 60% Cloud Bill
- 🛠️ Step 1: Phơi Bày Bẫy Chi phí AWS
- 🛑 Các Vấn Đề và Cách Khắc Phục
- 🚀 Step 2: Right-Sizing và Chuyển sang Serverless
- 🎯 Impact của Right-Sizing và Serverless
- ⚙️ Step 4: Xây Dựng Real-Time Go Cost Monitor
- 🔬 Step 5: Load Testing và Benchmarking
- ✅ Results và Tác động FinOps
- 💡 Step 6: Các Bài học Cốt lõi từ Thực tế Triển khai
- 🎯 Conclusion : Nắm Bắt Kiểm Soát Chi phí AWS của Bạn
Tại tiket.com, hóa đơn AWS của chúng tôi đã tăng vọt lên 25 nghìn USD mỗi tháng — và đáng kinh ngạc là 40% tài nguyên trong số đó ở trạng thái idle (nhàn rỗi). Bằng cách áp dụng các nguyên tắc FinOps, chúng tôi đã giảm chi phí xuống 15 nghìn USD mỗi tháng (mức cắt giảm khổng lồ 60%). Chúng tôi không chỉ dừng lại ở lý thuyết; chúng tôi đã implement, measure và tiết kiệm được hàng triệu đô la.
Trong hướng dẫn này, tôi sẽ break down các chiến thuật chính xác đã hiệu quả với chúng tôi, chia sẻ các real code examples bằng Go (Golang), và những lessons learned từ thực tế. Nếu bạn nghiêm túc về việc tiết kiệm chi phí cloud, hãy tiếp tục đọc.
Bẫy Chi phí AWS Ẩn mà Chúng tôi đã Phải Đối mặt
Quay trở lại năm 2024, tôi là một Cloud Architect tại tiket.com. Ticketing platform (Nền tảng bán vé) của chúng tôi được xây dựng bằng Go đang chạy trên EC2 và RDS, tiêu tốn 25 nghìn USD hàng tháng.
- EC2 Overload: Chúng tôi vận hành một cluster 10-node luôn bị underutilized — CloudWatch đã tiết lộ 40% CPU idle, đốt cháy 10 nghìn USD mỗi tháng.
- Always-On Database: Một instance RDS lớn chạy 24/7, tiêu tốn thêm 5 nghìn USD không cần thiết.
Và chúng tôi không phải là trường hợp cá biệt. Đến năm 2025, 70% Cloud Architect báo cáo tình trạng chi tiêu quá mức tương tự, đối mặt với việc cắt giảm ngân sách nghiêm trọng (Gartner, 2025).
⚡Fact: Quản lý chi phí kém có thể đốt cháy 30% ngân sách cloud của bạn mỗi năm — đối với chúng tôi, đó là khoản lỗ 180 nghìn USD.
Quyết tâm khắc phục, chúng tôi đã nghiên cứu chiến lược FinOps của Airbnb và áp dụng các kỹ thuật right-sizing (điều chỉnh kích thước phù hợp), serverless và các custom monitoring tools (công cụ giám sát tùy chỉnh). Kết quả? Chúng tôi đã cắt giảm hóa đơn AWS hơn 60%.

🛠️ Step 1: Phơi Bày Bẫy Chi phí AWS
Phát hiện các “Lỗ Hổng” Chi phí
Hệ thống của chúng tôi sử dụng EC2 cho các API và RDS cho việc lưu trữ data (dữ liệu). Ban đầu, chúng tôi giám sát chi phí bằng một script Python cơ bản:
import boto3
def check_costs():
client = boto3.client('ce')
response = client.get_cost_and_usage(
TimePeriod={'Start': '2025-05-01', 'End': '2025-05-31'},
Granularity='MONTHLY',
Metrics=['UnblendedCost']
)
cost = response['ResultsByTime'][0]['Total']['UnblendedCost']['Amount']
print(f"Monthly cost: ${cost}")
check_costs()
🛑 Các Vấn Đề và Cách Khắc Phục
Việc thiếu vắng chiến lược FinOps đã dẫn đến ba vấn đề chính gây thất thoát chi phí nghiêm trọng:
- Overprovisioned EC2: 10 instances hoạt động ở mức Utilization chỉ 40% đã lãng phí 10K USD/tháng.
- Idle RDS: Một instance db.m5.xlarge chạy 24/7 đã tiêu tốn thêm 5K USD/tháng một cách không cần thiết.
- No Real-Time Alerts: Script Python của chúng tôi không thể phát hiện kịp thời các đợt tăng đột biến về chi phí.
🔥 Thực tế FinOps: Các công ty không có quy trình FinOps mạnh mẽ chi tiêu nhiều hơn tới 40% cho cloud resources.
CNCF, 2025
🚀 Step 2: Right-Sizing và Chuyển sang Serverless
Hai tactic đầu tiên và hiệu quả nhất là Right-Sizing các tài nguyên Compute và áp dụng kiến trúc Serverless.
📏 Right-Sizing EC2
Chiến thuật này tập trung vào việc khớp nhu cầu Workload thực tế với kích thước instance phù hợp nhất, tránh tình trạng Overprovisioning.
- Phân tích: AWS Trusted Advisor đã gắn cờ năm nodes bị underutilized (sử dụng dưới mức).
- Hành động: Chúng tôi đã giảm quy mô xuống còn năm nodes m5.large, tiết kiệm ngay lập tức 5K USD/tháng.
- Công cụ: AWS Compute Optimizer đã đề xuất sử dụng t3.medium cho một số tác vụ nhất định, mang lại thêm 20% tiết kiệm bổ sung.
🌐 Migrating to Lambda
Chúng tôi đã di chuyển các batch jobs không quan trọng (ví dụ: thông báo email) sang AWS Lambda sử dụng Go. Việc chuyển đổi này cho phép chúng tôi chỉ trả tiền cho thời gian compute thực tế, thay vì trả tiền cho server chạy 24/7.
package main
import (
"context"
"github.com/aws/aws-lambda-go/lambda"
"github.com/aws/aws-sdk-go-v2/config"
"github.com/aws/aws-sdk-go-v2/service/costexplorer"
"github.com/aws/aws-sdk-go-v2/service/costexplorer/types"
"strconv"
"time"
)
type Response struct {
Cost float64 `json:"cost"`
}
func HandleRequest(ctx context.Context) (Response, error) {
cfg, _ := config.LoadDefaultConfig(ctx)
client := costexplorer.NewFromConfig(cfg)
start := time.Now().AddDate(0, 0, -1).Format("2006-01-02")
end := time.Now().Format("2006-01-02")
resp, _ := client.GetCostAndUsage(ctx, &costexplorer.GetCostAndUsageInput{
TimePeriod: &types.DateInterval{Start: &start, End: &end},
Granularity: types.GranularityDaily,
Metrics: []string{"UnblendedCost"},
})
cost, _ := strconv.ParseFloat(*resp.ResultsByTime[0].Total["UnblendedCost"].Amount, 64)
return Response{Cost: cost}, nil
}
func main() {
lambda.Start(HandleRequest)
}
🎯 Impact của Right-Sizing và Serverless
- Kết quả: Chúng tôi đã giảm chi phí batch job từ 2K USD/tháng xuống chỉ còn 15 USD/tháng.
⭐ Thực tế: Chỉ riêng chiến lược Right-Sizing đã có thể giúp bạn tiết kiệm 30–50% chi phí compute resources.
AWS, 2025
💲 Step 3: Tận Dụng Spot và Reserved Instances
Sau khi Right-Sizing các tài nguyên Compute, bước tiếp theo để tối đa hóa tiết kiệm là áp dụng các mô hình thanh toán linh hoạt của AWS.
Spot Instances
Spot Instances là lựa chọn hoàn hảo cho các non-critical tasks có thể chịu được việc bị gián đoạn (ví dụ: log processing – xử lý nhật ký).
- Lợi ích: Tiết kiệm tới 70% chi phí On-Demand, giúp chúng tôi tiết kiệm khoảng 2K USD/tháng.
- Chiến thuật IT: Sử dụng các Auto Scaling Group và Spot Fleet để tự động quản lý và thay thế các instance khi chúng bị interrupt.
Reserved Instances (RIs)
Reserved Instances là một cam kết về việc sử dụng instance trong thời gian dài (thường là 1 hoặc 3 năm), lý tưởng cho các workload ổn định.
- Hành động: Chúng tôi đã cam kết RIs một năm cho RDS (Database), cắt giảm chi phí database lên tới 40% (khoảng 2K USD/tháng).
- Khái niệm: RIs khóa một mức giá chiết khấu, đảm bảo chi phí thấp hơn cho các tài nguyên Core Infrastructure (Cơ sở hạ tầng cốt lõi).
📊 Thực tế FinOps: Việc kết hợp sử dụng Spot Instances và Reserved Instances có thể cắt giảm tổng hóa đơn cloud bills lên tới 60%.
Gartner, 2025

⚙️ Step 4: Xây Dựng Real-Time Go Cost Monitor
Chúng tôi đã phát triển một service Lambda sử dụng ngôn ngữ Go để theo dõi các cost spikes ngoài dự kiến và ngay lập tức gửi cảnh báo qua SNS.
package main
import (
"context"
"fmt"
"strconv"
"github.com/aws/aws-lambda-go/lambda"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/config"
"github.com/aws/aws-sdk-go-v2/service/costexplorer"
"github.com/aws/aws-sdk-go-v2/service/sns"
"github.com/aws/aws-sdk-go-v2/service/costexplorer/types"
"time"
)
func HandleRequest(ctx context.Context) (string, error) {
cfg, _ := config.LoadDefaultConfig(ctx)
ce := costexplorer.NewFromConfig(cfg)
snsClient := sns.NewFromConfig(cfg)
start := time.Now().AddDate(0, 0, -1).Format("2006-01-02")
end := time.Now().Format("2006-01-02")
resp, _ := ce.GetCostAndUsage(ctx, &costexplorer.GetCostAndUsageInput{
TimePeriod: &types.DateInterval{Start: &start, End: &end},
Granularity: types.GranularityDaily,
Metrics: []string{"UnblendedCost"},
})
cost, _ := strconv.ParseFloat(*resp.ResultsByTime[0].Total["UnblendedCost"].Amount, 64)
if cost > 500 {
snsClient.Publish(ctx, &sns.PublishInput{
TopicArn: aws.String("arn:aws:sns:us-east-1:123456789012:CostAlerts"),
Message: aws.String(fmt.Sprintf("🚨 Cost spike detected: $%.2f", cost)),
})
return "Alert sent!", nil
}
return "No spikes detected.", nil
}
func main() {
lambda.Start(HandleRequest)
}
🔬 Step 5: Load Testing và Benchmarking
Chúng tôi sử dụng k6 – một công cụ Load Testing mã nguồn mở được viết bằng Go – để mô phỏng một lượng lớn các lệnh gọi API Cost Explorer đồng thời:
import http from 'k6/http';
import { sleep } from 'k6';
export default function () {
http.post('https://your-api-endpoint/costs', JSON.stringify({}));
sleep(1);
}
✅ Results và Tác động FinOps
Việc áp dụng chiến lược FinOps toàn diện, từ Right-Sizing đến triển khai Real-Time Monitor bằng Go, đã mang lại các kết quả đột phá:
- Độ trễ: 10 giây (nhanh hơn 83% so với script Python cũ).
- Tiết kiệm hàng tháng: 15K USD (giảm từ 25K USD).
- Phát hiện Tăng đột biến: Độ chính xác 100%.
📈 Thực tế: Việc Giám sát FinOps tự động có thể giảm các tình trạng vượt ngân sách (budget overruns) lên tới 50%.
CNCF, 2025

💡 Step 6: Các Bài học Cốt lõi từ Thực tế Triển khai
Hành trình FinOps này không chỉ thuần về kỹ thuật; nó còn mang ý nghĩa cá nhân. Vô số đêm thức khuya đã được đền đáp khi chúng tôi giảm cloud spend (chi tiêu đám mây) tới 60% và giành được một giải thưởng nội bộ.
Tầm quan trọng của Tối ưu hóa Chi phí Đám mây
AWS cost optimization, như đã được áp dụng bởi Netflix và Airbnb, là kỹ năng must-have (bắt buộc phải có) trong năm 2025. Với cloud spending tăng 25% YoY (Year-over-Year) (AWS, 2025), các kỹ năng FinOps mở ra cơ hội việc làm với mức lương 120K–180K USD (Glassdoor, 2025). Đây không chỉ là việc tiết kiệm tiền – đây là việc duy trì sự relevant (phù hợp) trong ngành.
Thử Tự mình Triển khai: Go AWS Cost-Monitoring Guide
Hãy tự xây dựng một công cụ cost-monitoring dựa trên GoLang để bắt đầu hành trình FinOps của bạn:
- Set Up Lambda (Thiết lập Lambda): Chuẩn bị môi trường AWS Lambda.
- Build and deploy the GoLang handler (Xây dựng và triển khai GoLang handler): Viết và deploy mã Go của bạn.
GOOS=linux go build -o main . zip main.zip main aws lambda create-function --function-name CostWatch --zip-file fileb://main.zip --handler main --runtime go1.x --role arn:aws:iam::123456789012:role/lambda-role
2. Configure SNS:
- Create an SNS topic for alerts:
aws sns create-topic --name CostAlerts
3. Schedule Monitoring:
- Use EventBridge to trigger Lambda daily:
aws events put-rule --name DailyCostCheck --schedule-expression "rate(1 day)"
🧪 4. Kiểm tra với k6
Chạy script k6 đã chuẩn bị để xác minh latency (độ trễ) ở mức 10 giây cho công cụ cost monitor của bạn.
Phân tích Chi phí của Monitoring Tool
Chi phí vận hành công cụ giám sát chi phí real-time bằng Go/Lambda là cực kỳ thấp:
- Lambda: 0.50 USD/ngày (cho 10K invocations – lần gọi hàm)
- SNS: 0.01 USD/ngày (cho các cảnh báo – alerts)
- Total (Tổng cộng): 0.51 USD/ngày
🎯 Conclusion: Nắm Bắt Kiểm Soát Chi phí AWS của Bạn
Dù bạn đang điều hành một startup nhỏ hay một enterprise (doanh nghiệp lớn), việc phớt lờ chi phí cloud có thể làm ngân sách của bạn cạn kiệt nhanh chóng. Bằng cách áp dụng các thực hành FinOps, tiến hành right-sizing, chuyển sang serverless, và thực hiện monitoring proactively (giám sát chủ động), bạn có thể cắt giảm hóa đơn AWS một cách ngoạn mục như cách chúng tôi đã làm.
Thank, bro.