Trong những năm gần đây, các công ty khởi nghiệp, công ty công nghệ thông tin đã bắt đầu quan tâm đến Serverless nhiều hơn. Vậy Serverless là gì? Serverless có điểm gì nổi bật để thu hút giới công nghệ? Khi nào cần sử dụng Serverless? Hãy cùng chúng tôi giải đáp các thắc mắc trên thông qua bài viết dưới đây.
Serverless là gì?
Serverless không có nghĩa là không có máy chủ, mà là một mô hình điện toán đám mây, bạn sẽ không cần phải quản lý máy chủ nữa. Cùng Vietnix tìm hiểu về định nghĩa, kiến trúc của Serverless ngay bên dưới đây.
Định nghĩa Serverless
Serverless là một môi trường, nền tảng để thực thi các ứng dụng, dịch vụ mà không cần phải quan tâm đến máy chủ và hệ điều hành. Với mô hình Serverless người dùng không cần phải suy nghĩ về việc phân bổ, quản lý tài nguyên hệ điều hành cũng như việc nâng cấp, bảo trì hệ thống và bảo mật.
Điểm đặc biệt trong Serverless đó chính là bạn chỉ cần trả phí cho những phần bạn sử dụng. Ví dụ bạn thuê một máy chủ ảo (VPS), phí bạn sẽ phải trả trọn gói trong 1 tháng bao gồm thời gian chạy 24/7, CPU, RAM, băng thông và lưu trữ. Mặc dù bạn phải trả tiền đầy đủ hàng tháng nhưng có thể máy chủ không chạy hoặc chỉ sử dụng 50-60% công suất. Còn với Serverless như một gói cước di động trả trước, bạn chỉ trả phí cho tài nguyên (như số lượng request, thời gian xử lý) mà ứng dụng của bạn thực sự sử dụng, không phải trả cho thời gian máy chủ không hoạt động.
Kiến trúc của Serverless
Cấu tạo kiến trúc của Serverless có 5 phần chính như sau:
- Dịch vụ xác thực (Authentication Service): Dùng để kết nối ứng dụng, dịch vụ hoặc xác thực người dùng từ xa.
- Cơ sở dữ liệu sản phẩm (Product Database): Tất cả thông tin dữ liệu của người dùng sẽ được gửi đến kho quản lý, để tránh bị quá tải trong kho quản lý có chia nhỏ từng phần.
- Máy khách (Client): Các user session sẽ nằm ở phía máy khách.
- Chức năng tìm kiếm (Search Function): Sử dụng API Gateway. Những yêu cầu tìm kiếm từ máy khách được HTTP tìm trong kho dữ liệu và phản hồi lại máy khách.
- Chức năng đặt hàng (Purchase Function): Tách riêng từng khối các logic
Tìm hiểu về Serverless Computing
Serverless Computing (Điện toán không máy chủ) là một mô hình điện toán đám mây cho phép người dùng tập trung vào việc phát triển và triển khai ứng dụng mà không cần quản lý trực tiếp cơ sở hạ tầng máy chủ. Các nhà cung cấp dịch vụ đám mây sẽ đảm nhận việc phân bổ, mở rộng và quản lý tài nguyên máy chủ một cách tự động. Điểm đặc biệt của mô hình này là chi phí tính dựa trên 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 phí cố định hàng tháng.
Ưu và nhược điểm của Serverless
Serverless đang được chú ý trong thời đại công nghệ, với khả năng mở rộng linh hoạt và tiết kiệm tối đa chi phí. Những liệu rằng đây có chính là giải pháp tối ưu cho mọi dự án? Hãy cũng Vietnix tìm hiểu sâu hơn về những ưu điểm vượt trội và những mặt hạn chế cần phải lưu ý của Serverless để bạn có thể dễ dàng đưa ra quyết định của mình.
Linh hoạt về chi phí: Serverless chỉ thu phí người dùng dựa trên công việc tính toán được thực hiện thực tế.
Linh hoạt tăng giảm quy mô: Mô hình Serverless có khả năng mở rộng vô hạn hoặc thu gọn tài nguyên tính toán cho người dùng tùy thuộc nhu cầu sử dụng ứng dụng.
Quản lý cơ sở hạ tầng đơn giản: Việc quản lý cơ sở hạ tầng máy chủ phần lớn đã được nhà cung cấp dịch vụ đám mây đảm nhiệm, người dùng không nhất thiết phải quan tâm đến vấn đề này.
Tự động co giãn: Khi người dùng có nhu cầu tải cao, hệ thống Serverless sẽ tự động co giãn để đáp ứng nhu cầu mà không cần người quản trị phải thiết kế thủ công.
Giảm thiểu thời gian triển khai và phát triển: Khi sử dụng mô hình Serverless người dùng chỉ chú tâm vào việc phát triển ứng dụng mà không cần chú ý đến việc quản lý cơ sở hạ tầng trên máy chủ.
Giới hạn thời gian chạy hàm: Serverless là dịch vụ bị giới hạn về thời gian chạy hàm, giới hạn các tài nguyên sẵn có cũng như thời gian thực thi. Do đó các ứng dụng đòi hỏi thời gian thực hiện dài hoặc liên tục sẽ bị ảnh hưởng.
Phức tạp trong quản lý tài nguyên: Dù Serverless làm giảm áp lực về quản lý hạ tầng cho người dùng nhưng đối với việc phát triển các ứng dụng lớn thì việc theo dõi tài nguyên Serverless lại phức tạp.
Điều chỉnh hiệu suất ứng dụng gặp khó khăn: Trường hợp người sử dụng muốn tối ưu hóa hiệu suất của một số ứng dụng có thể sẽ gặp khó khăn bởi vì máy chủ và tài nguyên được quản lý bởi nhà cung cấp.
Khó khăn trong việc kiểm tra và gỡ lỗi: Việc kiểm tra và gỡ lỗi có thể gặp khó khăn khi phát triển ứng dụng trên mô hình điện toán Serverless so với khi khai báo trên cơ sở hạ tầng máy chủ lưu thông.
Chi phí ngầm: Một số nhà cung cấp sẽ tính chi phí lưu trữ mã nguồn, băng thông, lưu trữ dữ liệu,… điều này nếu không tối ưu chi phí ngầm này có thể còn cao hơn cả phí cho Serverless.
Yêu cầu về kỹ năng và kiến thức: Để vận hành trong mô hình Serverless đòi hỏi bạn phải biết cách quản lý tài nguyên. Vì thế bạn cần phải bỏ thời gian để nghiên cứu cách sử dụng IAM policies, CloudFormation,…
Khi nào nên sử dụng Serverless
Serverless được ứng dụng trong nhiều trường hợp khác nhau, loại trừ những trường hợp có liên quan đến các nhược điểm của Serverless như bên trên.
- Website hoặc APIs: Doanh nghiệp hoàn toàn có thể xây dựng một website hoặc một API dựa trên Serverless. Website có thể là động hoặc bán tĩnh và đa số người dùng thích chọn xây dựng Restful API với Serverless.
- Xử lý file đa phương tiện: Đối với các file, hình ảnh không yêu cầu xử lý cao như nén, cắt, đổi định dạng, tạo thumbnail, thì sử dụng Serverless là lựa chọn phù hợp.
- Xử lý sự kiện: Serverless đóng vai trò như 1 công tắc, khi khách hàng có hành động lên các sự kiện công tắc sẽ tự động kích hoạt.
2 mô hình dịch vụ của Serverless phổ biến
Serverless không chỉ là một thuật ngữ công nghệ mà còn mà một bước tiến lớn trong kiến trúc điện toán đám mây. Nhưng bạn đã thực sự hiểu rõ về 2 mô hình cốt lõi làm nên sức mạnh của Serverless này hay chưa? Cùng khám phá BasS và FaaS, nền tảng giúp cho Serverless tối ưu hóa tài nguyên và mang đến sự linh hoạt vượt trội.
1. Mô hình BasS
Mô hình BaaS (Back As A Service) là một Back-end dưới dạng dịch vụ, Frontend sẽ là nơi xử lý các Code Logic của doanh nghiệp. Và với Back-end, doanh nghiệp sẽ sử dụng dữ liệu từ API của một bên thứ 3.
2. Mô hình FaaS
Mô hình FaaS Mô hình FaaS (Function-as-a-Service) là một mô hình điện toán đám mây, cho phép các nhà phát triển xây dựng, chạy và quản lý các ứng dụng mà không cần quan tâm đến hạ tầng bên dưới. FaaS thường được sử dụng để xây dựng các microservice hoặc ứng dụng không máy chủ (serverless), không yêu cầu một framework hay thư viện cụ thể nào.
Trong mô hình FaaS, nhà cung cấp dịch vụ đám mây sẽ chịu trách nhiệm quản lý tất cả các tài nguyên phần cứng, hệ điều hành, máy chủ web và thời gian chạy. Các nhà phát triển chỉ cần viết code cho các hàm (function) và tải chúng lên nền tảng FaaS. Nền tảng FaaS sẽ tự động mở rộng quy mô để đáp ứng lưu lượng truy cập và chỉ tính phí cho thời gian thực thi của các hàm.
So sánh các nhà cung cấp Serverless hàng đầu
Hiện nay có rất nhiều nhà cung cấp Serverless, tuy nhiên 3 nhà cung cấp lớn được quan tâm hàng đầu đó là: AWS Lambda, Google Cloud Function, Azure Functions. Dưới đây là bảng so sánh thông số của 3 nhà cung cấp này:
Thông số | AWS Lambda | Google Cloud Function | Azure Functions |
---|---|---|---|
Khả năng mở rộng | Tự động | Tự động | Theo kế hoạch hoặc bằng tay |
Function tối đa | Không giới hạn số lượng function | 1000 function trên 1 project | Không giới hạn số lượng function |
Xử lý đồng thời | 1000/account/ region (soft limit) | Không giới hạn | Không giới hạn |
Thời gian xử lý tối đa | 5 phút | 9 phút | 5 phút |
Ngôn ngữ sử dụng | Java, JavaScript, C#, Python | Python, Go, Nodejs, PHP, Java, .NET Core | JavaScrip, C#, F#, Python, Batch, PowerShell, PHP |
Cài đặt dependencies | Package trong source | NuGet, Npm | |
Deployments | Chỉ dùng ZIP upload (to Lambda or S3) | Cloud Storage, ZIP upload, Cloud Source Repositories | OneDrive, GitHub, Dropbox, Visual Studio Team Services, Bitbucket, External repository |
Biến môi trường | Có | Có | App Settings và ConnectionStrings trong App Services |
Versioning | Versions và aliases | Cloud Source branch/tag | Cloud Source branch/tag |
Event-driven | S3, SNS, SES, Kinesis, Gateway, CloudWatch, DynamoDB, Cognito, API, CodeCommit,… | Cloud Storage Object Change Notifications; Cloud Sub/Pub | Blob, EventHub, GitHub WebHook, Queue, Http, Generic WebHook, ServiceBus Queue, Timer triggers, Service Bus Topic |
Hỗ trợ HTTP(S) | API GateWay | HTTP trigger | HTTP trigger |
Orchestration | AWS Step Functions | Chưa hỗ trợ | Azure Logic Apps |
Logging | CloudWatch Logs | Stackdriver Logging | App Services monitoring |
Monitoring | CloudWatch & X-Ray | Stackdriver Monitoring | Application Insights |
In-browser code editor | Có | Chỉ cho Cloud Source Repositories | Functions environment, App Service editor |
Granular IAM | IAM roles | Chưa hỗ trợ | IAM roles |
Giá cả | Miễn phí 1M requests, sau đó $0.20/1M requests, thêm $0.00001667/GB-sec | Miễn phí 1M requests, sau đó $0.40/1M requests, thêm $0.00000231/GB-sec | Miễn phí 1M requests, sau đó $0.20/1M requests, thêm $0.000016/GB-s |
Hướng dẫn xây dựng hệ thống Serverless
Để xây dựng hệ thống Serverless, bạn có thể tham khảo một số bước sau đây:
- Tìm hiểu về Serverless: Bạn cần nắm vững các kiến thức về cấu hình Serverless cũng như cách hoạt động của các nhà cung cấp Serverless nổi tiếng như AWS Lambda, Google Cloud Functions, Azure Functions.
- Lựa chọn nền tảng phù hợp: Dựa trên hiểu biết cũng như nhu cầu về Serverless để lựa chọn nhà cung cấp nền tảng đám mây phù hợp như AWS Serverless, Google Cloud Platform hay Microsoft Azure.
- Xác định dịch vụ cần thiết: Xác định dịch vụ bạn muốn cung cấp như tính toán hay lưu trữ.
- Phát triển khai báo dịch vụ: Xây dựng và phát triển dịch vụ Serverless bằng cách sử dụng các công cụ phát triển trên nền tảng đám mây.
- Tích hợp mở rộng: Khi hệ thống đã hoạt động bạn phải tích hợp các tính năng bảo mật và tính năng mở rộng cho hệ thống.
- Quảng bá: Giới thiệu dịch vụ của bạn, cung cấp tài liệu hướng dẫn để thu hút và duy trì khách hàng.
Câu hỏi thường gặp
Chi phí sử dụng Serverless có cao hơn so với việc quản lý máy chủ truyền thống không?
Sự khác biệt chi phí giữa hai dịch vụ như sau:
– Mô hình thanh toán: Dùng Serverless chỉ trả phí cho phần tài nguyên sử dụng thực tế, còn đối với mô hình quản lý máy chủ truyền thống phải chi trả trọn gói dịch vụ.
– Khả năng tự động điều chỉnh quy mô: Serverless cung cấp tự động điều chỉnh quy mô theo nhu cầu giúp tối ưu chi phí so với mô hình quản lý truyền thống điều chỉnh quy mô thủ công thủ công.
– Chi phí vận hành, bảo trì: Nhà cung cấp dịch vụ Serverless chịu trách nhiệm bảo trì cơ sở hạ tầng giúp doanh nghiệp tiết kiệm chi phí đáng kể so với mô hình truyền thống.
Liệu Serverless có thể thay thế hoàn toàn việc quản lý máy chủ truyền thống trong tương lai?
Điều này còn phụ thuộc vào nhiều yếu tố và xu hướng phát triển trong tương lai, tuy nhiên chúng ta có thể dựa vào một số tiềm năng và hạn chế sau để đánh giá khả năng thay thế:
Serverless có thể loại bỏ việc quản lý cơ sở hạ tầng để tập trung nguồn lực phát triển ứng dụng rút ngắn thời gian đưa sản phẩm ra thị trường và doanh nghiệp chỉ trả phần chi phí cho các tài nguyên đã sử dụng. Khả năng tự động điều chỉnh quy mô giúp tối ưu chi phí cho doanh nghiệp.Tuy nhiên Serverless cũng tiềm ẩn về rủi ro bảo mật và hạn chế quyền kiểm soát.
Lời kết
Bên trên là tổng hợp những kiến thức cơ bản nhất về Serverless là gì mà chúng tôi muốn gửi đến các bạn. Hy vọng các bạn sẽ xem xét, phân tích những ưu điểm và nhược điểm để đưa ra quyết định phù hợp với nhu cầu của doanh nghiệp mình.