🌞

Lưu ý khi sử dụng AWS Lambda để tránh mất tiền

Sửa bài viết này

Vâng đúng nhưng không phải trong mọi hoàn cảnh, chiếc chìa khóa vạn năngcó thể giải quyết mọi yêu cầu hệ thống. Khi thiết kế một hệ thống chúng ta phải cân nhắc đến việc cho nó tiến hóa theo nhu cầu, cũng giống như những phần mềm chúng ta viết ra điều phải thay đổi để thích nghi và đáp ứng nhu cầu mới của khách hàng

Chúng ta cùng đi qua một vài lỗi hay gặp và cách khắc phục để tiết kiệm chi phí tối đa

Không để ý chi phí logging và monitor

Ghi log và monitor ứng dụng để có thể tìm lỗi và phát hiện nguyên nhân gây lỗi là bắt buộc, nhưng nó đi đôi với chi phí. AWS CloudWatch tính phí cả 2 phần ghi log và lưu trữ log

Bạn sẽ ngạc nhiên khi phát hiện ra rằng chi phí cho CloudWatch đôi khi còn cao hơn cả cho Lambda và API Gateway

Để giải quyết:

  1. Log INFO hay ERROR chỉ trên môi trường production
  2. Chỉ giữ log thật sự hữu ích nhất để debug trên production
  3. Lưu log trong 30 ngày là vừa đủ để debug mà không làm đội chi phí lưu trữ

Nếu đã có log được lưu ở một bên thứ 3 khác có thể bỏ qua log CloudWatch

Đọc kỹ hướng dẫn sử dụng trước khi dùng

Để khỏi “hết hồn” lúc nhận bill cuối tháng, chúng ta cần biết khi bật một tính năng lên sẽ phát sinh thêm những phụ phí, rất nhiều phí chỉ được áp dụng trong những điều kiện cụ thể. Ví dụ như chọn provisioned concurrency cho Lambda sẽ thêm một số phụ phí

Đừng nóng vội hãy luôn nhớ chậm lại một nhịp rồi tìm hiểu cho đầy đủ trước khi muốn sử dụng một dịch vụ nào khác.

Không chịu bật thông báo

Mọi người cũng hay quên dùng tính năng billing alarm của AWS. Một công cụ tuyệt vời để báo liền cho chúng ta để biết được những khoản chi chúng ta đã bỏ ra có vượt ngoài tầm kiểm soát không

Cài đặt Billing Alarm nên là điều đầu tiên chúng ta cần làm khi sử dụng AWS trước khi mọi thứ ra vượt ra ngoài tầm kiểm soát.

Lambda gọi Lambda theo cơ chế Synchronous

Một Lambda gọi một Lambda khác synchronous nghĩa là Lambda đầu nguồn sẽ ngồi đợi Lambda thứ 2 chạy xong trước khi nó tiếp tục chạy. Nó làm đội lên chi phí khá nhiều vì thời gian ngồi đợi vẫn bị tính phí, giống như lên xe taxi bạn ngồi đợi nhưng đồng hồ đếm tiền vẫn nhảy dù xe không chạy.

Hãy luôn nhớ gọi Lambda asynchronous bất cứ ở đâu cho phép

Không cache

Caching là người bạn thân thiết, hay khắc cốt ghi tâm điều này, caching nghĩa là Lambda sẽ không cần gọi và làm gì cả, kết quả được trả thằng ngay từ API Gateway hay CloudFront. Bên cạnh đó ở ứng dụng có thể cân nhắc sử dụng thêm dịch vụ chuyên cache như ElastiCache hay Memento, hay DynamoDB Accelerator

Cấp quá nhiều tài nguyên

Cấp quá nhiều memory cho Lambda cũng là một lỗi hay mắc. Lambda được tính phí theo 2 tiêu chi: lượng memory đã sử dụng và thời gian chạy của hàm.

Câu hỏi là cấp bao nhiêu cho đủ? Công cụ Lambda Power Tuning sẽ giúp chúng ta xác định lượng memory cần thiết để cân bằng giữa chi phí và hiệu năng

Kiến trúc củ chuối

Kiến trúc mà củ chuối quá thì hậu quả là nhản tiền, vừa tốn chi phí, hiệu năng không tối ưu và lại còn khó vận hành bảo trì

AWS có rất nhiều service để thực hiện gửi nhận message, như SNS, SQS, EventBridge, Kinesis, ưu nhược điểm là khác nhau và phải hiểu để sử dụng cho đúng mục đích, không khéo chúng ta là đi lấy giao chặt thịt heo đi giết kiến

Tương tự, API Gateway cũng tốn khá khá tiền so với ALB nhưng nó có nhiều đồ chơi vượt trội hơn, tiền nào của đó thôi, liệu cơm gấp mắm

Mọi sai làm điều là một cơ hội để học hỏi, nên không sợ sai chỉ sợ không học được gì từ những gì mình đã làm sai. Chúc các bạn có một cuộc chơi đỡ tốn tiền hơn trên AWS

Save money on Serverless: common costly mistakes and how to avoid them

Initializing...