~/VibeHandbook
PDF miễn phí

Hạ tầng

aws.amazon.com

Serverless

Đây là gì

Hãy nghĩ đến một chiếc đèn cảm biến chuyển động: nó tắt cho đến khi có ai đó đi ngang qua, bật sáng chỉ cho người đó, rồi tự tắt — bạn không bao giờ phải bật công tắc hay trả tiền cho việc nó sáng suốt đêm. (không máy chủ) hoạt động theo cách đó. Bạn viết các hàm (function) riêng lẻ, và nhà cung cấp dịch vụ đám mây chỉ chạy chúng khi có thứ gì đó kích hoạt — một yêu cầu (HTTP request — kiểu yêu cầu mà trình duyệt của bạn gửi đi), một lượt tải file lên, hoặc một bộ hẹn giờ theo lịch. Vẫn có máy chủ ở bên dưới, nhưng bạn không bao giờ nhìn thấy hay phải quản lý chúng. Bạn chỉ trả tiền cho khoảng thời gian mã của bạn thực sự chạy, đôi khi tính đến từng mili-giây.

Điểm mạnh

  • Không cần cấp phát, vá lỗi, hay duy trì máy chủ.
  • Tự động mở rộng từ số không đến hàng nghìn lượt chạy đồng thời.
  • Tính phí theo mức sử dụng thực tế; mã không hoạt động thì không tốn phí.
  • Tích hợp gọn gàng với các sự kiện đám mây (hàng đợi, bộ nhớ lưu trữ, cơ sở dữ liệu).
  • Phù hợp với lưu lượng truy cập tăng đột biến hoặc khó đoán trước.

Đánh đổi

  • Khởi động nguội (cold start): một hàm chưa chạy gần đây có thể mất thêm thời gian để "thức dậy".
  • Giới hạn thời gian thực thi (thường chỉ vài phút) khiến các tác vụ dài không thể chạy được.
  • Chi phí có thể gây bất ngờ khi lưu lượng rất cao và ổn định, so với một máy chủ thông thường.
  • Kiểm thử và gỡ lỗi cục bộ khó hơn so với một ứng dụng thông thường.
  • Bị phụ thuộc vào nhà cung cấp (vendor lock-in) — mô hình sự kiện và của mỗi nhà cung cấp khác nhau.

Khi nào nên dùng

Chọn serverless cho các API (Application Programming Interface — Giao diện lập trình ứng dụng; là các điểm cuối mà phần mềm khác gọi đến để giao tiếp với ứng dụng của bạn), , các tác vụ chạy theo lịch, và các công việc theo sự kiện — nơi lưu lượng truy cập không đều và bạn không muốn phải chăm sóc hạ tầng liên tục. Nó đặc biệt phù hợp làm "mã keo" (glue code) kết nối giữa các dịch vụ đám mây.

Sự phù hợp với vibe coding

Serverless kết hợp tốt với cách phát triển phần mềm do AI dẫn dắt, vì đơn vị công việc ở đây là một hàm đơn lẻ, khép kín — dễ để một (tác nhân AI) tạo ra, kiểm thử, và triển khai. Các như AWS SAM, Serverless Framework, và Vercel cho phép AI định nghĩa hàm, thứ kích hoạt nó, và các quyền truy cập tất cả trong một file cấu hình. Mẹo: hãy yêu cầu agent đặt rõ ràng thời gian chờ (timeout) và dung lượng bộ nhớ hợp lý, đồng thời giữ số lượng thư viện phụ thuộc ở mức tối thiểu — càng ít gói () thì gói triển khai càng nhỏ và khởi động nguội càng nhanh.

# serverless.yml — AWS Lambda function
service: my-api
provider:
  name: aws
  runtime: nodejs20.x
  timeout: 10
functions:
  hello:
    handler: handler.hello
    events:
      - httpApi:
          path: /hello
          method: get
# Deploy the stack
npx serverless deploy