+2

Top những chi phí ẩn của các Cloud Provider - cái giá phải trả cho sự ngooo ngốk : ))

Tiêu đề có phần giật títttt funny hi vọng mọi người hoan hỉ ><

image.png

Các bạn không nhìn nhầm đâu : )) Câu chuyện bắt đầu vào một ngày đẹp trời của tháng 8, một chiếc bill gần 70$ rơi vào đầu mình khi mình sử dụng AWS cho project cá nhân của mình. Ngỡ ngàng đến bật ngửa là cảm xúc của mình lúc đó. Mình không tin vào mắt mình : ))) Điều đầu tiên mà mình làm không phải làm tìm hiểu nguyên nhân dẫn đến tình trạng này mà là làm sao để không tự động trừ tiền vào thẻ của mình : ))) Và sau một thời gian tìm hiểu, hôm nay mình sẽ chia sẻ những chi phí ẩn (hidden costs) của các cloud provider đến mọi người, hi vọng mọi người không mất tiền oan : ))

Hiện nay thị trường cloud bị thâu tóm bởi một số ông lớn như Amazon, Google,... họ cung cấp rất nhiều các phiên bản miễn phí cho người dùng mới, tuy nhiên nó có thật sự miễn phí hoặc có mất phí nhưng mất rất ít? Có một sự thật xảy ra với một số bạn mới tìm hiểu đến cloud giống mình đó là, các nền tảng cloud này dường như sẽ free hoặc tốn rất it chi phí để bắt đầu có thể sử dụng, tuy nhiên việc có quá nhiều dịch vụ và một số thứ phức tạp nên thường dẫn đến các chi phí mà mình chưa từng để ý, hay còn gọi là chi phí ẩn. Bài viết này nhằm mục đích sharing những thứ mình học được để mọi người tránh ahihii. Trong bài này mình sẽ lấy AWS làm ví dụ, các nền tảng cloud khác, theo mình tìm hiểu được cũng sẽ có những chi phí tương tự.

Sự mơ hồ của các bản Free Tier

AWS cung cấp rất nhiều các phiên bản miễn phí của các dịch vụ mà họ cung cấp cho người sử dụng. Tuy nhiên, các dịch vụ không bao gồm trong các bản miễn phí đó sẽ trừ vào ví của bạn. Kể cả các bản miễn phí của các dịch vụ, nó cũng bị giới hạn. Việc sử dụng quá giới hạn đó sẽ dẫn đến hậu quả là các bill ngoài dự tính : )) Việc nói đến đây thì mọi người có thể cảm thấy, cách giải quyết cho những thứ này quá đơn giản, không sử dụng các dịch vụ mà không nằm trong bản miễn phí là xong. Đúng là như vậy, nếu bạn là người nắm rất rõ cách sử dụng của các dịch vụ này. Tuy nhiên, thường những người mới sử dụng như mình thì sẽ bị ngợp : ))

Mình sẽ đưa ra một ví dụ đơn giản. AWS có cung cấp cho bạn một bản free cho dịch vụ EC2 là 750 giờ sử dụng. Tức, bạn được sử dụng miễn phí 750 giờ. (Nếu bạn thắc mắc EC2 là gì thì mình có thể giải thích ngắn gọn là một dịch vụ cho phép bạn chạy các máy ảo trên đám mây với các tài nguyên như bộ xử lý, bộ nhớ,... bạn có thể sử dụng nó để chạy các ứng dụng web). Mình giả sử, bạn sử dụng bản free của AWS trong quá trình phát triển project cá nhân hoặc cho một bài tập lớn nào đó. Và bạn cần release các chức năng một cách liên tục. Nếu bạn bật một máy ảo EC2 chạy liên tục mà quên tắt, nó sẽ chỉ miễn phí được 31,25 ngày, và bùmmm đến tháng thứ 2 một chiếc bill tính bằng đô sẽ tới : ))

Chi phí ẩn với Elastic IP Address

Khái niệm và đặc điểm Elastic IP Address

Trước tiên, Elastic IP Address là một địa chỉ IP tĩnh được cung cấp bởi Amazon Web Services (AWS) và có thể được gán cho một instance EC2 (Elastic Compute Cloud). Khác với các địa chỉ IP động thông thường, Elastic IP được thiết kế để tồn tại lâu dài và có thể dễ dàng chuyển từ instance này sang instance khác trong cùng một tài khoản AWS. Elastic IP là một địa chỉ IP tĩnh, nghĩa là nó không thay đổi, ngay cả khi instance EC2 được khởi động lại hoặc bị thay thế. Điều này giúp đảm bảo rằng các dịch vụ và ứng dụng sử dụng địa chỉ IP này có thể luôn truy cập vào cùng một địa chỉ IP.

Ví dụ về Elastic IP: Giả sử bạn có một ứng dụng web đang chạy trên một instance EC2. Địa chỉ IP của instance này có thể thay đổi nếu bạn dừng và khởi động lại nó. Để đảm bảo rằng người dùng luôn có thể truy cập vào ứng dụng của bạn thông qua cùng một địa chỉ IP, bạn có thể gán một Elastic IP cho instance này. Nếu instance gặp sự cố và bạn cần khởi động một instance mới, bạn có thể chuyển Elastic IP từ instance cũ sang instance mới, giúp dịch vụ của bạn luôn duy trì sự ổn định và liên tục.

Nếu bạn hỏi tại sao lại cần đảm bảo người dùng truy cập ứng dụng thông qua một địa chỉ IP, để mình lấy ví dụ cho bạn. Người dùng sẽ truy cập vào một ứng dụng web thông qua tên miền dạng xxxxx.com, aaaa.vn,... Mỗi tên miền này sẽ ánh xạ tương ứng 1-1 với một địa chỉ IP. Bạn tưởng tượng nếu máy chủ (instance) một thương hiệu lớn có một trang web được nhiều người truy cập như shopee.vn gặp sự cố, việc khắc phục nhanh chóng là yêu cầu rất cần thiết. Chúng ta có thể khởi động lại instance đó và hệ thống chạy bình thường, tuy nhiên IP của instance này có thể thay đổi. Như vậy tên miền cũ shopee.vn đang trỏ đến một địa chỉ IP mà không có máy chủ nào hoạt động, người dùng sẽ không thể sử dụng dịch vụ shopee và công ty mất rất nhiều tiền. Đó là lý do cần một IP tĩnh.

Chi phí ẩn

AWS cho phép bạn tạo tối đa 5 địa chỉ IP tĩnh (Elastic IP) miễn phí cho mỗi tài khoản. AWS cho phép bạn gán một địa chỉ IP tĩnh cho một instance EC2 và giữ lại địa chỉ này ngay cả khi instance tạm dừng hoặc bị khởi động lại. Nếu bạn sử dụng vượt quá 5 Elastic IP, bạn sẽ bị tính phí theo giờ cho mỗi địa chỉ vượt quá, mức phí này khác nhau tùy vào khu vực bạn đang sử dụng.

Chi phí ẩn với Load Balancer

Load Balancers là một dịch vụ quan trọng trong các hệ thống phân tán, giúp phân phối lưu lượng truy cập đến các máy chủ khác nhau để đảm bảo rằng không có máy chủ nào bị quá tải, từ đó tăng cường hiệu suất và độ tin cậy của ứng dụng.

Khi bạn triển khai một Load Balancer, AWS sẽ tính phí theo giờ cho việc sử dụng dịch vụ này, ngay cả khi Load Balancer không xử lý bất kỳ yêu cầu nào. Điều này có nghĩa là bạn phải trả tiền chỉ để giữ cho Load Balancer hoạt động, bất kể mức độ sử dụng thực tế. Ví dụ: Nếu bạn triển khai một Load Balancer để phục vụ một ứng dụng trong một khoảng thời gian nhưng không có người dùng nào truy cập vào ứng dụng đó, bạn vẫn sẽ bị tính phí cho khoảng thời gian Load Balancer được bật.

Bên cạnh phí theo giờ, bạn cũng sẽ phải trả thêm chi phí khi dữ liệu được truyền qua Load Balancer. Điều này bao gồm cả việc truyền dữ liệu vào (inbound) và ra (outbound) khỏi Load Balancer. Ví dụ: Khi người dùng truy cập vào ứng dụng của bạn, yêu cầu sẽ đi qua Load Balancer đến máy chủ backend, và phản hồi từ máy chủ cũng sẽ đi qua Load Balancer để gửi lại cho người dùng. Mỗi lần dữ liệu di chuyển qua Load Balancer, AWS sẽ tính phí cho lưu lượng đó. Chi phí này có thể tăng lên đáng kể nếu ứng dụng của bạn có nhiều lưu lượng truy cập hoặc xử lý một lượng lớn dữ liệu.

Chi phí ẩn với Elastic Block Storage

Elastic Block Storage (EBS) là một dịch vụ lưu trữ của AWS được thiết kế để cung cấp lưu trữ dạng khối (block storage) cho các phiên bản Amazon EC2. EBS cung cấp các ổ đĩa lưu trữ có thể gắn vào các instance EC2 để lưu trữ dữ liệu như file hệ thống, cơ sở dữ liệu, hoặc bất kỳ dữ liệu nào cần thiết cho các ứng dụng chạy trên EC2.

Trong đó dạng khối (Block Storage): Dữ liệu được lưu trữ trong các khối có kích thước cố định, cho phép truy cập ngẫu nhiên đến bất kỳ phần nào của dữ liệu. Điều này làm cho EBS rất phù hợp cho các ứng dụng đòi hỏi truy cập nhanh và hiệu suất cao.

Chi phí

AWS tính phí sử dụng EBS theo mô hình trả phí trên mỗi GB lưu trữ mỗi tháng, tức là bạn sẽ phải trả tiền dựa trên dung lượng lưu trữ mà bạn sử dụng, bất kể bạn có thực sự sử dụng dữ liệu đó hay không.

Chi tiết về chi phí

  • Tính phí theo dung lượng GB mỗi tháng:
    • Phí cơ bản: EBS tính phí dựa trên dung lượng lưu trữ mà bạn yêu cầu. Ví dụ, nếu bạn tạo một ổ EBS có dung lượng 100 GB, bạn sẽ bị tính phí cho 100 GB đó mỗi tháng, bất kể bạn có sử dụng hết 100 GB hay không.
    • Ví dụ: Nếu bạn tạo một EBS volume 500 GB để lưu trữ dữ liệu cho một ứng dụng và bạn chỉ sử dụng 100 GB, bạn vẫn sẽ bị tính phí cho toàn bộ 500 GB.
  • Volume đã gắn và chưa gắn
    • Chi phí vẫn được tính dù không sử dụng: Một trong những điểm cần lưu ý là AWS sẽ tính phí cho cả các EBS volumes đã gắn (attached) vào EC2 và các volumes chưa gắn (unattached), nghĩa là ngay cả khi bạn không sử dụng ổ đĩa EBS đó nữa nhưng vẫn chưa xóa nó, bạn vẫn sẽ phải trả phí cho dung lượng lưu trữ của nó.
    • Ví dụ: Giả sử bạn có một EBS volume 100 GB được gắn vào một instance EC2. Sau khi ngắt kết nối instance đó, bạn chưa xóa EBS volume. Dù không có bất kỳ dữ liệu nào đang được xử lý hay truy cập từ volume này, AWS vẫn sẽ tính phí cho 100 GB mỗi tháng cho đến khi bạn xóa nó.

Túm lại, Elastic Block Storage (EBS) là dịch vụ lưu trữ dạng khối trên AWS dành cho các phiên bản EC2, với chi phí được tính dựa trên dung lượng lưu trữ bạn sử dụng mỗi tháng. AWS sẽ tính phí cho cả các EBS volumes đã gắn và chưa gắn vào EC2, ngay cả khi chúng không được sử dụng. Điều này đòi hỏi bạn phải quản lý tài nguyên một cách hiệu quả để tránh các chi phí không cần thiết.

Chi phí với Elastic Storage Snapshots

EBS Snapshots là bản sao lưu (backup) tại một thời điểm cụ thể của một EBS volume. Snapshots lưu trữ dữ liệu của EBS volume vào Amazon S3. Bạn có thể sử dụng các snapshots này để khôi phục lại EBS volume về trạng thái ban đầu hoặc tạo ra một EBS volume mới từ snapshot đó. Snapshots rất hữu ích trong việc sao lưu dữ liệu, khôi phục hệ thống khi có sự cố, và di chuyển dữ liệu giữa các vùng (regions) của AWS.

Chi phí

Các bảnh cần để ý làEBS Snapshots không bị xóa tự động. Khi bạn xóa một EBS volume, các snapshots liên quan đến volume đó không tự động bị xóa. Điều này có nghĩa là các snapshots vẫn tồn tại trong tài khoản AWS của bạn và tiếp tục chiếm dung lượng lưu trữ trên S3. AWS sẽ tiếp tục tính phí cho những snapshots này cho đến khi bạn tự tay xóa chúng.

Ví dụ: Giả sử bạn tạo một snapshot cho một EBS volume 100 GB để sao lưu dữ liệu quan trọng. Sau đó, bạn quyết định xóa EBS volume nhưng quên xóa snapshot. Snapshots này vẫn sẽ tồn tại trên AWS và bạn sẽ bị tính phí hàng tháng cho dung lượng lưu trữ mà snapshot này chiếm trên S3.

Chi phí truy cập Amazon S3 (S3 Access Charge)

Amazon Simple Storage Service (Amazon S3) là một dịch vụ lưu trữ đối tượng (object storage) phổ biến của AWS. S3 được thiết kế để lưu trữ và truy xuất lượng dữ liệu lớn với độ bền cao và khả năng mở rộng linh hoạt. Dữ liệu được lưu trữ dưới dạng các đối tượng (objects) trong các "bucket," mỗi đối tượng bao gồm dữ liệu và siêu dữ liệu (metadata).

S3 Access Charges là gì?

Ngoài chi phí lưu trữ cơ bản cho việc lưu trữ dữ liệu trên S3, AWS còn tính phí cho việc truy cập dữ liệu, cụ thể là các hoạt động như GET, PUT, và LIST requests. Các hoạt động này là những yêu cầu mà bạn hoặc ứng dụng của bạn gửi tới S3 để lấy hoặc quản lý dữ liệu. Các chi phí này được gọi là "S3 Access Charges."

Chi phí

Chi phí truy cập dữ liệu vào S3 bao gồm các GET và LIST requests.

  • GET Requests: Mỗi lần bạn hoặc ứng dụng của bạn truy xuất dữ liệu từ S3 (ví dụ: tải xuống một tệp), AWS sẽ tính phí cho mỗi yêu cầu GET. Phí này sẽ tăng lên khi số lượng yêu cầu GET tăng.
  • LIST Requests: LIST requests được sử dụng để liệt kê các đối tượng trong một bucket. Mỗi lần bạn yêu cầu danh sách các đối tượng trong bucket, AWS sẽ tính phí cho yêu cầu LIST. Nếu bạn thường xuyên cần liệt kê nội dung của một bucket lớn, chi phí này có thể tăng lên đáng kể.

Đôi khi, các bảnh cần chú ý chi phí truy cập có thể vượt quá chi phí lưu trữ:

  • Mặc dù chi phí lưu trữ dữ liệu trên S3 thường rất hợp lý, nhưng chi phí truy cập dữ liệu có thể vượt qua chi phí lưu trữ, đặc biệt khi bạn có nhiều yêu cầu GET và LIST. Điều này có thể xảy ra khi bạn cần truy xuất dữ liệu thường xuyên hoặc có nhiều ứng dụng và người dùng truy cập dữ liệu cùng một lúc.
  • Ví dụ: Giả sử bạn lưu trữ 1 TB dữ liệu trên S3 và chi phí lưu trữ là $23/tháng. Tuy nhiên, nếu bạn có hàng triệu yêu cầu GET và LIST mỗi tháng, chi phí truy cập có thể tăng lên, ví dụ như $50/tháng, vượt qua chi phí lưu trữ cơ bản của dữ liệu đó.

Amazon S3 cung cấp dịch vụ lưu trữ đối tượng với chi phí lưu trữ dữ liệu hợp lý, nhưng các chi phí liên quan đến việc truy cập dữ liệu có thể cao hơn dự kiến, đặc biệt là khi có nhiều yêu cầu truy xuất dữ liệu. Do đó, khi các bảnh sử dụng S3, bạn cần cân nhắc không chỉ về chi phí lưu trữ mà còn về chi phí truy cập dữ liệu để quản lý tài chính hiệu quả.

Chi phí ẩn trong chức năng Partial Upload của S3

Amazon S3 (Simple Storage Service) hỗ trợ một tính năng gọi là "Multipart Uploads," cho phép bạn chia nhỏ các tệp lớn thành các phần nhỏ hơn để tải lên một cách đồng thời. Tính năng này rất hữu ích khi bạn cần tải lên các tệp lớn, vì nó giúp tăng tốc độ truyền tải và giảm rủi ro lỗi tải lên. Sau khi tất cả các phần được tải lên, S3 sẽ ghép chúng lại thành một đối tượng duy nhất.

Khi sử dụng Multipart Upload, bạn có thể chia một tệp lớn thành nhiều phần nhỏ và tải lên song song. Nếu quá trình tải lên bị gián đoạn (ví dụ do lỗi kết nối), một số phần có thể đã được tải lên thành công trong khi những phần khác chưa hoàn thành.

Tuy nhiên, nếu quá trình tải lên không thành công hoàn toàn (tức là một hoặc nhiều phần chưa được tải lên hoặc việc ghép nối cuối cùng không xảy ra), S3 vẫn tính phí cho các phần đã tải lên thành công. Điều này có nghĩa là bạn sẽ bị tính phí lưu trữ cho các phần dữ liệu không hoàn chỉnh, mặc dù chúng không được ghép lại thành một tệp hoàn chỉnh.

Nếu bạn không dọn dẹp các phần tải lên không hoàn chỉnh này, chúng sẽ tiếp tục chiếm dung lượng lưu trữ trên S3 và dẫn đến chi phí không cần thiết. Để tránh điều này, bạn nên kiểm tra và xóa các phần tải lên không hoàn chỉnh bằng cách sử dụng công cụ hoặc script tự động hóa, hoặc bằng cách hủy bỏ các multipart upload không thành công thông qua S3 Console hoặc API.

Chi phí chuyển dữ liệu trên AWS (Data transfer cost)

Trong hạ tầng điện toán đám mây của Amazon Web Services (AWS), việc chuyển dữ liệu giữa các dịch vụ hoặc giữa AWS và các hệ thống bên ngoài là một hoạt động phổ biến. Tuy nhiên, việc này có thể dẫn đến các chi phí liên quan đến băng thông và lưu lượng dữ liệu. Chi phí chuyển dữ liệu trên AWS thường được phân thành hai loại chính: chi phí chuyển dữ liệu vào AWS (data transfer in) và chi phí chuyển dữ liệu ra khỏi AWS (data transfer out).

  1. Chuyển dữ liệu vào AWS (Data Transfer In) - Miễn phí:

AWS không tính phí khi bạn chuyển dữ liệu vào hệ thống của họ từ một nguồn bên ngoài, chẳng hạn như khi bạn tải lên dữ liệu từ trung tâm dữ liệu của bạn lên S3 hoặc EC2. Điều này giúp người dùng dễ dàng di chuyển khối lượng lớn dữ liệu lên đám mây mà không lo ngại về chi phí ban đầu.

  1. Chuyển dữ liệu ra khỏi AWS (Data Transfer Out) - Tính phí
  • AWS thường tính phí cho việc chuyển dữ liệu ra khỏi môi trường của họ. Điều này áp dụng cho mọi trường hợp mà dữ liệu rời khỏi hệ thống AWS, chẳng hạn như khi bạn tải dữ liệu từ S3 xuống máy chủ của mình hoặc khi bạn truyền dữ liệu từ AWS đến các hệ thống hoặc người dùng bên ngoài.
  • Phí chuyển dữ liệu ra khỏi AWS thường cao hơn rất nhiều so với phí chuyển dữ liệu vào. Chi phí này có thể tăng lên nhanh chóng nếu bạn cần truyền tải lượng dữ liệu lớn hoặc thường xuyên ra ngoài môi trường AWS.

Mình sẽ đưa ra một ví dụ nhé:

  • Dự án lưu trữ dữ liệu lớn: Giả sử bạn lưu trữ một lượng lớn dữ liệu video trên S3 và thường xuyên tải những video này xuống để phân phối cho người dùng cuối. Mặc dù việc lưu trữ trên S3 có thể có chi phí thấp, nhưng chi phí chuyển dữ liệu ra ngoài để phân phối video có thể tăng lên rất nhiều, đặc biệt là khi có hàng triệu lượt tải xuống.
  • Chuyển dữ liệu liên vùng (Inter-Region Data Transfer): Việc chuyển dữ liệu giữa các vùng (regions) khác nhau của AWS cũng bị tính phí. Chẳng hạn, nếu bạn chuyển dữ liệu từ một vùng ở Mỹ sang một vùng ở châu Âu, bạn sẽ phải chịu phí chuyển dữ liệu liên vùng.

Vậy là hết bài rồi : ) Mọi người đã bao giờ bật ngửa với một chiếc bill nào đó không mong muốn chưa? Hay là mọi người có nợ bill như mình không : )))? Chia sẻ với mình nhé.


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.