Tổng quan về Serverless là gì? Ưu và nhược điểm của Serverless

ITNavi 08 Nov 2021 10424

Nỗi ám ảnh lớn nhất của tôi thời sinh viên chính là những kỳ đăng ký tín chỉ. Đã có rất nhiều lần phải ngồi 3 tiếng đồng hồ mới có thể đăng ký được môn học và có khi không đăng ký được bởi mỗi lần vào đều có thông báo server quá tải. Chắc rằng, đó cũng là tình trạng mà rất nhiều người cũng đang gặp phải. Vậy làm thế nào để có thể giải quyết được bài toán server đó? Câu trả lời chính là Serverless. Chi tiết về Serverless là gì, những ưu và nhược điểm của hệ thống này là gì? Hãy cùng chúng tôi giải đáp tất cả những thắc mắc về Serverless tại bài viết này nhé!


Serverless là gì? Một môi trường thực thi ứng dụng không quan tâm đến máy chủ

Serverless là gì?

Serverless là môi trường, nền tảng để thực thi các ứng dụng và dịch vụ mà không cần quan tâm đến máy chủ. Đối với Serverless, bạn sẽ không phải quan tâm đến việc phân bổ, quản lý tài nguyên hệ điều hành hay những vấn đề về nâng cấp, bảo mật. Với môi trường Serverless, bạn chỉ cần tập trung phát triển sản phẩm còn vấn đề vận hành như thế nào sẽ do nền tảng này đảm nhiệm.


Điều quan trọng và khác biệt trong môi trường Serverless là bạn là bạn phải trả phí cho những phần bạn sử dụng. Giả sử đối với một máy chủ ảo, phí trọn gói với thời gian chạy 24/7 trong vòng 1 tháng, RAM và CPU, băng thông, lưu trữ. Bạn vẫn sẽ phải trả phí đều đặn mỗi tháng mặc dù máy chủ ảo đó không chạy hoặc bạn chỉ sử dụng một phần nhỏ công suất thì bạn vẫn phải chi trả cho cả gói. Bạn có thể hiểu một cách đơn giản, Serverless giống như một gói mạng hàng tháng bạn đăng ký, dù bạn dùng hay không thì vẫn phải chịu phí này hàng tháng.

Kiến trúc của Serverless

Kiến trúc của môi trường 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.

Ưu và nhược điểm của Serverless

Ưu điểm của Serverless là gì?


Để 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 để cấu hình, cài đặt và bảo trì máy chủ.

Ưu điểm lớn nhất của Serverless là bạn không cần quan tâm đến quá trình vận hành của máy chủ

Nhược điểm của Serverless


Serverless được đánh giá là một ý tưởng tuyệt vời nhưng không hoàn hảo. Serverless có những nhược điểm riêng, do vậy các bạn cũng cần lưu ý trước khi sử dụng.

  • Độ trễ: Hiệu suất của Serverless có thể là một vấn đề. 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.

Với Serverless, việc giám sát và gỡ lỗi gặp nhiều khó khăn

Serverless nên sử dụng khi nào?

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. Nhìn chung những ứng dụng không dính dáng đến điểm yếu của Serverless là có thể sử dụng như:

  • 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ử ứng dụng 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ờ.


Serverless ra đời đã trở thành cách giải quyết lý tưởng cho bài toán về server. Tất nhiên không một ứng dụng nào là hoàn hảo cả, Serverless cũng vậy sẽ có những điểm mạnh và điểm yếu riêng. Tuy nhiên hãy tìm hiểu thật kỹ ứng dụng mình muốn làm là gì, có phù hợp khi sử dụng Serverless không trước khi lựa chọn nhé. Qua bài viết, hy vọng các bạn có thể hiểu rõ hơn về Serverless là gì và một vài gợi ý về ứng dụng nên sử dụng Serverless. Chúc các bạn lựa chọn được môi trường tốt nhất phục vụ cho công việc của mình nhé.

ITNavi - Nền tảng kết nối việc làm IT

Nguồn: Tổng quan về Serverless là gì? Ưu và nhược điểm của Serverless

Bài viết liên quan

NEWSLETTER

Nhập địa chỉ email của bạn dưới đây để đăng ký nhận tin mới nhất

KẾT NỐI VÀ THEO DÕI