Xu hướng serverless computing và ứng dụng trong thực tế
Serverless computing là mô hình chạy ứng dụng trên cloud mà nhà phát triển không phải quản lý máy chủ: nhà cung cấp tự cấp phát tài nguyên khi có yêu cầu, tự mở rộng theo tải và tính phí theo lượng sử dụng thực tế. "Serverless" không có nghĩa là không có máy chủ, mà là máy chủ trở thành chuyện của nhà cung cấp. Mô hình này đặc biệt hợp với các tác vụ chạy theo sự kiện, lưu lượng thất thường và đội nhỏ muốn tập trung vào sản phẩm, nhưng có những đánh đổi về độ trễ khởi động, giới hạn thời gian chạy và phụ thuộc nhà cung cấp. Bài viết phân tích cách serverless được dùng trong thực tế và khi nào nên chọn.
Hai thành phần của serverless
- FaaS (Function as a Service): viết hàm nhỏ, nền tảng chạy hàm khi có sự kiện (request HTTP, file tải lên, tin nhắn hàng đợi, lịch hẹn giờ). Ví dụ AWS Lambda, Google Cloud Run functions, Azure Functions, Cloudflare Workers.
- BaaS (Backend as a Service): dịch vụ được quản lý thay cho thành phần tự vận hành: database serverless, lưu trữ đối tượng, xác thực người dùng, hàng đợi, gửi email. Firebase, Supabase là ví dụ phổ biến với nhà phát triển ứng dụng.
Ngoài ra còn có container serverless (như Google Cloud Run, AWS Fargate): chạy container mà không quản lý cụm máy chủ, linh hoạt hơn FaaS về ngôn ngữ và thời gian chạy.
Ưu điểm
- Không quản lý hạ tầng: không cài hệ điều hành, vá lỗi, cân bằng tải.
- Tự mở rộng: từ không đến hàng nghìn lượt xử lý đồng thời theo tải.
- Trả theo sử dụng: không có lưu lượng thì chi phí tính toán gần như bằng không; hợp với ứng dụng mới, công cụ nội bộ, tác vụ định kỳ.
- Ra sản phẩm nhanh: đội nhỏ tập trung vào logic nghiệp vụ.
Nhược điểm và đánh đổi
| Vấn đề | Mô tả | Cách giảm nhẹ |
|---|---|---|
| Cold start | Lần gọi đầu sau thời gian rảnh phải khởi tạo môi trường, chậm hơn | Giảm kích thước gói, chọn runtime khởi động nhanh, cấu hình giữ sẵn instance |
| Giới hạn thời gian và tài nguyên | Hàm có thời gian chạy tối đa, bộ nhớ giới hạn | Chia nhỏ tác vụ, dùng workflow, chuyển tác vụ dài sang container |
| Phụ thuộc nhà cung cấp | Sự kiện, cấu hình, dịch vụ đặc thù từng cloud | Tách logic nghiệp vụ khỏi mã gắn với nền tảng, dùng chuẩn mở khi có thể |
| Gỡ lỗi và quan sát | Nhiều hàm nhỏ, luồng phân tán | Log tập trung, tracing, mã định danh request |
| Chi phí ở tải cao ổn định | Trả theo lượt có thể đắt hơn máy chủ chạy liên tục | So sánh chi phí, chuyển phần tải ổn định sang container hoặc VPS |
| Kết nối database | Nhiều instance mở nhiều kết nối | Dùng connection pooler hoặc database hỗ trợ serverless |
Ứng dụng thực tế phổ biến
API cho ứng dụng web và mobile
Backend cho ứng dụng vừa và nhỏ với lưu lượng dao động: API gateway kết hợp hàm hoặc container serverless. Thiết kế endpoint theo các nguyên tắc trong bài xây dựng hệ thống API RESTful.
Xử lý file và media
Người dùng tải ảnh lên lưu trữ đối tượng, sự kiện kích hoạt hàm tạo ảnh thu nhỏ, nén, quét virus, trích xuất văn bản. Khi không có ai tải lên, không tốn chi phí.
Tác vụ theo lịch và tích hợp
Đồng bộ dữ liệu giữa hệ thống mỗi đêm, gửi báo cáo, dọn dữ liệu cũ, nhận webhook từ cổng thanh toán, CRM.
Xử lý luồng sự kiện
Hàm đọc tin nhắn từ hàng đợi hoặc luồng dữ liệu để xử lý đơn hàng, cập nhật chỉ mục tìm kiếm, gửi thông báo.
Ứng dụng tại biên mạng
Hàm chạy tại các điểm của CDN để xác thực, chuyển hướng, cá nhân hóa nội dung gần người dùng; xem thêm bài xu hướng Edge Computing.
Tính năng AI
Hàm serverless gọi API mô hình ngôn ngữ, xử lý tài liệu theo lô, phù hợp với lưu lượng thất thường của tính năng mới.
Khi nào không nên dùng serverless
- Tải cao và ổn định suốt ngày đêm: máy chủ hoặc container chạy liên tục thường rẻ hơn.
- Ứng dụng cần kết nối lâu dài (WebSocket số lượng lớn, game thời gian thực) hoặc tác vụ chạy rất lâu, trừ khi dùng dịch vụ chuyên biệt.
- Yêu cầu độ trễ cực thấp và ổn định mà cold start không chấp nhận được.
- Phần mềm cần môi trường hệ điều hành đặc thù, thư viện hệ thống nặng.
Với những trường hợp này, triển khai container trên VPS hoặc dịch vụ được quản lý có thể phù hợp hơn; bài hướng dẫn deploy ứng dụng web lên AWS giới thiệu các lựa chọn cho người mới.
Thực hành tốt khi xây ứng dụng serverless
- Mỗi hàm làm một việc, nhưng tránh chia quá nhỏ khiến một thao tác đi qua hàng chục hàm.
- Thiết kế idempotent vì sự kiện có thể được gửi lại.
- Quản lý hạ tầng bằng code (Terraform, AWS SAM, Serverless Framework, SST) để tái tạo môi trường.
- Cấp quyền tối thiểu cho từng hàm.
- Đặt giới hạn đồng thời và cảnh báo chi phí để tránh hóa đơn bất ngờ khi có lỗi lặp vô hạn hoặc bị tấn công.
- Kiểm thử logic nghiệp vụ tách biệt với lớp xử lý sự kiện để chạy test nhanh ở máy dev.
Kiểm soát chi phí
Chi phí serverless gồm số lần gọi, thời gian chạy nhân với bộ nhớ cấu hình, lưu lượng mạng và các dịch vụ đi kèm (API gateway, log, database). Một vài mẹo: tối ưu thời gian chạy vì tính phí theo mili giây; chọn bộ nhớ phù hợp (nhiều bộ nhớ hơn thường đi kèm CPU mạnh hơn, có thể chạy nhanh hơn và rẻ hơn tổng thể); đặt thời gian lưu log hợp lý; theo dõi chi phí theo hàm. Các gói miễn phí hằng tháng của nhà cung cấp lớn thường đủ cho thử nghiệm và ứng dụng nhỏ.
Câu hỏi thường gặp
Serverless có rẻ hơn máy chủ truyền thống không?
Rẻ hơn khi lưu lượng thấp hoặc thất thường vì không trả tiền cho thời gian rảnh. Với tải cao và ổn định, máy chủ hoặc container chạy liên tục có thể rẻ hơn. Nên ước tính theo lưu lượng thực tế.
Cold start ảnh hưởng thế nào tới người dùng?
Lần gọi đầu sau thời gian rảnh có thể chậm hơn đáng kể so với các lần sau, tùy runtime và kích thước ứng dụng. Với API người dùng tương tác trực tiếp, có thể cấu hình giữ sẵn instance hoặc chọn runtime khởi động nhanh.
Serverless có phù hợp cho người mới học lập trình backend không?
Phù hợp để triển khai nhanh dự án nhỏ mà không lo máy chủ. Tuy vậy người mới vẫn nên hiểu nền tảng như HTTP, database, Linux cơ bản để gỡ lỗi và hiểu chi phí khi ứng dụng lớn lên.
Có thể chuyển ứng dụng serverless sang nhà cung cấp khác không?
Có thể nhưng tốn công nếu code gắn chặt với dịch vụ đặc thù. Tách logic nghiệp vụ khỏi mã xử lý sự kiện, dùng container serverless hoặc framework hỗ trợ nhiều cloud giúp việc chuyển đổi dễ hơn.
Bài liên quan
Công nghệ bảo mật đa lớp cho nền tảng giải trí trực tuyến
Mô hình phòng thủ nhiều lớp cho nền tảng giải trí: lớp mạng, ứng dụng, danh tính, dữ liệu, thiết bị, giám sát và con người; cách các lớp bù đắp cho nhau.
Công nghệ bảo mật cho nền tảng giải trí trực tuyến: tổng quan
Tổng quan công nghệ bảo mật của nền tảng video, nhạc, game trực tuyến: bảo vệ tài khoản, DRM, chống gian lận game, chống DDoS, bot và bảo vệ dữ liệu.
Công nghệ streaming định hình nền tảng giải trí trực tuyến
Giải thích các công nghệ đứng sau streaming hiện đại: HLS, DASH, bitrate thích ứng, codec H.264, HEVC, AV1, CDN, độ trễ thấp cho livestream và trải nghiệm xem.

Cách bảo mật ứng dụng web theo OWASP Top 10
Giải thích 10 nhóm rủi ro trong OWASP Top 10 và cách phòng thủ cụ thể cho lập trình viên web: phân quyền, mã hóa, chống injection, cấu hình an toàn, giám sát.