Thông thường, ngoài viết mã các nhà phát triển phần mềm phải quản lý các hoạt động triển khai ứng dụng như cài đặt máy chủ, theo dõi tài nguyén,... Khi các ứng dụng được triển khai lên các máy ảo sử dụng kiến trúc ảo hóa Hypervisor, các nhà phát triển vẫn phải quản lý các máy chủ, mạng, bộ nhớ, cân bằng tải trường hợp quá nhiều yêu cầu cần xử lý, cài hệ điều hành, cài đặt môi trường cho ứng dụng. Trong trường hợp này,
16
nhà phát triển ứng dụng sẽ tốt rất nhiều thời gian để đưa sản phẩm tới người dùng. Sự phát triển của ảo hóa container đã loại bỏ nhiều mối quan tâm cho các nhà phát triển. Các ứng dụng dựa trên container có thể giải quyết hầu hết các van đề trên chỉ trong vài giây. Cùng với sự phát triển của kiến trúc Microservices, các ứng dụng lớn sẽ chia nhỏ
thành các dịch vụ (services) và thành các chức năng (functions) độc lập. Đây chính
là nền tảng cơ sở của mô hình Serverless. Với mô hình Serverless, các nhà phát triển chỉ cần tập trung vào phát triển ứng dụng theo kiến trúc Microservices, chia nhỏ các
chức năng của ứng dụng và chạy chúng trên Serverless. Vì vậy, thuật ngữ Serverless
Computing là một thuật ngữ lớn bao hàm các dịch vụ nhỏ chứa trong nó, đơn vị nhỏ
nhất là function (chức nang) và Serverless đôi lúc cũng được gọi là chức năng như một
dịch vu (Function as a Services) [1].
2.5.1 Cac nền tang phổ biến
Hiện nay, tất cả các nhà cung cấp đám mây lớn đều có dich vụ cho Serverless Computing. Chẳng hạn, Amazon Web Services (AWS) có AWS Lambda cho phép các nhà phát triển chạy các (function) mà không cần phải tạo một máy ảo nào. AWS cũng cung cấp AWS GreenGrass ! để chạy các function trên các thiết bị biên. Microsoft Azure cung cap Azure Function” cho phép triển khai ứng dụng theo mô hình Serverless
trên nền tang Azure. IBM cũng có một nền tảng Serverless Computing được gọi là IBM
Cloud Function? được xây dựng trên Apache OpenWhisk* (một trong những nền tang
được giới thiệu ở các chương tiếp theo). Google cho phép các nhà phát triển chạy các
function theo mô hình Serverless trên Cloud Function’.
Tuy nhiên, tất cả các nền tảng Serverless của các nhà cung cấp trên phải được triển
!https://aws.amazon.com/greengrass/
”https://azure.microsoft.com/en-us/services/functions/
3https://www.ibm.com/cloud/functions
*https://openwhisk.apache.org/
Shttps://cloud.google.com/functions
17
khai trên nền tang do họ cung cấp, dẫn đến nhiều vấn dé liên quan đến bảo mật, chính sách và dữ liệu người dùng. Vì vậy, một số nền tảng Serverless mã nguồn mở cho phép các nhà phát triển tự xây dựng mô hình riêng phục vụ nhu cầu của mình và những cái tên phổ biến như là Apache OpenWhisk!, Kubeless” và OpenFaaSỶ. Các nền tảng này
sẽ được triển khai và đánh giá với khối lượng công việc khác nhau ở những chương
sau.
2.5.2 Các trường hợp sử dung Serverless
Mô hình Serverless mang lại nhiều lợi ích cho các nhà phát triển ứng dụng, tuy nhiên với những ứng dụng và khối lượng ngắn, không đồng bộ theo tải và công việc theo sự kiện, đồng thời. Các trường hợp sử dụng sau đặc biệt phù hợp với triết lý
Serverless
* Database trigger. Serverless có thể được sử dụng để đáp ứng những thay đối
trong cơ sở dữ liệu. Chẳng hạn như thêm, xóa, sửa cơ sở dữ liệu.
* Serverless computing hỗ trợ ở biên. Điện toán cạnh biên được mô tả như động
lực chính cho xu hướng Serverless Computing. Các thiết bị IoT tạo ra một lượng lớn dữ liệu cần được xử lý trong thời gian thực. Các function 6 cạnh biên sẽ xử
lý dữ liệu mà không cần phải gửi dữ liệu lên đám mây.
ô Xử lý đa phương tiện (media processing). Trong xử lý phương tiện truyền thông, một tập tin đầu vào đi qua các giai đoạn xử lý trước khi đưa kết quả đến người dùng cuối.
'http://openwhisk.apache.org/
*https://kubeless.io/
3https://www.openfaas.com/
18
Chương 3
Các nền tang Serverless mã nguồn mở