Product Management
Đăng nhập
ESC

Nhập từ khóa để tìm kiếm

↑↓ Di chuyển
Enter Mở
ESC Đóng

Bài 43 — Cost Optimization — FinOps cơ bản

Đã đọc 0/14 mục · còn khoảng 13 phút
Cách chúng tôi ghi nhận

Một mục được tính là đã đọc khi nó nằm giữa màn hình đủ lâu so với độ dài của nó (bảng và sơ đồ tính một nửa), bạn vẫn đang cuộn hoặc bấm phím, và bạn đã thấy tới cuối mục. Lướt nhanh hoặc để tab mở không được tính. Chúng tôi chỉ lưu thời gian đọc từng mục — không lưu gì khác.

Mở đầu — vì sao bài này quan trọng

Có một cảnh tượng lặp đi lặp lại ở rất nhiều công ty công nghệ: cuối tháng, hóa đơn cloud gửi về. Con số tháng này cao hơn tháng trước 30%. CFO cầm hóa đơn xuống phòng kỹ thuật hỏi một câu đơn giản: "Tại sao đắt vậy? Tiền đổ vào đâu?". Và cả đội DevOps đứng hình. Không ai trả lời được chính xác service nào tốn bao nhiêu, môi trường staging đang ngốn bao nhiêu, hay tại sao chi phí lại tăng đột biến. Panic.

Đây không phải chuyện hiếm. Khi bạn còn chạy on-premise, chi phí hạ tầng là một khoản CAPEX (chi phí vốn) cố định — mua server một lần, dùng vài năm. Nhưng khi lên cloud, mọi thứ chuyển thành OPEX (chi phí vận hành) — bạn trả tiền theo từng giây sử dụng, từng GB lưu trữ, từng GB truyền ra ngoài. Điều nguy hiểm là: mọi kỹ sư đều có quyền tạo ra chi phí, nhưng gần như không ai nhìn thấy chi phí đó theo thời gian thực. Một dòng lệnh terraform apply vô tình tạo ra 10 node c5.4xlarge có thể đốt vài nghìn đô một tháng mà chẳng ai hay.

FinOps (Financial Operations) ra đời để giải quyết đúng vấn đề này. Nó không phải là "cắt giảm chi phí bằng mọi giá" — đó là hiểu lầm phổ biến nhất. FinOps là một văn hóa vận hành giúp các đội kỹ thuật, tài chính và kinh doanh cùng ra quyết định về chi phí cloud một cách có dữ liệu, để mỗi đồng chi ra đều tạo ra giá trị tương xứng. Là một DevOps Engineer, bạn chính là người đứng ở giao điểm giữa "kỹ thuật" và "tiền bạc" — nên hiểu FinOps là kỹ năng ngày càng quyết định việc bạn được coi là junior hay senior.

Khái niệm cốt lõi

FinOps là gì và không phải là gì

FinOps là viết tắt của Cloud Financial Operations, một framework do FinOps Foundation chuẩn hóa. Định nghĩa ngắn gọn: đây là hoạt động mang tính văn hóa và kỹ thuật giúp tổ chức tối đa hóa giá trị kinh doanh trên mỗi đồng chi cho cloud, thông qua sự cộng tác giữa đội kỹ thuật và đội tài chính.

Điểm mấu chốt cần nhớ: FinOps không phải là tiết kiệm tối đa, mà là chi tiêu thông minh. Đôi khi quyết định đúng của FinOps là chi nhiều hơn — ví dụ scale up thêm server để phục vụ mùa cao điểm mang về doanh thu lớn hơn nhiều lần chi phí. Vấn đề không phải con số hóa đơn, mà là tỷ lệ giá trị trên chi phí (unit economics).

Ba nguyên tắc trụ cột: Inform, Optimize, Operate

FinOps Foundation chia vòng đời FinOps thành ba giai đoạn lặp đi lặp lại:

1. Inform (Thông tin — Visibility) — Đây là nền móng. Bạn không thể tối ưu thứ mình không đo được. Giai đoạn này trả lời câu hỏi: tiền đang đổ vào đâu? Team nào, service nào, môi trường nào tiêu bao nhiêu? Công cụ chính là tagging (gắn nhãn tài nguyên) và cost allocation (phân bổ chi phí). Nếu mỗi resource trên cloud đều có tag như team=payment, env=production, service=checkout, bạn có thể cắt hóa đơn tổng thành từng lát rõ ràng.

2. Optimize (Tối ưu) — Sau khi nhìn thấy, bạn bắt đầu hành động. Các đòn bẩy chính gồm: rightsizing (chọn đúng kích cỡ máy), loại bỏ tài nguyên nhàn rỗi, mua cam kết dài hạn (Reserved Instances, Savings Plans, Committed Use Discounts) để đổi lấy giá rẻ hơn 30–70%, dùng Spot/Preemptible instances cho workload chịu được gián đoạn, và tối ưu storage tier.

3. Operate (Vận hành) — Biến tối ưu thành thói quen liên tục, không phải chiến dịch một lần. Thiết lập ngân sách (budget), cảnh báo (alert), định kỳ review, và gắn trách nhiệm chi phí (showback/chargeback) vào từng team.

Bốn đòn bẩy tối ưu quan trọng nhất

Khi bắt tay vào giảm hóa đơn, bạn nên nhớ thứ tự ưu tiên "dễ ăn trước":

  • Xóa lãng phí (waste): EBS volume mồ côi không gắn vào máy nào, snapshot cũ, Elastic IP không dùng, load balancer không có traffic, môi trường dev chạy 24/7. Đây là tiền vứt đi hoàn toàn, cắt không đau.
  • Rightsizing: Rất nhiều máy chạy ở mức CPU trung bình 5–10%. Hạ từ instance lớn xuống nhỏ hơn hoặc chuyển sang dòng thế hệ mới (ví dụ ARM/Graviton rẻ hơn ~20%) tiết kiệm ngay.
  • Cam kết (Commitment): Với workload chạy ổn định 24/7 (như database production), mua Reserved Instance hoặc Savings Plan 1–3 năm giảm 30–70% so với on-demand.
  • Spot/Preemptible: Với batch job, CI runner, worker stateless — dùng Spot Instance giảm tới 70–90%, đổi lại chấp nhận bị thu hồi bất ngờ.

Showback vs Chargeback

Đây là hai mô hình quy trách nhiệm chi phí. Showback là "cho xem" — mỗi team nhìn thấy hóa đơn của mình nhưng không thực sự bị trừ ngân sách; mục đích tạo nhận thức. Chargeback là "tính tiền thật" — chi phí cloud của team được trừ trực tiếp vào ngân sách của team đó. Chargeback tạo động lực mạnh hơn nhưng khó triển khai hơn vì cần tagging hoàn hảo. Đa số công ty bắt đầu bằng showback rồi tiến tới chargeback.

Tình huống thực tế

Ví dụ 1: Startup fintech ở TP.HCM và cú sốc hóa đơn $18.000

Một startup fintech tại Việt Nam (gọi là công ty A) chạy toàn bộ hạ tầng trên AWS Singapore. Trong 6 tháng đầu, hóa đơn tăng đều từ $4.000 lên $18.000/tháng. Founder hoảng vì burn rate ăn vào vốn nhanh hơn dự kiến. Đội DevOps 3 người được giao "cứu hóa đơn trong 2 tuần".

Việc đầu tiên họ làm không phải là cắt gì cả, mà là bật AWS Cost Explorer và Cost and Usage Report, rồi phát hiện ba điều: (1) môi trường staging và dev chạy 24/7 dù chỉ dùng giờ hành chính — chiếm 22% hóa đơn; (2) một RDS instance db.r5.4xlarge được tạo từ đợt load test tháng trước, quên xóa — $1.400/tháng cho một thứ không ai dùng; (3) chi phí NAT Gateway và data transfer chiếm gần $3.000 do log được đẩy qua internet thay vì qua VPC endpoint nội bộ.

Hành động: viết một Lambda + EventBridge để tự động tắt staging/dev lúc 20h và bật lại lúc 8h các ngày trong tuần (tiết kiệm ~65% giờ chạy của môi trường non-prod), xóa RDS mồ côi, và thêm VPC endpoint cho S3/CloudWatch. Kết quả sau 3 tuần: hóa đơn xuống còn $11.500/tháng — giảm 36% mà không hề ảnh hưởng production.

Bài học rút ra: Phần lớn lãng phí cloud không nằm ở production, mà ở những thứ "quên tắt" và những khoản phí ẩn (data transfer, NAT Gateway) mà không ai để ý. Visibility phải đến trước mọi hành động cắt giảm.

Ví dụ 2: Công ty thương mại điện tử và bài toán tag hỗn loạn

Một sàn TMĐT khu vực Đông Nam Á có ~40 microservices trên Kubernetes (EKS). Khi CFO yêu cầu "biết mỗi team tốn bao nhiêu để tính vào P&L của team đó", đội platform mới nhận ra một sự thật đau đớn: chỉ 30% tài nguyên có tag đầy đủ. Hóa đơn EKS là một cục $60.000/tháng không thể bổ ra được, vì nhiều team dùng chung cluster.

Họ giải quyết theo hai hướng. Về tổ chức, ban hành tagging policy bắt buộc: mọi namespace phải có label team, cost-center, env, và dùng công cụ Kubecost (một open-source phổ biến cho cost visibility trên Kubernetes) để phân bổ chi phí compute theo namespace dựa trên request/limit thực tế. Về kỹ thuật, dùng Policy as Code (OPA/Kyverno) chặn mọi pod deploy nếu thiếu label bắt buộc — không tag thì không lên được production.

Sau 2 tháng, họ chuyển từ showback (chỉ cho xem) sang chargeback (tính vào ngân sách team). Điều thú vị: chỉ riêng việc mỗi team nhìn thấy con số của mình đã khiến tổng chi phí giảm 15%, vì các team tự động dọn dẹp những service zombie mà trước đó "không phải tiền của tôi nên kệ".

Bài học rút ra: Không có tag thì không có FinOps. Và yếu tố con người (mỗi team chịu trách nhiệm về con số của mình) thường tạo hiệu quả lớn hơn cả thủ thuật kỹ thuật.

Ví dụ 3: Đội data lạm dụng on-demand cho batch job

Một công ty SaaS chạy pipeline xử lý dữ liệu hàng đêm trên ~50 EC2 instance loại c5.2xlarge, tất cả đều on-demand. Chi phí phần compute cho batch job này là ~$9.000/tháng. Đội DevOps nhận ra đây là workload lý tưởng cho Spot Instance: job chạy ban đêm, có thể chia nhỏ, và nếu một node bị thu hồi thì chỉ cần chạy lại phần đó.

Họ chuyển pipeline sang chạy trên Spot Instance với chiến lược diversification (dùng nhiều loại instance khác nhau để giảm rủi ro bị thu hồi đồng loạt) và thêm cơ chế checkpoint để job phục hồi khi bị ngắt. Chi phí phần này giảm từ $9.000 xuống ~$2.300/tháng — tiết kiệm gần 75%. Với phần database và API luôn chạy 24/7, họ mua Savings Plan 1 năm, giảm thêm 40% cho khối lượng ổn định đó.

Bài học rút ra: Không phải mọi workload đều nên trả cùng một mức giá. Phân loại workload theo tính chất (ổn định 24/7 → commitment; chịu gián đoạn → Spot; thất thường → on-demand) là kỹ năng FinOps cốt lõi của một DevOps Engineer.

Hướng dẫn từng bước

Nếu bạn được giao nhiệm vụ "kiểm soát chi phí cloud", đây là lộ trình thực tế:

Bước 1 — Bật công cụ visibility. Trước hết kích hoạt công cụ cost gốc của nhà cung cấp: AWS Cost Explorer + Cost and Usage Report (CUR), GCP Cost Table / BigQuery billing export, hoặc Azure Cost Management. Đây là nguồn dữ liệu thật, miễn phí, và là điểm khởi đầu bắt buộc.

Bước 2 — Thiết lập tagging strategy. Định nghĩa bộ tag bắt buộc tối thiểu: team (hoặc owner), env (prod/staging/dev), service và cost-center. Áp dụng ngay trong Terraform bằng default_tags ở cấp provider để mọi resource mới tự động được gắn nhãn. Với resource cũ, dùng script rà soát và backfill.

Bước 3 — Enforce tagging bằng Policy as Code. Đừng dựa vào ý thức tự giác. Dùng OPA/Kyverno hoặc AWS SCP để chặn việc tạo resource thiếu tag. Nguyên tắc: "no tag, no deploy".

Bước 4 — Phân bổ và báo cáo (showback). Xây dashboard chia hóa đơn theo team/service/env. Gửi báo cáo định kỳ hằng tuần hoặc hằng tháng tới từng team. Mục tiêu giai đoạn này chỉ là tạo nhận thức.

Bước 5 — Dọn lãng phí trước tiên. Săn các "quick win": resource mồ côi (EBS/EIP/snapshot không dùng), môi trường non-prod chạy 24/7, load balancer không traffic. Tự động tắt dev/staging ngoài giờ bằng scheduler.

Bước 6 — Rightsizing. Dùng dữ liệu utilization (CPU, RAM, network) trong 2–4 tuần để xác định máy over-provisioned. Hạ size hoặc chuyển sang dòng Graviton/ARM khi phù hợp.

Bước 7 — Mua cam kết cho workload ổn định. Sau khi đã rightsizing (mua commitment trước khi rightsizing là sai lầm — bạn sẽ khóa mình vào kích cỡ cũ), mua Savings Plan / Reserved Instance / Committed Use Discount cho phần chạy 24/7.

Bước 8 — Thiết lập budget & alert. Đặt ngân sách theo team và cấu hình cảnh báo khi chi tiêu vượt 80% hoặc khi có anomaly (tăng đột biến bất thường). Đây là bước chuyển sang giai đoạn Operate — biến FinOps thành quy trình liên tục.

Lỗi thường gặp & mẹo

Lỗi 1 — Coi FinOps là chiến dịch một lần. Nhiều đội làm một đợt "dọn hóa đơn" rồi bỏ quên. Ba tháng sau chi phí lại phình ra vì không có ai giám sát liên tục. FinOps phải là vòng lặp Inform → Optimize → Operate chạy mãi mãi.

Lỗi 2 — Tối ưu trước khi có visibility. Cắt giảm mù quáng dễ vô tình bóp production hoặc tối ưu nhầm chỗ ít tác động. Luôn đo trước, cắt sau.

Lỗi 3 — Mua Reserved Instance quá sớm hoặc quá nhiều. Commitment là dao hai lưỡi: cam kết sai kích cỡ hoặc cam kết cho workload sắp thay đổi kiến trúc sẽ khóa bạn vào chi phí lãng phí suốt 1–3 năm. Rightsize trước, cam kết theo baseline chắc chắn (thường 60–80% mức nền, để phần biến động cho on-demand/Spot).

Lỗi 4 — Bỏ qua chi phí ẩn. Data transfer (đặc biệt egress ra internet và cross-AZ), NAT Gateway, số lượng request tới S3, snapshot tích lũy — những khoản này âm thầm chiếm phần lớn hóa đơn mà dashboard tổng hay che mất.

Lỗi 5 — Đặt gánh nặng lên một người. FinOps không phải việc của riêng một "FinOps guy". Nó là văn hóa cross-team. Kỹ sư viết code cũng cần biết dòng code của mình tốn tiền thế nào.

Mẹo hữu ích:

  • Dùng default_tags trong Terraform provider để không bao giờ quên gắn nhãn resource mới.
  • Bật anomaly detection (AWS Cost Anomaly Detection, GCP) để phát hiện tăng đột biến trong ngày thay vì đợi cuối tháng mới sốc.
  • Gắn số liệu unit cost (chi phí trên mỗi user, mỗi đơn hàng, mỗi 1.000 request) vào dashboard — con số này ý nghĩa với business hơn nhiều so với tổng hóa đơn thô.
  • Tự động tắt môi trường non-prod ngoài giờ: một scheduler đơn giản thường tiết kiệm 60–70% chi phí dev/staging.

Bài tập thực hành

  • Kiểm toán hóa đơn cá nhân/công ty. Mở Cost Explorer (hoặc công cụ tương đương). Nhóm chi phí theo service và theo tag. Trả lời: 3 service tốn tiền nhất là gì? Bao nhiêu % resource của bạn không có tag đầy đủ?
  • Săn lãng phí. Liệt kê ít nhất 5 loại tài nguyên lãng phí có thể tồn tại trong một tài khoản cloud (ví dụ EBS mồ côi, EIP không dùng...). Với mỗi loại, mô tả cách phát hiện và cách xử lý an toàn.
  • Thiết kế tagging policy. Viết ra bộ tag bắt buộc tối thiểu cho công ty bạn (giả định), và viết một đoạn rule Kyverno/OPA (dạng giả mã cũng được) để chặn pod thiếu label team.
  • Phân loại workload. Cho danh sách: (a) database production 24/7, (b) CI runner, (c) batch xử lý dữ liệu ban đêm, (d) API frontend production, (e) môi trường staging. Với mỗi cái, chọn mô hình giá phù hợp nhất (on-demand / Savings Plan / Reserved / Spot / auto-shutdown) và giải thích tại sao.
  • Tính unit cost. Giả sử hóa đơn tháng là $12.000 và bạn phục vụ 300.000 đơn hàng. Tính chi phí cloud trên mỗi đơn. Nếu tháng sau đơn tăng gấp đôi mà hóa đơn chỉ tăng 40%, điều đó nói lên gì về hiệu quả hạ tầng của bạn?

Tóm tắt

FinOps không phải là "cắt chi phí cloud", mà là văn hóa vận hành giúp mỗi đồng chi ra tạo ra giá trị tương xứng, thông qua sự cộng tác giữa kỹ thuật, tài chính và kinh doanh. Vấn đề gốc mà nó giải quyết là: trên cloud, ai cũng có thể tạo chi phí nhưng gần như không ai nhìn thấy nó — dẫn tới cảnh CFO cầm hóa đơn xuống hỏi và cả đội DevOps đứng hình.

Ba trụ cột cần khắc cốt ghi tâm: Inform (visibility qua tagging và cost allocation — không đo được thì không tối ưu được), Optimize (dọn lãng phí, rightsizing, cam kết dài hạn, Spot), và Operate (budget, alert, showback/chargeback biến FinOps thành thói quen liên tục). Thứ tự hành động đúng luôn là: nhìn thấy trước, dọn lãng phí, rightsize, rồi mới mua cam kết.

Là một DevOps Engineer, bạn là người đứng giữa kỹ thuật và tiền bạc. Khả năng nhìn một kiến trúc và ước lượng nó tốn bao nhiêu, cũng như đề xuất cách tiết kiệm mà không hy sinh độ tin cậy, chính là thứ phân biệt một kỹ sư giỏi. Hãy bắt đầu ngay hôm nay bằng việc mở Cost Explorer và tự hỏi: "Tiền của mình đang đổ vào đâu?".

Học xong bài này rồi? Tạo tài khoản miễn phí để lưu lại — lần sau vào là biết ngay đang dở ở đâu, và học hết khóa thì có chứng chỉ. Lưu tiến độ của tôi