Hosting Minecraft 9 phút đọc

Lãng phí tài nguyên đám mây: Làm thế nào FinOps giúp bạn cắt giảm chi phí hiệu quả?

Chào mọi người, mình là một người vận hành hệ thống đã nhiều năm. Dạo gần đây, mình hay nghe mọi người than vãn về chuyện chi phí cloud “đội” lên chóng mặt. Mình cũng từng dính chưởng, quên tắt một con EC2 tưởng đã dừng mà nó vẫn âm thầm chạy, vài ngày sau nhận hóa đơn mà giật mình. Đó không phải chuyện hiếm đâu, theo số liệu mình đọc được từ nhiều nguồn, các doanh nghiệp thường thấy lãng phí 20–50% trong chi tiêu đám mây của họ. Con số này không hề nhỏ, đúng không?

Vậy, làm sao để mình biết tiền mình đang chảy đi đâu? Và làm thế nào để bịt những lỗ hổng đó lại? FinOps chính là câu trả lời. Nghe thì có vẻ cao siêu, nhưng thực ra nó chỉ là một cách mình nhìn nhận và quản lý chi phí đám mây thôi. Kiểu như mình làm vận hành server game, mà tự nhiên phải học thêm làm kế toán một chút vậy đó.

Cloud billing là gì? Lợi ích của cloud billing trong quản lý chi phí đám  mâyZ.com Cloud VPS – Tốc Độ Cao Khởi Tạo Trong 1 Phút

Vứt tiền qua cửa sổ: Ai cũng từng dính (hoặc sắp dính)

Đầu tiên, phải nhìn nhận rằng lãng phí tài nguyên đám mây là chuyện… bình thường ở huyện. Đôi khi là mình triển khai xong, rồi quên tắt đi mấy tài nguyên test. Hoặc đôi khi mình scale lên vội quá, xong rồi lại quên scale xuống. Nhiều khi các bạn dev tạo mấy con máy chủ ảo, chạy được vài hôm, xong để đó không dùng nữa, nhưng nó vẫn cứ đều đặn đốt tiền.

Mình đọc một bài trên FinOpsForge, họ nói rằng chỉ cần một cuộc kiểm toán nhanh trong một ngày thôi là có thể tìm thấy 5K–50K USD/tháng tiết kiệm ngay lập tức. Toàn là những khoản dễ như trở bàn tay: tài nguyên nhàn rỗi, khối lượng không gắn kết (unattached volumes) hay các phiên bản đã dừng nhưng vẫn phát sinh phí. Cái vụ phiên bản dừng mà vẫn có phí, mình từng bị một lần. Tưởng là đã tắt rồi, ai dè nó vẫn tính phí lưu trữ ổ đĩa, rồi mấy cái IP public gắn vào. Đau thật.

FinOps là gì mà nghe kêu vậy?

Nói thẳng ra, FinOps không phải một phần mềm hay công cụ cụ thể nào cả. Nó là một triết lý, một mô hình vận hành, giúp các đội nhóm (tài chính, kỹ thuật, sản phẩm) phối hợp chặt chẽ hơn để đưa ra quyết định chi tiêu đám mây thông minh. Nghe hơi lý thuyết nhỉ? Cứ hình dung thế này:

  • Bên kỹ thuật thì muốn dùng công nghệ mới, mạnh nhất, nhanh nhất.
  • Bên tài chính thì muốn tiết kiệm tối đa, chi phí phải hợp lý.
  • Bên sản phẩm thì muốn tính năng ra nhanh, trải nghiệm người dùng phải mượt.

FinOps sẽ giúp mình tìm được tiếng nói chung, cân bằng giữa tốc độ, chi phí và hiệu suất. Mình không thể cứ vung tiền vô tội vạ được nữa. Mình phải biết tiền mình chi ra mang lại giá trị gì.

FinOps là gì? Lợi ích và 03 giai đoạn vòng đời FinOps | VNPT Cloud

Gắn thẻ đâu chỉ để đẹp: Bí quyết quản lý chi phí minh bạch

Đây chính là depth spike của bài này, điểm mình muốn các bạn đào sâu. Nếu bạn hỏi mình đâu là thứ quan trọng nhất khi bắt đầu làm FinOps, mình sẽ không ngần ngại nói là: gắn thẻ tài nguyên (resource tagging). Nghe thì đơn giản, chỉ là thêm mấy cái key-value pairs vào tài nguyên thôi mà. Nhưng tin mình đi, nó là nền tảng của mọi thứ.

Mình đọc trên go-cloud.io, họ nói các tổ chức không có thẻ phân bổ chi phí hoạt động trong tình trạng tài chính mù quáng. Y chang mình ngày xưa. Mở bảng chi phí ra, thấy một đống tiền cho EC2, cho S3, nhưng chả biết của dự án nào, của phòng ban nào, hay của ông dev nào chạy test. Cứ như nhìn vào một tờ giấy báo cáo tài chính mà mọi con số đều là 'Tổng cộng', chả có chi tiết gì hết.

Vậy mình làm sao? Mình phải bắt đầu bằng việc quy định một chiến lược gắn thẻ rõ ràng. Ví dụ:

Project: game-server-A
Environment: production
Owner: minh.nguyen
CostCenter: 12345

Khi có thẻ, mình có thể mở cái công cụ quản lý chi phí của nhà cung cấp cloud (như Cost Explorer của AWS chẳng hạn). Mình lọc theo thẻ Project: game-server-A. Thế là mình biết ngay, à, cái máy chủ game A này đang tốn bao nhiêu. Rồi mình lại lọc theo Owner: minh.nguyen, để xem mình đang đốt bao nhiêu tiền cho các tài nguyên mình quản lý. Nhờ vậy, mình có thể xác định ngay các tài nguyên cụ thể đóng góp vào chi tiêu cao.

Cái hay của tagging là nó không chỉ giúp mình nhìn thấy vấn đề. Nó còn tạo ra trách nhiệm giải trình. Khi các đội nhóm thấy chi phí của họ hiển thị rõ ràng, mình tin họ sẽ tự nhiên tối ưu hóa. Một bài mình đọc được trên FinOpsForge có nói, mục tiêu là đạt đến 90%+ phạm vi phủ sóng gắn thẻ. Thậm chí, ở các tổ chức làm FinOps trưởng thành, họ còn xây dựng việc thực thi gắn thẻ vào các quy trình CI/CD. Tức là, nếu tài nguyên mình định triển khai mà không có đủ thẻ theo quy định, nó sẽ không được phép triển khai luôn. Cứng rắn vậy đó, nhưng hiệu quả vô cùng.

Tối ưu không ngừng: Săn lùng từng đồng lẻ

Có thẻ rồi, mình bắt đầu đi săn lùng lãng phí thôi. FinOps chia việc tối ưu ra làm hai đòn bẩy chính: sử dụng ít hơn (usage optimization)trả ít hơn cho những gì mình sử dụng (rate optimization).

Cách tối ưu hóa chi phí trong doanh nghiệp nhanh chóng và hiệu quả

Dùng ít hơn: Right-sizing, tắt bớt

Đây là việc mình làm hàng ngày: đảm bảo tài nguyên mình dùng vừa đủ, không thừa thãi. Nếu con server game của mình chỉ cần 4GB RAM mà mình cứ cấp 8GB, đó là lãng phí. Cái này gọi là rightsizing. Mình đọc trên FinOpsForge, họ nói ở giai đoạn FinOps trưởng thành (Run), việc tự động quyền định cỡ (Automated rightsizing) được tích hợp với các đường ống triển khai. Tức là mình không cần phải tự vào chỉnh tay nữa, hệ thống tự động làm luôn.

Một cái nữa là tắt đi những tài nguyên không dùng. Mấy con server test, môi trường staging, cứ xong việc là tắt đi. Đơn giản vậy mà hiệu quả lắm. Hồi xưa, mình hay quên tắt máy ảo, cứ để chạy chơi vậy. Từ lúc làm FinOps, cứ cuối tuần là mình rà soát một lượt, con nào không có thẻ Environment: production hoặc Owner rõ ràng là mình xem xét tắt đi liền. Thà tắt nhầm hơn bỏ sót tiền.

Trả ít hơn: Mua sỉ có khác

Sau khi mình đã đảm bảo mình dùng vừa đủ rồi, giờ là lúc mình nghĩ cách trả tiền ít hơn. Đây là lúc Reserved Instances (RIs) hay Savings Plans phát huy tác dụng. Đây là các cam kết sử dụng tài nguyên trong một khoảng thời gian nhất định (thường là 1 hoặc 3 năm) để đổi lấy mức chiết khấu đáng kể.

Mình đọc trên CloudZero, họ nói mình có thể giảm chi phí tính toán (compute costs) lên đến 60% bằng RIs và Savings Plans. Một bài khác trên Medium còn bảo, quản lý cam kết tự động một mình có thể giảm chi phí tính toán từ 30–70%. Con số này siêu to khổng lồ luôn. Tuy nhiên, có một lưu ý quan trọng mà CloudZero nhấn mạnh: mình phải khắc phục sự kém hiệu quả trong sử dụng trước khi cam kết dung lượng dự trữ. Đừng có mà khóa lãng phí với chiết khấu. Kiểu như mua sỉ một đống hàng tồn kho mà chả bán được, còn tốn thêm tiền lưu kho vậy.

Ngày trước, mình còn phải ngồi đánh giá thủ công hàng quý để xem mua RI thế nào cho hợp lý. Cực lắm. Giờ thì có những giải pháp quản lý chiết khấu tự động (như ProsperOps nói về Autonomous Discount Management) giúp tối ưu hóa danh mục Savings Plans, RIs liên tục mà không cần mình can thiệp thủ công nữa. ESR (Effective Savings Rates) có thể lên tới 50%+ mà không cần đánh giá thủ công. Nghe là thấy nhàn hơn bao nhiêu rồi.

Từ dữ liệu đến hành động: Ai chịu trách nhiệm?

FinOps không chỉ dừng lại ở việc tối ưu. Nó còn là về việc tạo ra một văn hóa trách nhiệm. Mình cần những báo cáo rõ ràng để mọi người thấy được tác động của hành động của họ đến chi phí.

  • Showback reporting: Mình phải thiết lập các báo cáo để các nhóm kỹ thuật của mình thấy được chi phí của họ. Khi dev biết mình đang đốt bao nhiêu tiền cho cái feature X, họ sẽ cẩn thận hơn.
  • Ngưỡng cảnh báo và phát hiện bất thường: Mình cần cài đặt các cảnh báo ngân sách (budget alerts) và phát hiện bất thường (anomaly detection). Ví dụ, nếu chi phí tự nhiên tăng vọt bất thường vào cuối tuần, hệ thống phải báo cho mình ngay để mình còn nhảy vào kiểm tra. Mình đọc trên CloudZero, họ khuyến nghị tần suất đánh giá chi phí thường xuyên: hàng tuần cho trưởng nhóm kỹ thuật, hàng tháng cho tài chính và lãnh đạo.
  • Unit Economics: Đây là cái mình rất tâm đắc. Mình không chỉ xem tổng chi phí là bao nhiêu, mà mình xem chi phí trên mỗi đơn vị kinh tế. Ví dụ như: chi phí trên mỗi khách hàng (cost per customer), chi phí trên mỗi suy luận (cost per inference) cho một dịch vụ AI, hay chi phí trên mỗi giao dịch game. Khi mình hiểu được con số này, mình có thể đưa ra quyết định kinh doanh tốt hơn. CloudZero còn dùng máy học để phân bổ chi phí cho cả những tài nguyên không thể gắn thẻ, đảm bảo 100% khả năng hiển thị chi phí. Nghe có vẻ AI thật, nhưng cũng là xu hướng rồi.
  • Bảng điều khiển thời gian thực: Mình muốn thấy dữ liệu chi phí ngay trên các bảng điều khiển kỹ thuật mình vẫn dùng (Grafana, Datadog). Có vậy thì mình mới kịp thời phản ứng.

Tổng kết

FinOps, theo mình thấy, là một hành trình dài, không phải đích đến. Nó là việc liên tục cải thiện, học hỏi và thích nghi. Quay lại cái vụ con EC2 mà mình quên tắt lúc đầu, nếu ngày đó mình có một chiến lược gắn thẻ rõ ràng, có showback reporting, có cảnh báo chi phí, có lẽ mình đã không phải “học phí” đắt đỏ như vậy. Hoặc ít nhất là biết mình tốn tiền vì cái gì.

Đừng để tiền của mình bay hơi trên đám mây một cách vô ích. Bắt đầu với FinOps ngay hôm nay, từ những thứ đơn giản nhất như gắn thẻ tài nguyên, và mình tin các bạn sẽ thấy hiệu quả rõ rệt.