Kiểm soát khả năng mở rộng và đồng thời

Ứng dụng Serverless với AWS Lambda

Claudio Canales

Senior DevOps Engineer

Mở rộng trong một hình

  • Nhu cầu tăng -> nhiều lượt chạy song song hơn.
  • Mỗi lượt dùng một môi trường thực thi.
  • Đồng thời = các lượt đang chạy.

Tăng nhu cầu -> thêm môi trường

Ứng dụng Serverless với AWS Lambda

Đồng thời là gì?

  • Một invocation = một đơn vị công việc.
  • Đồng thời = số lượt đang chạy.
  • Nếu có 10 lượt chạy, đồng thời = 10.

Lời gọi song song

Ứng dụng Serverless với AWS Lambda

Ước tính mức đồng thời cần thiết

  • Kinh nghiệm: concurrency = rps * duration.
  • Giảm duration để giảm concurrency.
  • Dùng công thức để đặt giới hạn an toàn.

Công thức đồng thời

Ứng dụng Serverless với AWS Lambda

Ví dụ: 50 rps ở 200 ms

  • 200 ms = 0,2 giây.
  • 50 * 0,2 = 10 lượt chạy đồng thời.
  • Mã nhanh hơn => ít chạy song song hơn.

Ví dụ tính đồng thời

Ứng dụng Serverless với AWS Lambda

Giới hạn: pool tài khoản vs phần của hàm

  • Đồng thời bị giới hạn ở mức tài khoản.
  • Dành một phần pool cho hàm quan trọng.
  • Các hàm khác dùng phần còn lại.

Pool đồng thời của tài khoản

Ứng dụng Serverless với AWS Lambda

Reserved Concurrency: trần cứng

  • Van an toàn.
  • Giới hạn mức xử lý song song.
  • Vượt trần sẽ bị throttle.
  • Một hàm ồn ào không thể dùng hết công suất.

Giới hạn đồng thời được dành riêng

Ứng dụng Serverless với AWS Lambda

Throttling: trông như thế nào

  • Lambda throttle tại giới hạn đồng thời.
  • Bên gọi không nhận thực thi bình thường.
  • Theo dõi throttle trong giám sát.

Tín hiệu throttling

Ứng dụng Serverless với AWS Lambda

Provisioned Concurrency: công suất ấm

  • Một pool môi trường đã khởi tạo sẵn.
  • Thường ẩn sau alias.
  • Yêu cầu khởi chạy nhanh hơn.

Provisioned concurrency - pool ấm

Ứng dụng Serverless với AWS Lambda

Khởi động lạnh vs provisioned

Khởi động lạnh

  • Độ trễ khởi tạo một lần.
  • Yêu cầu đầu tiên chịu chi phí thiết lập.

Provisioned

  • Khởi tạo trước.
  • Yêu cầu đầu tiên không chịu chi phí thiết lập.

Dòng thời gian: lạnh vs provisioned

Ứng dụng Serverless với AWS Lambda

Reserved vs provisioned (vấn đề khác nhau)

  • Reserved kiểm soát tải.
  • Provisioned giảm độ trễ khởi động.
  • Nhiều hàm production dùng cả hai.

So sánh reserved vs provisioned

Ứng dụng Serverless với AWS Lambda

Bảo vệ hệ thống hạ lưu

  • CSDL chỉ xử lý được số kết nối nhất định.
  • Giới hạn đồng thời ngăn quá tải.
  • Đột biến lưu lượng có thể thành sự cố.

Giới hạn đồng thời bảo vệ CSDL

Ứng dụng Serverless với AWS Lambda

Bùng nổ vs lưu lượng ổn định

  • Burst tạo nhiều môi trường song song.
  • Handler chậm giữ mức đồng thời cao.
  • Giới hạn giúp làm phẳng đỉnh.
  • Giảm thời lượng cũng là cách mở rộng.

Lưu lượng bùng nổ vs ổn định

Ứng dụng Serverless với AWS Lambda

Lỗi và retry tăng tải

  • Retry có thể khuếch đại lưu lượng.
  • Giới hạn đồng thời giảm ảnh hưởng lan rộng.
  • Vòng lặp lỗi có thể quá tải phụ thuộc.

Retry nhân tải

Ứng dụng Serverless với AWS Lambda

Quy trình tinh chỉnh đơn giản

  • Bắt đầu bằng đo lường.
  • Đặt trần đồng thời khi thấy throttle hoặc áp lực.
  • Thêm provisioned khi cold start làm tăng độ trễ.

Đo lường -> đặt trần -> làm ấm trước

Ứng dụng Serverless với AWS Lambda

Điểm chính

  • Đồng thời giúp suy nghĩ về mở rộng.
  • Ước tính: rps * duration.
  • Reserved đặt trần tải; theo dõi throttle.
  • Provisioned giảm độ trễ khởi động lạnh.

Tóm tắt về đồng thời

Ứng dụng Serverless với AWS Lambda

Ayo berlatih!

Ứng dụng Serverless với AWS Lambda

Preparing Video For Download...