Serverless Là Gì? Điện Toán Serverless Được Giải Thích Đơn Giản
Serverless là một cách chạy mã mà bạn không phải thiết lập hay quản lý máy chủ nào. Bạn giao mã cho nhà cung cấp đám mây, và họ chỉ chạy mã đó khi có điều gì kích hoạt — một yêu cầu web, một tệp tải lên, một thông báo thanh toán — rồi dừng lại. Thường bạn trả tiền cho thời gian mã thực sự chạy, không phải cho một máy đứng không.
Vì sao serverless quan trọng khi bạn xây dựng với AI
Khi bạn xây một ứng dụng bằng AI và xem các lựa chọn lưu trữ hay mã nguồn, bạn sẽ gặp các thuật ngữ “serverless functions”, “edge functions” hay “cloud functions”. Nhiều nền tảng lưu trữ cung cấp chúng, và một số công cụ AI triển khai backend theo cách này. Hiểu mô hình này giúp bạn giải đáp ba câu hỏi thực tế:
- Chi phí. Ứng dụng có tốn tiền khi không ai dùng không?
- Tốc độ. Vì sao yêu cầu đầu tiên sau một lúc vắng lại chậm hơn?
- Giới hạn. Vì sao một tác vụ dài — tạo một báo cáo lớn, xử lý một video — bị hết thời gian chờ?
Cũng nên biết serverless không là gì: nó không phải là việc không có backend. Bạn vẫn có mã phía máy chủ; chỉ là người khác vận hành các máy đó. Về những điều cơ bản, xem máy chủ là gì.
Một ví dụ đời thường
Sở hữu một máy chủ truyền thống giống như sở hữu một chiếc ô tô. Nó luôn sẵn sàng để chạy ngay lập tức, nhưng bạn phải trả tiền — bảo hiểm, chỗ đỗ, bảo dưỡng — dù có lái hay không.
Serverless giống như gọi taxi. Bạn chỉ trả tiền cho những chuyến đi mình thực hiện, và nếu một trăm người cần xe cùng lúc, sẽ có một trăm chiếc taxi đến. Nhưng có thể phải chờ một chút để xe đến (một cold start), mỗi chuyến có độ dài tối đa, và tài xế không nhớ bạn từ chuyến trước (hàm là stateless — không trạng thái).
Hàm serverless hoạt động thế nào
Trong dạng phổ biến nhất, gọi là functions as a service:
- Bạn viết một hàm — một đoạn mã nhỏ xử lý một loại sự kiện, ví dụ “xử lý một POST tới
/api/bookings.” - Bạn triển khai nó. Nhà cung cấp lưu trữ hàm và gắn nó vào một trigger: một URL, một lịch định kỳ, một tệp mới trong bộ nhớ, một tin nhắn trong hàng đợi.
- Một sự kiện xảy ra. Nhà cung cấp khởi động một bản sao của hàm (hoặc tái sử dụng bản đang “ấm”), chạy nó và trả kết quả.
- Nó tự mở rộng. Nếu một nghìn yêu cầu đến cùng lúc, nhà cung cấp chạy nhiều bản sao song song, đến giới hạn tài khoản của bạn.
- Nó nhàn rỗi. Khi lưu lượng dừng, các bản sao bị tắt. Khi không có gì chạy, bạn không trả tiền cho tính toán.
Một hàm serverless nhỏ bằng JavaScript có thể trông như sau:
export default async function handler(request) {
const { name } = await request.json();
return Response.json({ message: `Hello, ${name}` });
}
Không có mã nào để khởi động máy chủ, mở cổng hay giữ tiến trình chạy. Nền tảng lo tất cả những việc đó.
Từ “serverless” cũng được dùng một cách lỏng hơn để chỉ các dịch vụ được quản lý khác tự mở rộng và tính phí theo mức dùng — ví dụ cơ sở dữ liệu serverless, thứ tạm dừng khi nhàn rỗi.
Thuật ngữ chính
| Thuật ngữ | Ý nghĩa |
|---|---|
| Hàm (FaaS) | Một đơn vị mã nhỏ mà nhà cung cấp chạy theo yêu cầu. |
| Trigger / sự kiện | Thứ khởi động hàm — một yêu cầu HTTP, một tệp tải lên, một bộ hẹn giờ, một tin nhắn hàng đợi. |
| Cold start | Độ trễ khi một bản sao mới của hàm phải khởi động trước khi xử lý yêu cầu. |
| Warm (đang ấm) | Một bản sao đã chạy sẵn và có thể phản hồi ngay. |
| Stateless (không trạng thái) | Hàm không giữ bộ nhớ giữa các lần chạy. Mọi thứ cần lưu lâu dài phải nằm trong cơ sở dữ liệu hoặc bộ nhớ tệp. |
| Timeout | Thời gian tối đa được phép cho một lần chạy. Ví dụ, giới hạn tối đa của AWS Lambda là 15 phút; nhiều nền tảng mặc định ngắn hơn nhiều. |
| Edge function | Hàm chạy ở nhiều địa điểm gần người dùng, thường với giới hạn chặt hơn. |
| Scale to zero | Không chạy gì và không trả tiền cho tính toán khi không có lưu lượng. |
Ví dụ minh họa: một trang đặt lịch nhỏ
Trang đặt lịch của một phòng yoga nhận một đợt truy cập lớn mỗi tối Chủ nhật khi lịch mới được đăng, và rất ít vào những ngày còn lại trong tuần.
- Trên một máy chủ luôn bật, phòng tập trả tiền cho một máy hoạt động 24/7, được chọn cỡ cho đỉnh tối Chủ nhật, và phần lớn thời gian còn lại là nhàn rỗi.
- Với các hàm serverless,
GET /api/classesvàPOST /api/bookingslà các hàm. Đợt cao điểm Chủ nhật tự động khởi động nhiều bản sao; vào một buổi sáng thứ Ba yên tĩnh, hầu như không có gì chạy và hóa đơn gần như bằng không.
Những đánh đổi cũng xuất hiện. Người đầu tiên mở trang vào sáng thứ Ba có thể phải chờ thêm một chút vì cold start. Cơ sở dữ liệu phải xử lý nhiều kết nối ngắn hạn từ nhiều bản sao hàm, có thể cần một connection pooler. Và nếu sau này phòng tập muốn một tác vụ “tạo tệp PDF điểm danh năm cho tất cả học viên”, nó có thể vượt quá giới hạn thời gian của hàm và cần chạy ở nơi khác.
Khi nào serverless phù hợp — và khi nào không
| Phù hợp tốt | Ít phù hợp hơn |
|---|---|
| Lưu lượng thấp, bùng phát hoặc khó đoán | Lưu lượng lớn và liên tục, nơi máy luôn bật có thể rẻ hơn |
| Tác vụ request/response ngắn: API, bộ xử lý form, webhook | Tác vụ chạy lâu: xử lý video lớn, nhập dữ liệu lớn |
| Đội nhỏ không muốn quản lý máy chủ | Ứng dụng giữ kết nối sống (một số tính năng chat hoặc nhiều người chơi), trừ khi nền tảng hỗ trợ |
| Xử lý sự kiện: “khi có tệp được tải lên, tạo ảnh thu nhỏ” | Ứng dụng cần giữ nhiều bộ nhớ giữa các yêu cầu |
Những hiểu lầm thường gặp
- “Serverless nghĩa là không có backend.” Nó nghĩa là không có máy chủ cần quản lý. Bạn vẫn viết và bảo mật mã backend.
- “Serverless luôn rẻ hơn.” Rẻ khi khối lượng thấp, nhưng phí theo từng yêu cầu có thể cộng dồn khi khối lượng cao và đều.
- “Serverless mở rộng vô hạn.” Các nền tảng có giới hạn đồng thời, và cơ sở dữ liệu của bạn có thể thành nút thắt từ rất lâu trước khi các hàm gặp vấn đề.
- “Tệp lưu trong một hàm sẽ còn đó lần sau.” Bộ nhớ cục bộ là tạm thời. Hãy dùng cơ sở dữ liệu hoặc bộ nhớ tệp.
- “Scale-to-zero giống với serverless.” Có liên quan nhưng không hoàn toàn giống. Một số nền tảng chạy ứng dụng của bạn như một máy chủ thông thường biết ngủ khi nhàn rỗi và thức dậy ở yêu cầu tiếp theo — tiết kiệm tương tự và độ trễ yêu cầu đầu tiên tương tự, nhưng không có giới hạn thời gian theo từng yêu cầu kiểu hàm.
Nên hỏi công cụ tạo ứng dụng AI điều gì
- “Backend này sẽ chạy dưới dạng hàm serverless, hay dưới dạng máy chủ luôn bật hoặc máy chủ biết ngủ? Điều đó có ý nghĩa gì với chi phí?”
- “Có tác vụ nào có khả năng chạy lâu hơn giới hạn thời gian của nền tảng không? Nếu có, nên xử lý thế nào?”
- “Lưu mọi thứ cần tồn tại lâu dài trong cơ sở dữ liệu hoặc bộ nhớ tệp, không lưu trong bộ nhớ hay tệp cục bộ.”
- “Nên quản lý kết nối cơ sở dữ liệu thế nào khi có nhiều bản sao chạy cùng lúc?”
- “Độ trễ của yêu cầu đầu tiên sau khi ứng dụng nhàn rỗi là bao lâu?”
Cách Mythex lưu trữ ứng dụng
Mythex không mô tả hosting của mình là hàm serverless. Khi bạn xuất bản, ứng dụng chạy như một ứng dụng web hoặc container thông thường mà Mythex quản lý cho bạn — không có gì phải thiết lập. Đó là scale-to-zero: các ứng dụng đã xuất bản và cơ sở dữ liệu của chúng ngủ khi nhàn rỗi và thức dậy ở lượt truy cập tiếp theo; một ứng dụng đang ngủ không tốn tiền tính toán, và các máy bổ sung chỉ khởi động khi lưu lượng lớn (gói Pro cho phép tối đa 3 máy mỗi dịch vụ). Cơ sở dữ liệu Postgres đi kèm cũng ngủ sau 5 phút nhàn rỗi và được tính phí theo thời gian nó thức. Nhờ vậy bạn có được phần lớn lợi ích “trả tiền theo mức dùng”, cùng với kiểu độ trễ lần đầu sau một khoảng vắng. Xem giới hạn lưu trữ trong tài liệu, và các hướng dẫn của chúng tôi về lưu trữ web và giảm chi phí lưu trữ.
Câu hỏi thường gặp
Serverless nghĩa là gì, nói đơn giản?
Serverless nghĩa là bạn đưa mã cho nhà cung cấp đám mây và họ chỉ chạy nó khi cần — ví dụ khi có một yêu cầu đến — mà bạn không phải thiết lập hay trông coi máy chủ nào. Thường bạn trả tiền cho thời gian mã thực sự chạy, thay vì trả cho một máy luôn bật.
Serverless có thật sự không có máy chủ không?
Vẫn có máy chủ; bạn chỉ không phải quản lý chúng. Nhà cung cấp chạy mã của bạn trên các máy của họ, khởi động khi yêu cầu đến, mở rộng khi tải tăng và tắt khi nhàn rỗi.
Cold start là gì?
Cold start là độ trễ thêm khi một hàm serverless chạy sau một thời gian nhàn rỗi, vì nhà cung cấp phải khởi động một bản sao mới trước. Độ trễ này có thể từ hầu như không nhận ra đến một giây hoặc hơn, tùy nền tảng, ngôn ngữ và kích thước mã.
Serverless có rẻ hơn máy chủ thông thường không?
Với các ứng dụng có ít hoặc không đều lưu lượng, thường là có, vì bạn gần như không trả tiền khi nhàn rỗi. Với các ứng dụng có lưu lượng lớn và liên tục, một máy chủ luôn bật có thể rẻ hơn. Điều đó phụ thuộc vào kiểu sử dụng và giá của nhà cung cấp.
Các nền tảng serverless phổ biến là gì?
Các ví dụ nổi tiếng gồm AWS Lambda, Google Cloud Run functions, Azure Functions, Cloudflare Workers, và các tính năng hàm của nền tảng lưu trữ như Vercel và Netlify.