Giới thiệu về Serverless Achitecture

Serverless là gì?

Serverless được dùng để chỉ hai khái niệm khác nhau nhưng lại khá liên quan với nhau:
  • Một số ứng dụng chuyển phần lớn về Front-end, không có server để làm backend (serverless) mà sử dụng các API của bên thứ 3 để thay thế (Backend as a Service - BaaS).
  • Một số trường hợp khác lập trình viên phải tự viết code để làm back-end. Với mô hình client-server thông thường, ta phải thuê server rồi deploy ứng dụng lên server. Với mô hình serverless, thay vì deploy code này lên server, ta deploy nó dưới dạng một Function (Function as a Service - FaaS). Function này có thể được gọi dưới dạng RestAPI hoặc chạy theo lịch đã sắp sẵn.
Với FaaS, ta chỉ cần viết code mà không cần quan tâm đến việc server và code sẽ nằm ở đâu. Bên thứ (Amazon, Microsoft, Google) sẽ quản lý việc này.

Hiện tại, khi nói đến serverless, người ta thường nói đến khái niệm thứ hai - FaaS. Năm 2014, Amazon là người đi đầu thị trường khi cung cấp nền tảng serverless mang tên AWS Lambda. Ban đầu nền tảng này chỉ chạy được code Node.js, giờ đây đã hộ trợ rất nhiều ngôn ngữ

Năm 2016, Microsoft cũng nhảy vào thị trường, ra mắt Azure Function. Ngoài ra, còn một số nền tảng serverless khác như Google Cloud Platform của Google, WebTask của oauth.



Ưu điểm của Serverless Architecture

  • Giá cả phải chăng: Với kiến trúc client-server, bạn phải thuê server theo tháng. Với kiến trúc serverless, do chi phí được tính theo số lần gọi Function nên rất rẻ.
  • Dễ scale mở rộng: Khi số lượng request tăng cao, bạn phải nâng cấp server để bảo đảm tốc độ, việc này khá rườm rà và mất thời gian. Với serverless, bên thứ 3 sẽ tự động tạo thêm nhiều process khi có nhiều request.
  • Đơn giản hóa việc code và deploy: với client-server, bạn phỉa biết cách build, deploy code lên server, bảo trì và kết nối tới server. Với serverless bạn chỉ việc code, mọi việc còn lại sẽ dduocj thực hiện giúp bạn.

Nhược điểm

Tất nhiên, đi kèm với ưu điểm, kiến trúc Serverless cũng co mottj số nhược điểm:
  • Bảo mật: Code của bạn nằm chung chạ với nhiều ứng dụng khác trên một server nên hacker có thể lợi dụng để tấn công, không phù hợp với một số ứng dụng lớn và phức tạp.
  • Performance: Có thể không nhanh bằng code trên server riêng vì code chỉ chạy mỗi khi có request nên sẽ mất khoảng 20-50ms để start-up.
  • Khó debug: Tài nguyên (CPU, RAM) được bên thứ 3 quản lý nên đôi khi ta sẽ khó mà tái tạo môi trường ở local để debug code của FaaS

Nhận xét

Bài đăng phổ biến từ blog này

Bài 1: Giới thiệu về ThingsBoard IoT Platform

The algorithm in Golang

I'm ThanhCong Technology