Tổng quan bài viết:
1. Giới thiệu Serverless Computing và Serverless Architectures
2. Traditional vs Serverless Architecture
3. AWS Lambda
4. Ưu điểm và nhược điểm của Serverless.
5. Tổng kết
I. Introdution Serverless Computing vs Serverless Architectures
- Serverless Computing là một mô hình thực thi điện toán đám mây mà trong đó các nhà cung cấp đám mây sẽ quản lý động việc phân bổ tài nguyên máy, giá cả của mô hình này dựa trên số lượng tài nguyên thực tế mà ứng dụng sử dụng thay vì phải trả trước một khoản nhất định trong một khoảng thời gian. Ngoài ra, một Serverless Computing cũng có thể được hiểu là cách mà chúng ta xây dựng lên các ứng dụng khả dụng, sẵn sàng lắng nghe và phản ứng lại với các sự kiện được đưa ra bởi các dịch vụ
- Serverless Architectures là một kiến trúc được xây dựng dựa trên ý tưởng của Serverless Computing
II. Traditional vs Serverless Architecture
Price
- Một trong những lợi thế chính của việc sử dụng Serverless là giảm thiểu chi phí.
- Mô hình chi phí của Serverless tính toán dựa trên những gì thực thi, nghĩa là tính phí cho số lần thực hiện.
- So với mô hình truyền thống thì tiêu chí này chiến thắng thuộc về Serverless Architecture.
Network
- Các chức năng Serverless chỉ được truy cập dưới dạng API riêng. Để truy cập chúng, bạn phải thiết lập API Gateway.
- Điều này không có tác động đến giá cả hoặc quy trình của bạn, nhưng điều đó có nghĩa là bạn không thể truy cập trực tiếp vào chúng thông qua IP thông thường
- Về tiêu chí này, chiến thắng ở đây thuộc về mô hình kiến trúc truyền thống.
3rd Party Dependencies
- Hầu hết, nếu không muốn nói là tất cả các dự án của bạn đều có sự phụ thuộc bên ngoài, chúng dựa vào các thư viện không được tích hợp vào ngôn ngữ hoặc khung bạn sử dụng
- Đối với các ứng dụng đơn giản có ít phụ thuộc, Serverless là người chiến thắng.
- Đối với bất cứ điều gì phức tạp hơn, mô hình kiến trúc truyền thống là người chiến thắng
ENV
- Thiết lập các môi trường khác nhau cho Serverless cũng dễ như thiết lập một môi trường duy nhất
- Đây là một cải tiến lớn so với các máy chủ truyền thống, bạn không còn cần phải thiết lập các môi trường dev, staging, and production. Cuối cùng, bạn sẽ mất số lượng tất cả các môi trường tại một số điểm.
- Về tiêu chí này chiến thắng ở đây là Serverless Architecture
Timeout
- Với tính toán Serverless, có giới hạn thời gian chờ 300 giây. Các chức năng quá phức tạp hoặc hoạt động lâu không tốt cho Serverless, nhưng thời gian chờ quá khiến bạn không thể thực hiện một số tác vụ nhất định.
- Giới hạn cứng vào thời điểm này làm cho Serverless không thể sử dụng được cho các ứng dụng có thời gian thực hiện thay đổi và đối với một số dịch vụ yêu cầu thông tin từ nguồn bên ngoài.
- Dành chiến thắng ở tiêu chí này rõ ràng ở đây là Kiến trúc truyền thống.
Scale
- Quá trình mở rộng cho Serverless là tự động và không xảy ra downtime, nhưng thiếu kiểm soát hoặc thiếu hoàn toàn kiểm soát. Mặc dù tự động mở rộng rất tuyệt vời, nhưng khó có thể giải quyết và giảm thiểu các lỗi liên quan đến các trường hợp Serverless mới.
- Nó liên kết giữa Serverless và Kiến trúc truyền thống.
III. AWS Lambda
- AWS Lambda: Đây là dịch vụ cloud computing thứ ba của Amazon, nó khác so với 2 dịch vụ còn lại là EC2 (Elastic Compute Cloud) và ECS (Elastic Container Service).
- AWS Lambda là một mô hình event-driven, nền tảng Serverless trên AWS này sẽ thực thi mã của bạn rồi phản hồi lại các sự kiện. Nó sẽ quản lý cơ sở hạ tầng cơ bản và tăng hoặc giảm chúng tùy theo lượng yêu cầu xử lý sự kiện của ứng dụng.
- Hiện tại, AWS hỗ trợ các ngôn ngữ là: Node.js (JavaScript), Python, Java (Java 8 compatible), C# (.NET Core) và Go.
IV. Ưu điểm và nhược điểm của Serverless.
1.Ưu điểm
- Đầu tiên là chi phí: so với việc thuê server và trả tiền theo tháng hoặc theo năm thì Serverless lại tính phí theo thời gian và số lần gọi Function nên chi phí sẽ rẻ hơn, bạn không cần phải trả thêm phí khi mà Server không hoạt động.
- Dễ dàng mở rộng quy mô: Khi số lượng request tới ứng dụng của bạn tăng cao, nếu thuê hoặc tự xây dựng server thì bạn sẽ phải nâng cấp chúng để đảm bảo tốc độ cho ứng dụng, điều này sẽ tốn nhiều thời gian và nhân lực. Ngược lại, trong mô hình Serverless, các nhà cung cấp bên thứ ba sẽ tự lo liệu hết, họ sẽ tự mở rộng thêm các tiến trình và tài nguyên để cân bằng tải khi có nhiều request.
- Deploy code đơn giản hơn: Bạn sẽ cần có kiến thức xây dựng, triển khai, cấu hình code lên server và bảo trì chúng trong mô hình client-server. Còn với Serverless, chỉ cần đẩy code lên, mọi việc còn lại đã có nhà cung cấp dịch vụ xử lý.
2. Nhược điểm
- Khó khăn cho việc phát triển code ứng dụng ở máy local.
- Khi phát triển ứng dụng, bạn cần để ý tới các dependencies, càng nhiều dependencies thì việc upload ứng dụng của bạn lên càng mất nhiều thời gian.
- Không biết được code của bạn nằm ở đâu cả, tạo cảm giác không an toàn, biết đâu có hacker nào tấn công được vào các máy chủ, thì việc code của bạn bị lấy hoặc sao chép là điều có thể xảy ra.
- Về việc Debug code nữa, những tài nguyên như CPU hay RAM chỉ được quản lý ở bên phía nhà cung cấp dịch vụ cloud nên chúng ta khó tái tạo lại môi trường ở máy local để debug ứng dụng.
V. Tổng kết
Trong nội dung bìa viết này, mình đã giới thiệu sơ qua về một thuật ngữ như là Serverless Architecture, Serverless Computing cũng như phân biệt một số điểm khác biệt nổi bật giữa mô hình kiến trúc truyền thống và Serverless. Qua đó, tóm lược được mốt số ưu điểm cũng như nhược nhiểm nhất định. Hi vọng bài viết này sẽ giúp các bạn có một cái nhìn tổng quan nhất về Serverless.