Nếu bạn là người đang làm việc trong lĩnh vực công nghệ thông tin, chắc hẳn bạn có nghe qua ít nhất một lần cụm từ Serverless cũng như các chủ đề liên quan đến thuật ngữ này. Vậy Serverless là gì? Các bạn hãy cùng TinoHost tìm hiểu chi tiết qua bài viết dưới đây nhé!
Giới thiệu về Serverless
Serverless là gì?
Serverless (hay còn được gọi là nền tảng không máy chủ) là một nền tảng tạo ra môi trường cho phép lập trình viên code các ứng dụng hay dịch vụ mà không cần phải quan tâm quá nhiều đến vấn đề máy chủ. Ứng dụng Serverless có thể được hiểu như một server đảm nhận việc vận hành hệ thống nội tại bên trong như phân bổ, quản lý tài nguyên hệ thống, nâng cấp và bảo mật. Việc của IT chỉ là tập trung để phát triển sản phẩm.
Serverless mang lại những lợi ích gì?
Tạo lập ứng dụng trên Serverless đồng nghĩa với việc bạn chỉ tập trung chú trọng vào giá trị cốt lõi. Bạn không cần phải quan tâm đến việc quản lý và vận hành nhiều máy chủ hoặc thời gian chạy, dù bạn điều chỉnh ứng dụng trên nền tảng đám mây hay hệ thống máy chủ.
Khối lượng công việc được cắt giảm,giúp cho các nhà phát triển có thêm thời gian và công sức để tập trung vào việc nâng cao chất lượng sản phẩm công nghệ.
Không cần quản lý máy chủ
Bạn sẽ không cần phải quản lý bất kỳ vấn đề liên quan đến máy chủ nhứ phần mềm hoặc thời gian chạy để cài đặt, nâng cấp hoặc quản trị vì đã có bên thứ ba đảm nhận.
Thay đổi quy mô một cách linh hoạt
Với Serverless, bạn có thể điều chỉnh chế độ thay đổi quy mô tự động hoặc bằng cách điều chỉnh dung lượng thông qua việc chuyển đổi đơn vị sử dụng. Đối với máy chủ độc lập, việc này sẽ phức tạp hơn rất nhiều.
Độ sẵn sàng cao
Ứng dụng Serverless có độ sẵn sàng tích hợp và dung sai cao. Bạn sẽ không cần tạo kiến trúc cho các hiệu năng này bởi nền tảng không máy chủ đã cung cấp cho ứng dụng theo mặc định. Ngoài ra, Serverless cho phép người dùng chọn trung tâm dữ liệu (một hoặc nhiều nơi) để triển khai sản phẩm một cách dễ dàng.
Tiết kiệm chi phí
Khi sử dụng Serverless, bạn sẽ không còn chi trả chi phí quản lý, vận hành. Dựa vào số lượng request (được gọi là yêu cầu) , thời gian, dung lượng bộ nhớ của mỗi lần sử dụng function (được gọi là chức năng) mà hệ thống sẽ tính phí. Điều này có nghĩa là bạn sử dụng bao nhiêu thì tính tiền bấy nhiêu.
Những hạn chế của Serverless
Bạn có thể thấy rằng Serverless là một “kỳ công thần thánh” phải không? Tuy nhiên nền tảng vẫn chưa hoàn hảo, Serverless vẫn có những bắt cặp mà các nhà lập trình viên cũng phải cân nhắc kỹ lưỡng trước khi quyết định sử dụng.
Độ trễ
Hiệu suất có thể là một điểm trừ đối với mô hình này vì Serverless còn hạn chế về tốc độ xử lý các lệnh mà ứng dụng đưa ra cho các nguồn tài nguyên điện toán . Nghĩa là thời gian khớp lệnh sẽ lâu hơn. Nếu khách hàng đòi hỏi hiệu suất cao, sử dụng các máy chủ ảo được phân bổ sẽ là một giải pháp tuyệt vời.
Tính năng gỡ lỗi (Debug)
Công việc giám sát và gỡ lỗi của Serverless Computing cũng không phải là một thế mạnh. Bạn không thống nhất sử dụng một máy chủ, điều này gây trở ngại cho cả hai hoạt động trên.
(Tin tốt là nhà phát triển nền tảng không máy chủ hứa sẽ cải thiện xử lý tính năng giám sát và gỡ lỗi tốt hơn trong thời gian tới.)
Giới hạn về bộ nhớ, thời gian
Nhà cung cấp Serverless framework đều giới hạn dung lượng bộ nhớ và thời gian thực thi (timeout).
Ví dụ như sau:
- Giả sử timeout tối đa là 5 phút, nếu bạn chạy quá 5 phút, hệ thống tự động ngưng kết nối.
- Về bộ nhớ, thì sẽ thiết lập mỗi mức khác nhau tùy nhà cung cấp, AWS có dung lượng là 3008MB (sẽ được cấp CPU cao tương ứng), nếu ứng dụng yêu cầu bộ nhớ lớn thì sẽ không đáp ứng được.
Trong quá trình lập trình nên tối ưu hóa dung lượng bộ nhớ, để tiết kiệm chi phí.
Phụ thuộc nhà cung cấp
Bạn không thể muốn chạy phần mềm trên nền tảng chính xác như bạn muốn mà phải phụ thuộc vào nền tảng của nhà cung cấp.
Ví dụ: bạn cần 10x mà nhà cung cấp chỉ hỗ trợ đến 8x, bạn sẽ không sử dụng được nền tảng này. Như vậy, bạn phải cân nhắc các nền tảng được hỗ trợ trước khi sử dụng.
Chi phí ngầm
Vấn đề này tùy thuộc vào nhà cung cấp nhưng cơ bản là sẽ phát sinh thêm phụ phí như sau:
- Chi phí lưu trữ mã nguồn,
- Chi phí lưu tữu băng thông
- Chi phí về lưu trữ dữ liệu
Mặc dù, tuy không nhiều nhưng nếu không tính toán rõ ràng, các phần chi phí ngầm sẽ còn cao hơn cả chi phí cho Serverless.
Thời gian để nghiên cứu
Để có thể sử dụng Serverless framework, bạn cần thời gian để nghiên cứu. Bạn cần hiểu rõ cách quản lý các tài nguyên trong nền tảng này mặc dù kiến thức không quá khó nhưng bạn vẫn phải tìm hiểu trước nếu muốn sử dụng.
Ví dụ: bạn phải dành thời gian để hiểu về cách sử dụng các phần mềm như CloudFormation, IAM policies, quản lý cấu hình về stage, region, memory của Functions…
Tóm lại, chúng ta có thể thấy rằng Serverless là một trong những công nghệ đầy hứa hẹn trong tương lai. Tuy nhiên, hiện tại Serverless vẫn còn nhiều hạn chế chưa được cải thiện. Vì vậy, trước khi quyết định sử dụng nền tảng này, bạn nên cân nhắc thật kỹ.
Những câu hỏi thường gặp
Chi phí của Serverless và Server thường khác nhau như thế nào?
Bài viết bên trên đã để cập về vấn đề này, nhưng trong câu hỏi này TinoHost sẽ giải thích một cách dễ hiểu hơn. Bạn vẫn sẽ phải trả tiền hàng tháng cho dù cái máy chủ ảo không chạy, hoặc bạn chỉ sử dụng 5 – 10% công suất.
Bạn có thể hiểu Serverless như gói cước điện thoại được tính theo giây, gọi bao nhiêu trả tiền bấy nhiêu, còn máy chủ ảo thì phải trả tiền thuê bao hàng tháng dù có phải sử dụng hay không.
Có những nhà cung cấp dịch vụ Serverless đáng tin cậy nào trên thị trường?
Hiện nay, có rất nhiều nhà cung cấp mô hình Serverless để bạn thực hiện các functions một cách dễ dàng. Sau đây là ba nhà cung cấp lớn và uy tín trên thị trường.
- AWS Lambda: AWS vấn đang dẫn đầu trên thị trường Serverless và họ cũng cung cấp hệ thống Lambda để người dùng có thể sử dụng và tạo ra các chức năng trên mô hình Serverless.. AWS Lambda hỗ trợ các ngôn ngữ khác nhau như Node.js, Java, C#, Python,…
- Google Cloud Function: họ chỉ hỗ trợ Nodejs
- Azure Functions: đến từ hãng Microsoft, hỗ trợ C#, JavaScript, F#, Python, Batch, PHP, PowerShell
Mô hình Serverless có thực sự cần thiết hay không?
Serverless cùng với những tính năng nổi bật của mình đã mang lại những lợi ích đáng kể trong quá trình coding đối với người lập trình viên. Bên cạnh đó, mô hình này cũng có những nhược điểm cần lưu tâm. Vì vậy, tùy theo hình thức cũng tính chất công việc mà bạn có thể cân nhắc sử dụng mô hình Serverless tiềm năng này.
Nhược điểm lớn nhất của Serverless là gì?
Theo TinoHost, nhược điểm lớn nhất của mô hình này là tính chất phụ thuộc vào nhà cung cấp. Trong trường hợp có những vấn đề rủi ro xảy ra như sập server, treo hệ thống hay thậm chí email của khách hàng không nhận được hàng loạt thì bạn không thể tự xử lý mà phải đợi bên nhà cung cấp.