Trong thời đại số hóa hiện nay, Serverless đã trở thành một khái niệm quan trọng và đầy hứa hẹn trong tương lai của lĩnh vực công nghệ thông tin. Trong bài viết này, chúng ta sẽ khám phá sâu hơn về Serverless là gì, định nghĩa, và tại sao nên sử dụng.
1. Serverless là gì?
Hiểu cơ bản Serverless đúng như tên gọi, bao gồm server và less, là dịch vụ và ứng dụng vẫn được triển khai dù không có máy chủ.
Serverless là môi trường để thực thi các ứng dụng và dịch vụ mà không cần phải quan tâm tới máy chủ như thông thường. Với Serverless, bạn không cần phân bổ hay quản lý tài nguyên hệ điều hành, không cần nâng cấp hay lo về bảo mật. Khi này, bạn chỉ cần tập trung toàn lực phát triển chất lượng sản phẩm, còn việc vận hành thì sẽ do Serverless đảm nhận.
Serverless, đơn giản là một môi trường kỹ thuật số mà không cần máy chủ mà server vẫn hoạt động. Trên thực tế, máy chủ đã được nhà cung cấp dịch vụ quản lý. Chúng bao gồm hạ tầng, DC, network, storage, security, platform, auto-scale.
2. Kiến trúc của Serverless
Môi trường Serverless được cấu tạo từ 5 thành phần chính sau:
- Authentication Service (máy chủ xác thực): là loại máy chủ mạng mà người dùng xác thực từ xa hoặc CNTT node kết nối với một ứng dụng hoặc dịch vụ.
- Product Database (cơ sở dữ liệu sản phẩm): tất cả các dữ liệu sẽ được chuyển đến kho quản lý, các kho này sẽ được chia nhỏ ra cho những khách hàng lẻ để tránh sự quá tải.
- Client (máy khách): với hai sự thay đổi trên, một vài logic sẽ được nằm ở phía client như user session (bạn sẽ thấy rõ nhất tại các Single Page App), phần giao diện hiển thị, route nào user có thể truy cập trong code client.
- Search Function (chức năng tìm kiếm): một vài ràng buộc vẫn được server nắm như chức năng tìm kiếm. Các bạn có thể gọi các API Gateway, những yêu cầu từ client, HTTP sẽ lấy dữ liệu từ kho và trả về cho chúng ta.
- Purchase Function (chức năng đặt hàng): đây là tính năng do một nhà cung cấp khác. Những logic khác nhau sẽ được tách ra và deploy thành những khối khác nhau. Đây cũng là cách tiếp cận rất phổ biến trong Microservices.
3. Cách Serverless hoạt động
Serverless computing loại bỏ người dùng khỏi việc quản lý máy chủ. Có nghĩa là máy chủ chịu trách nhiệm tự tính toán các tham số như bộ nhớ và không gian lưu trữ. Quy trình này được gọi là “Function-as-a-Service” hoặc “FaaS“.
Khi đám mây nhận được code để chạy, nó sẽ tính toán số tài nguyên cần thiết. Sau đó, cloud sẽ kiểm tra các máy chủ của mình và xử lý các tài nguyên cần thiết để thực hiện tiến trình trước đó.
Ngoài ra, máy chủ phải xác định khi nào một tiến trình cần tăng hay giảm quy mô. Nếu máy chủ lưu trữ một trang web “nhìn thấy” lượng khách truy cập, nó sẽ tự động điều chỉnh và gán thêm tài nguyên cho trang web này.
Máy chủ có thể sử dụng ít tài nguyên hơn để duy trì trang web khi luồng khách truy cập biến mất. Sau đó, tính toán tài nguyên đã được sử dụng, rồi tính hóa đơn cho người dùng.
4. Ưu nhược điểm của Serverless
4.1. Ưu điểm
Để xây dựng nên một ứng dụng Serverless đồng nghĩa với việc bạn chỉ tập trung vào sản phẩm cốt lõi mà không cần phải quan tâm đến vấn đề quản lý và vận hành của hệ thống máy chủ.
Từ đó, các nhà phát triển có thể dành nhiều thời gian và năng lượng hơn cho việc xây dựng các sản phẩm tuyệt vời có tính ổn định và linh hoạt cao.
Nói về những lợi ích của Serverless, ta có thể kể đến như:
- Không cần quản lý máy chủ: Bạn sẽ không cần mất thời gian và công sức để duy trì bất kỳ máy chủ nào. Sẽ không còn bất kỳ vấn đề nào về cài đặt, nâng cấp hoặc quản trị máy chủ.
- Thay đổi quy mô một cách linh hoạt: Việc thay đổi sang quy mô tự động bằng cách điều chỉnh dung lượng thông qua chỉnh đổi đơn vị sử dụng đơn giản hơn rất nhiều so với máy chủ độc lập.
- Độ sẵn sàng cao: Ứng dụng Serverless được đánh giá cao về độ sẵn sàng tích hợp và tính đúng sai. Bạn sẽ không phải tạo kiến trúc cho các khả năng này bởi các dịch vụ ứng dụng đã cung cấp sẵn theo kiểu mặc định. Ngoài ra, bạn cũng có thể chọn trung tâm dữ liệu ở một hoặc nhiều nơi để triển khai sản phẩm của mình một cách dễ dàng.
- Tiết kiệm chi phí: Sử dụng Serverless đã giúp tiết kiệm rất nhiều chi phí cần bỏ ra
4.2. Nhược điểm
Mặc dù với các ưu điểm khá rõ ràng, Serverless vẫn được đánh giá không hoàn hảo, do vậy các bạn cũng cần lưu ý trước khi sử dụng.
- Độ trễ: Bản thân mô hình này đã gây nên độ trễ lớn trong quá trình phản hồi lại với các lệnh của ứng dụng. Nếu khách hàng yêu cầu hiệu suất cao, bạn nên sử dụng các máy chủ ảo phân bổ sẽ ưu việt hơn.
- Gỡ lỗi: Việc giám sát và gỡ lỗi của Serverless cũng gặp nhiều khó khăn. Việc không sử dụng tài nguyên máy chủ thống nhất dẫn đến việc hoạt động gặp nhiều trở ngại.
- Giới hạn bộ nhớ, thời gian: Các nhà cung cấp thường giới hạn tài nguyên ở mức cố định về bộ nhớ và thời gian thực thi. Giả sử thời gian thực thi tối đa là 5 phút, sau 5 phút, quá trình thực thi này sẽ bị ngắt. Về bộ nhớ thì sẽ được giới hạn nhiều mức khác nhau tùy theo nhà cung cấp.
- Phụ thuộc nhà cung cấp: Bạn sẽ không thể tùy ý chạy các phiên bản của phần mềm chính xác như mình mong muốn mà phải phụ thuộc vào bên cung cấp. Ví dụ bạn cần Nodejs 10.x nhưng nhà cung cấp lại chỉ hỗ trợ đến bản 8.x thì bạn sẽ không thể dùng phiên bản này.
- Chi phí ngầm: Chi phí này sẽ phụ thuộc vào nhà cung cấp có tính hay không, tuy nhiên những chi phí có thể phát sinh như: lưu trữ mã nguồn, lưu trữ dữ liệu, băng thông. Nếu không tối ưu đúng cách, có thể chi phí ngầm sẽ cao hơn chi phí của Serverless.
5. Khi nào nên lựa chọn Serverless?
Với những nét đặc thù riêng, chắc hẳn rất nhiều bạn phân vân nên sử dụng Serverless khi nào. Dưới đây là một số trường hợp bạn nên ứng dụng Serverless trong dự án của bản thân:
- Websites và APIs: Bạn hoàn toàn có thể xây dựng một trang web động hoặc bán tĩnh hay cũng có thể là API. Thông thường người ta hay xây dựng Restful API với Serverless hoặc áp dụng cho Graphql.
- Xử lý đa phương tiện: Serverless thích hợp cho các thao tác xử lý hình ảnh, video không yêu cầu quá cao như cắt, giải nén, định dạng kích thước hoặc chuyển đổi mã của video.
- Xử lý sự kiện: Serverless có thể đóng vai trò như một cầu giao để thực hiện một chuỗi các hành động khác nhau khi được kích hoạt theo sự kiện.
- Xử lý dữ liệu: Tùy theo từng ngữ cảnh mà có thể sử như IoT, Chatbox,… Lý do mà Serverless được đánh giá là thích hợp với mảng này là vì với IoT hay Chatbox, chúng ta sẽ không biết bao giờ dữ liệu sẽ tới, khi nào cần được xử lý dữ liệu. Chính vì vậy, chúng ta sẽ không cần phải xây dựng máy chủ lúc nào cũng phải chạy để tránh lãng phí thời gian chờ.
Kết luận
Mặc dù Serverless không phải là một giải pháp hoàn hảo dành cho mọi doanh nghiệp, nhưng nó đã mang lại nhiều cơ hội và lợi ích đối với ngành công nghệ thông tin. Với khả năng giảm bớt gánh nặng quản lý máy chủ và tập trung vào phát triển sản phẩm cốt lõi, Serverless đã giúp tăng cường sự linh hoạt và tiết kiệm chi phí cho các tổ chức và cá nhân. Tuy nhiên, khi lựa chọn sử dụng loại giải pháp này, bạn cần xem xét cẩn thận và đánh giá các yếu điểm và ưu điểm của nó với nhu cầu của bạn. Chúc bạn lựa chọn được giải pháp thích hợp nhất với dự án của mình!
Xem thêm: