Serverless là gì? Chúng ta có thực sự cần Serverless không? Đừng tin ai ngoài chúng ta

Nội dung bài viết

Video học lập trình mỗi ngày

Serverless nghĩa đen là không có dịch vụ hoặc có thể định nghĩa là một kiến trúc không máy chủ (server), là một cách tiếp cận kiến trúc mới. Nó cũng là một công nghệ rất phổ biến hiện nay và nhiều công ty lớn đang làm việc hướng tới Serverless. Vậy thật sự là Serverless là một kiến trúc không có máy chủ? 


Đừng hiểu lầm như những người nói như vậy, hãy xem câu trả lời của các chuyên gia. Hâu hết các lập trình viên đều đã nghe về cụm từ 'Serverless' nhưng có mấy ai chăm chú và chịu khó tìm hiểu đó. Liệu mấy ai hiểu khái niệm đó một các cụ thể. Nếu các bạn đã hiểu, vậy thì cùng chúng tôi check lại một lần nữa, còn nếu không thì hãy đọc và khám phá Serverless là gì?


Serverless là gì?


Như đã nói ở trên Serverless nghĩa đen là không có dịch vụ hoặc có thể định nghĩa là một kiến trúc không máy chủ (server), là một cách tiếp cận kiến trúc mới. Nhưng nói một kiến trúc không có máy chủ thì sẽ không có, thực tế không phải là không có mà là nó sử dụng bên thứ ba hay còn gọi là third party để cung cấp cho các nhà phát triển các chức năng cần thiết, chẳng hạn như cơ sở dữ liệu, tin nhắn và xác minh danh tính, theo cách thức dịch vụ mà chúng ta muốn. 


Ý tưởng của Serverless rất hay, vì nó giúp cho chúng ta có tể tập trung vào những ứng dụng những kỹ thuật trình bày mà không cần quan tâm tới máy chủ. Trước đây, nếu bạn muốn đưa một ứng dụng trực tuyến, bạn thường phải biết trước có bao nhiêu máy chủ, bao nhiêu dung lượng lưu trữ và cơ sở dữ liệu mà nó cần. Và cũng cần cài đặt các phần mềm khác mà ứng dụng phụ thuộc. 


Nhưng nếu bạn sử dụng Serverless, bạn không cần phải bận tâm đến việc sắp xếp và quản lý tất cả những điều này. Quá hay đúng không? Nếu nói như vậy thì rõ ràng Serverless quá mạnh rồi còn gì, vậy tại sao chúng ta lại xây dựng một server riêng cho bản thân mình? Đúng, câu hỏi hay, nhưng trước hết chúng ta đi tìm những ưu điểm mà Serverless mang lại là gì?


Ưu điểm của Serverless

  1. - Giảm chi phí vận hành và bảo trì 
  2. - Nâng cao hiệu quả R&D 
  3. - Khả năng mở rộng mạnh mẽ hơn 

Để nói sơ qua một chút về những ưu điểm này để cho các bạn hiểu thêm, chứ nhiều lúc nói ngắn gọn quá mà đa số các bạn lại mới tìm hiểu thì khó đọc. 

Giảm chi phí vận hành và bảo trì 


Một lợi thế rõ ràng của Serverless là nó giải phóng nhân viên vận hành và bảo trì khỏi các máy chủ nặng. Gánh nặng của nhân viên vận hành và bảo trì rõ ràng được giảm bớt, vì công việc của họ được giao cho nền tảng không máy chủ. Đối với các nhà phát triển, họ có thể tập trung sức lực vào việc phát triển logic nghiệp vụ, thay vì quan tâm đến việc liệu chương trình có thể chạy tốt trên máy chủ hay không. 


Nâng cao hiệu quả R&D 


R&D viết tắt của cụm từ (research & development). Khi quy mô của ứng dụng đạt đến một mức nhất định, việc triển khai phần mềm đã trở thành một gánh nặng. Quá trình thay đổi code từ sửa và chính thức publish đến triển khai đến hoạt động của máy chủ mất trung bình 5-10 phút. Bởi vì rất nhiều logic rất khó để kiểm tra đơn vị, nếu bạn muốn xác minh code tại thời điểm này, bạn phải thực hiện một quá trình phát hành dài. Ứng dụng Faas linh hoạt và di động một cách tự nhiên. Những gì chúng tôi triển khai trên nền tảng Faas chỉ là một chức năng. Chỉ mất hàng chục giây từ khi gửi đến khi triển khai và vận hành. So với thời gian triển khai của một ứng dụng lớn, điều này là giữa Sự khác biệt là rõ ràng. Xem thêm Faas là gì? 


Khả năng mở rộng mạnh mẽ hơn 


Bởi vì chúng tôi không còn cần phải xem xét các vấn đề máy chủ, vấn đề mở rộng quy mô đàn hồi được để cho các nhà cung cấp đám mây giải quyết. Serverless tự nhiên được tích hợp sẵn và do phương pháp triển khai linh hoạt và nhanh nhẹn của Faas, nó có thể đạt được tốc độ mở rộng nhanh chóng trong thời gian ngắn. Bởi vì các ứng dụng Faas là không trạng thái và chỉ chứa logic nghiệp vụ, khả năng mở rộng tự nhiên của chúng mạnh hơn nhiều so với các ứng dụng truyền thống như hiện nay. Từ những ưu điểm đó có thể nhiều bạn sẽ rung đùi rằng nếu vậy thì chúng ta quá thực sự cần kiến trúc Serverless vì nó quá hay. Nhưng cuộc sống là vậy, có hợp mới có tan, hahhaa có ưu mới có nhược. Vậy thì nhược điểm của Serverless là gì?


Nhược điểm của Serverless là gì?


Nó có nhiều nhược điểm nhưng theo tôi thì lớn nhất đó là niềm tin các bạn ạ. Thật ra tôi chả tin vào Bên thứ ba (third party). Vì trong qua trình làm việc tôi đã dình nhiều vụ rồi, vì dụ như gửi email hàng loạt, nửa đêm bên server bên nó bị tắc. Nó treo hết progress của mình, ngày mai lên ăn hành với công ty. Email của khách hàng không nhân được hàng loạt. Ngày hôm ấy, hận thằng third party vl. 


Còn nữa, việc xác nhận gửi sms khi đăng nhập nữa, có khi số của vietel nó gửi, còn mobifone nó không gửi. Chán vãi. Đó là lý do, còn nữa đó là việc bảo mật thông tin của ngưởi dùng...


Chúng ta có thực sự cần máy chủ không?


Mặc dù các khái niệm về serverless và cloud native chưa hoàn toàn trưởng thành, nhưng chúng không phải là những ý tưởng viễn vông. Đối với việc phát triển và vận hành, bảo trì thì việc nâng cao hiệu quả của Serverless là khá rõ ràng, nhưng hiện tại tôi thấy nó vẫn phù hợp với một số dịch vụ đơn giản và gọn nhẹ, nhiều người sẽ nói rằng Faas không phù hợp với lượng truy cập lớn, đây là một sự hiểu lầm, ngược lại Faas là một sự phù hợp đương nhiên. 


Trong các ứng dụng thực tế, chúng tôi có thể di chuyển một số chức năng như ánh xạ dữ liệu, phân tích mã hóa hoặc các phương pháp không trạng thái thường xuyên thay đổi sang nền tảng Serverless. 


Nói tóm lại Serverless mang đến những ý tưởng thiết kế mới cho thiết kế kiến trúc phần mềm và triển khai dịch vụ ứng dụng theo cách đột phá truyền thống, nhưng xét cho cùng, nó vẫn là một công nghệ mới “ra đời” gần đây, và nó vẫn còn rất nhiều chỗ để phát triển đang chờ chúng ta khám phá cho đến hết cuộc đời của lập trình viên.

Có thể bạn đã bị missing