Ngày nay, cloud computing hay điện toán đám mây là một phần gần như không thể thiếu trong việc vận hành và phát triển ứng dụng hay website. Gần đây cloud provider có cung cấp một dịch vụ tương đối mới hơn, được gọi là Cloud Serverless. Trước khi đi sâu hơn vào khái niệm này, mời bạn làm quen với một số phân loại dịch vụ Cloud Computing.
Table of Contents
Cloud Platform
Sau đây là một số thuật ngữ phổ biến khi làm quen với công nghệ cloud (1):
- IaaS (Infrastructure as a Service): đây là mô hình được xem là phổ biến nhất, đơn giản là bạn mướn lại toàn bộ hệ thống cơ sở hạ tầng máy chủ và có toàn quyền quyết định vận hành, hay cài đặt phần mềm theo ý bạn.
- PaaS (Platform-as-a-Service): đây là mô hình mà bên dịch vụ cloud cung cấp để cho bạn dễ dàng deploy toàn bộ hệ thống ứng dụng chỉ bằng một vài cú click chuột. Ví dụ như chúng ta sử dụng bluehost để tạo một website bằng WordPress, bluehost sẽ giúp chúng ta khởi động máy tính, cài đặt database, và kết nối tới trang WordPress.
- SaaS (Software-as-a-Service): đây là mô hình mà chúng ta thuê lại phần mềm của bên cung cấp, có thể truy cập nó ở nhiều thiết bị và không phải nhức đầu cho việc cập nhật phần mềm. Điển hình như là phần mềm Microsoft Office 365, hay Customer Relationship Management (CRM), chúng ta có thể sử dụng dịch vụ trực tiếp ngay trên phần browser sau khi đã có license hay subscription
Serverless
Serverless được cloud provider phát triển để giúp chúng ta xây dựng phần mềm, thi hành những thuật toán mà không cần phải lo lắng đến việc quản lý máy chủ như mô hình IaaS. Tất nhiên vẫn sẽ cần đến server để vận hành phần mềm, nhưng “Cloud Provider” sẽ giúp quản lý từ việc thiết lập cho đến vận hành, hay bảo trì hệ thống. Cấu trúc serverless bao gồm hai phần chính:
- Functions as a Service (FaaS): Đây là mô hình mà chúng ta chỉ tập trung vào phần thuật toán, hay đóng gói đoạn code vào một khuôn mẫu và giao cho nhà cung cấp dịch vụ. Họ sẽ giúp chúng ta chạy đoạn code này khi chúng ta muốn. Mọi khó khăn cho việc scale up, hay scale down hệ thống được giao lại toàn bộ cho họ. Chi phí dịch vụ được tính bằng số thời gian mà đoạn code được thi hành, và nếu ứng dụng không hoạt động, chi phí sẽ là zero. (2)
- Backend-as-a-Service (BaaS): Đây là mô hình backend thường đi kèm trong hầu hết các ứng dụng để làm hoàn thiện hệ thống eco-system. Một số dịch vụ phổ biến như storage, database, api, authentication, message queue, ..v..v. Tương tự như FaaS, chi phí chỉ được tính cho số lượng data được lưu trữ, hay số lần dịch vụ được sử dụng. (3)
Ưu điểm của serverless:
- Giúp cải thiện hiệu quả và năng xuất của đội ngũ kỹ thuật viên khi chỉ tập trung vào việc viết code cho business logic, không phải lo quản lý hệ thống máy tính.
- Chi phí dựa trên số lượng data lưu trữ, hay thời gian tính từ khi đoạn code bắt đầu chạy cho đến khi kết thúc. Khác hẳn với mô hình IaaS, chi phí được tính kể từ khi máy tính được bật lên, không cần biết ứng dụng có hoạt động hay không.
- Deployment được đơn giản hoá vì hầu hết mọi cơ sở hạ tầng đã được duy trì bởi cloud provider.
- Khi ứng dụng phát triển lớn hơn, serverless cloud provider sẽ tự động scale up hệ thống.
Nhược điểm của serverless:
Tuy mang lại nhiều lợi ích nêu trên khi phát triển ứng dụng trên nền tảng serverless. Với việc không có quyền truy cập vào server và không được kiểm soát logic cho hệ thống cơ sở hạ tầng có thể mang lại nhiều bất cập.
- Việc giám sát và debug lỗi phần mềm khó khăn hơn so với những công cụ truyền thống có sẵn. Vì mỗi function hoàn toàn riêng biệt nên việc test logic toàn bộ hệ thống phức tạp hơn trên môi trường local development.
- Cold starts: cloud provider có thể scale down toàn bộ chương trình ứng dụng về zero khi không được sử dụng, sau đó nếu một lệnh truy cập mới được hình thành, cloud provider sẽ bắt đầu mở lại ứng dụng và sẽ tốn một khoảng thời gian để khởi động.
- Vendor lock-in: mỗi cloud provider có cấu trúc thiết kế hệ thống serverless riêng. Sử dụng dịch vụ serverless cũng đồng nghĩa với việc hoàn toàn phụ thuộc vào một vendor nhất định và có thể tốn nhiều thời gian hơn nếu chúng ta muốn chuyển ứng dụng qua một vendor mới.
Để hiểu thêm về mô hình serverless bằng một ví dụ thực tế qua mô hình dự báo covid. Bạn có thể xem video tại đây
T.L.
References:
(1) Jiminthesun, E. (2020, February 14). *Understanding cloud terminology: What does iaas, paas, and SAAS mean?* Cloudwards. Retrieved April 28, 2022, from https://www.cloudwards.net/understanding-cloud-terminology-what-does-iaas-paas-and-saas-mean/
(2) By: IBM Cloud Education. (n.d.). *Serverless*. IBM. Retrieved April 28, 2022, from https://www.ibm.com/cloud/learn/serverless
(3) *What is serverless?* Red Hat – We make open source technologies for the enterprise. (n.d.). Retrieved April 28, 2022, from https://www.redhat.com/en/topics/cloud-native-apps/what-is-serverless
Image: “Serverless Cloud Computing: Introduction, Emergence, Limitations, and Challenges — Part 01.” Https://Techexpertise.medium.com/Serverless-Cloud-Computing-Introduction-Emergence-Limitations-and-Challenges-3f8f70afe755.