Tại sao cuộc cách mạng serverless lại bế tắc

Những điểm chính

  • Trong vài năm nay, chúng ta đã được hứa hẹn rằng điện toán không máy chủ sẽ mở ra một kỷ nguyên mới không có hệ điều hành cụ thể để chạy các ứng dụng. Chúng tôi được biết rằng cấu trúc này sẽ giải quyết được nhiều vấn đề về khả năng mở rộng. Trên thực tế, mọi thứ đều khác nhau.
  • Trong khi nhiều người xem serverless là một ý tưởng mới, nguồn gốc của nó có thể bắt nguồn từ năm 2006 với sự ra đời của Zimki PaaS và Google App Engine, cả hai đều sử dụng kiến ​​trúc serverless.
  • Có bốn lý do khiến cuộc cách mạng không có máy chủ bị đình trệ, từ việc hỗ trợ ngôn ngữ lập trình hạn chế đến các vấn đề về hiệu suất.
  • Máy tính không có máy chủ không hoàn toàn vô dụng. Không có gì. Tuy nhiên, chúng không nên được coi là sự thay thế trực tiếp cho máy chủ. Đối với một số ứng dụng, chúng có thể là một công cụ hữu ích.

Máy chủ đã chết, máy chủ muôn năm!

Đây là tiếng kêu chiến đấu của cuộc cách mạng không có máy chủ. Chỉ cần nhìn lướt qua báo chí trong vài năm qua, có thể dễ dàng kết luận rằng mô hình máy chủ truyền thống đã chết và trong vòng vài năm nữa tất cả chúng ta sẽ sử dụng kiến ​​trúc serverless.

Như bất kỳ ai trong ngành đều biết, và như chúng tôi cũng đã chỉ ra trong bài viết của mình về trạng thái điện toán không có máy chủ, cái này sai. Mặc dù có nhiều bài viết về công đức cuộc cách mạng không có máy chủ, nó chưa bao giờ diễn ra. Trong thực tế, chương trình nghiên cứu mới nhấtrằng cuộc cách mạng này có thể đã đi đến ngõ cụt.

Một số hứa hẹn về mô hình không có máy chủ chắc chắn đã được hiện thực hóa, nhưng không phải tất cả. Không phải ai cũng.

Trong bài viết này tôi muốn xem xét lý do của tình trạng này. Tại sao sự thiếu linh hoạt của các mô hình không có máy chủ vẫn là rào cản cho việc áp dụng rộng rãi hơn, mặc dù chúng vẫn hữu ích trong các trường hợp cụ thể, được xác định rõ ràng.

Những gì các chuyên gia về điện toán không có máy chủ đã hứa hẹn

Trước khi bước vào những thách thức của điện toán không có máy chủ, chúng ta hãy xem xét những gì nó phải cung cấp. Lời hứa của cuộc cách mạng không có máy chủ rất nhiều và - đôi khi - rất tham vọng.

Đối với những người không quen thuộc với thuật ngữ này, đây là một định nghĩa nhanh. Điện toán phi máy chủ xác định kiến ​​trúc trong đó các ứng dụng (hoặc các phần của ứng dụng) chạy theo yêu cầu trong môi trường thời gian chạy thường được lưu trữ từ xa. Ngoài ra, hệ thống không có máy chủ có thể được lưu trữ tại nhà. Xây dựng các hệ thống không có máy chủ có khả năng phục hồi là mối quan tâm lớn đối với các quản trị viên hệ thống và các công ty SaaS trong vài năm qua, vì (người ta khẳng định) kiến ​​trúc này mang lại một số lợi thế chính so với mô hình máy khách-máy chủ "truyền thống":

  1. Các mô hình serverless không yêu cầu người dùng duy trì hệ điều hành của riêng họ hoặc thậm chí tạo các ứng dụng tương thích với các hệ điều hành cụ thể. Thay vào đó, các nhà phát triển tạo mã chia sẻ, tải mã lên nền tảng không có máy chủ và xem mã chạy.
  2. Tài nguyên trong các khung không có máy chủ thường được tính phí theo phút (hoặc thậm chí theo giây). Điều này có nghĩa là khách hàng chỉ trả tiền cho thời gian họ thực sự chạy mã. Điều này so sánh thuận lợi với máy ảo đám mây truyền thống, trong đó máy hầu như không hoạt động nhưng bạn phải trả tiền cho nó.
  3. Vấn đề về khả năng mở rộng cũng đã được giải quyết. Tài nguyên trong các khung không có máy chủ được phân bổ động để hệ thống có thể dễ dàng đối phó với nhu cầu tăng đột ngột.

Nói tóm lại, các mô hình không có máy chủ cung cấp các giải pháp linh hoạt, chi phí thấp và có thể mở rộng. Thật ngạc nhiên là chúng tôi không nghĩ ra ý tưởng này sớm hơn.

Đây thực sự là một ý tưởng mới?

Trên thực tế, ý tưởng này không mới. Khái niệm cho phép người dùng chỉ trả tiền cho thời gian mã thực sự chạy đã xuất hiện kể từ khi nó được giới thiệu bởi Zimki PaaS vào năm 2006 và cùng khoảng thời gian đó Google App Engine đã đưa ra một giải pháp tương tự.

Trên thực tế, cái mà ngày nay chúng ta gọi là mô hình “không có máy chủ” đã cũ hơn nhiều công nghệ hiện được gọi là “bản địa đám mây” cung cấp nhiều thứ tương tự. Như đã lưu ý, các mô hình không có máy chủ về cơ bản chỉ là một phần mở rộng của mô hình kinh doanh SaaS đã tồn tại trong nhiều thập kỷ.

Cũng cần thừa nhận rằng serverless không phải là kiến ​​trúc FaaS, mặc dù có mối liên hệ giữa cả hai. FaaS về cơ bản là phần tính toán tập trung của kiến ​​trúc không có máy chủ, nhưng nó không đại diện cho toàn bộ hệ thống.

Vậy có chuyện gì ồn ào vậy? Vâng, khi tỷ lệ thâm nhập internet tiếp tục tăng vọt ở các nước đang phát triển, nhu cầu về tài nguyên máy tính cũng tăng lên cùng lúc. Ví dụ, nhiều quốc gia có lĩnh vực thương mại điện tử đang phát triển nhanh chóng lại không có cơ sở hạ tầng máy tính cho các ứng dụng trên các nền tảng này. Đây là nơi các nền tảng không có máy chủ trả phí xuất hiện.

Sự cố với mô hình không có máy chủ

Điều đáng chú ý là các mô hình không có máy chủ có... vấn đề. Đừng hiểu sai ý tôi: Tôi không nói rằng bản thân chúng là xấu hoặc không mang lại giá trị đáng kể cho một số công ty trong một số trường hợp. Nhưng tuyên bố chính của “cuộc cách mạng”—rằng kiến ​​trúc không máy chủ sẽ nhanh chóng thay thế kiến ​​trúc truyền thống—không bao giờ thành hiện thực.

Đó là lý do tại sao.

Hỗ trợ hạn chế cho các ngôn ngữ lập trình

Hầu hết các nền tảng không có máy chủ chỉ cho phép bạn chạy các ứng dụng được viết bằng một số ngôn ngữ nhất định. Điều này hạn chế nghiêm trọng tính linh hoạt và khả năng thích ứng của các hệ thống này.

Nền tảng không có máy chủ được coi là hỗ trợ hầu hết các ngôn ngữ chính. AWS Lambda và Azure Functions cũng cung cấp trình bao bọc để chạy các ứng dụng và chức năng bằng các ngôn ngữ không được hỗ trợ, mặc dù điều này thường đi kèm với chi phí hiệu năng. Vì vậy, đối với hầu hết các tổ chức, hạn chế này thường không phải là vấn đề lớn. Nhưng đây là vấn đề. Một trong những lợi ích của mô hình không có máy chủ được cho là các chương trình ít được biết đến, hiếm khi được sử dụng có thể được sử dụng với giá rẻ hơn vì bạn chỉ phải trả tiền cho thời gian chúng chạy. Và những chương trình ít được biết đến, ít được sử dụng thường được viết bằng… những ngôn ngữ lập trình ít được biết đến, ít được sử dụng.

Điều này làm suy yếu một trong những lợi ích chính của mô hình không có máy chủ.

Ràng buộc nhà cung cấp

Vấn đề thứ hai với các nền tảng không có máy chủ, hoặc ít nhất là cách chúng được triển khai hiện tại, là chúng thường không giống nhau ở cấp độ vận hành. Thực tế không có sự tiêu chuẩn hóa nào về chức năng viết, triển khai và quản lý. Điều này có nghĩa là việc di chuyển các tính năng từ nền tảng này sang nền tảng khác cực kỳ tốn thời gian.

Phần khó nhất khi chuyển sang mô hình không có máy chủ không phải là các chức năng điện toán, thường chỉ là các đoạn mã, mà là cách các ứng dụng giao tiếp với các hệ thống được kết nối như lưu trữ đối tượng, quản lý danh tính và hàng đợi. Các chức năng có thể được di chuyển nhưng phần còn lại của ứng dụng thì không. Điều này hoàn toàn trái ngược với các nền tảng giá rẻ và linh hoạt đã được hứa hẹn.

Một số người cho rằng các mô hình không có máy chủ còn mới và chưa có thời gian để tiêu chuẩn hóa cách chúng hoạt động. Nhưng chúng không phải là mới, như tôi đã lưu ý ở trên, và nhiều công nghệ đám mây khác, chẳng hạn như container, đã trở nên hữu dụng hơn nhiều nhờ sự phát triển và áp dụng rộng rãi các tiêu chuẩn tốt.

Năng suất

Hiệu suất tính toán của nền tảng không có máy chủ rất khó đo lường, một phần vì các nhà cung cấp có xu hướng giữ thông tin ở chế độ riêng tư. Hầu hết đều cho rằng các chức năng trên nền tảng từ xa, không có máy chủ chạy nhanh như các chức năng trên máy chủ nội bộ, ngoại trừ một số vấn đề về độ trễ không thể tránh khỏi.

Tuy nhiên, sự thật cá nhân chỉ ra điều ngược lại. Các tính năng trước đây chưa chạy trên một nền tảng cụ thể hoặc chưa chạy trong một thời gian sẽ mất một thời gian để khởi chạy. Điều này có thể là do mã của họ đã được chuyển sang một số phương tiện lưu trữ ít truy cập hơn, mặc dù - cũng như điểm chuẩn - hầu hết các nhà cung cấp sẽ không cho bạn biết về việc di chuyển dữ liệu.

Tất nhiên, có một số cách xung quanh vấn đề này. Một là tối ưu hóa các tính năng cho bất kỳ ngôn ngữ đám mây nào mà nền tảng không có máy chủ của bạn đang chạy, nhưng điều này phần nào làm suy yếu tuyên bố rằng các nền tảng này “linh hoạt”.

Một cách tiếp cận khác là đảm bảo rằng các chương trình quan trọng về năng suất được chạy thường xuyên để giữ cho chúng luôn mới. Tất nhiên, cách tiếp cận thứ hai này hơi mâu thuẫn với tuyên bố rằng nền tảng không có máy chủ sẽ tiết kiệm chi phí hơn vì bạn chỉ trả tiền cho thời gian chương trình của bạn chạy. Các nhà cung cấp đám mây đã giới thiệu những cách mới để giảm thiểu khởi động nguội, nhưng nhiều trong số đó yêu cầu “mở rộng quy mô thành một”, điều này làm suy yếu giá trị ban đầu của FaaS.

Vấn đề khởi động nguội có thể được giải quyết một phần bằng cách chạy nội bộ các hệ thống không có máy chủ, nhưng điều này đi kèm với chi phí riêng và vẫn là một lựa chọn thích hợp cho các nhóm có nguồn lực tốt.

Bạn không thể chạy toàn bộ ứng dụng

Cuối cùng, có lẽ lý do quan trọng nhất khiến kiến ​​trúc serverless sẽ không sớm thay thế các mô hình truyền thống: chúng (thường) không thể chạy toàn bộ ứng dụng.

Chính xác hơn, nó không thực tế từ quan điểm chi phí. Khối nguyên khối thành công của bạn có lẽ không nên bị biến thành một tập hợp gồm bốn chục chức năng được kết nối bởi tám cổng, bốn mươi hàng đợi và hàng tá phiên bản cơ sở dữ liệu. Vì lý do này, serverless phù hợp hơn cho những phát triển mới. Hầu như không có ứng dụng (kiến trúc) hiện có nào có thể được di chuyển. Bạn có thể di chuyển, nhưng bạn phải bắt đầu lại từ đầu.

Điều này có nghĩa là trong phần lớn các trường hợp, nền tảng không có máy chủ được sử dụng như một phần bổ sung cho các máy chủ phụ trợ để thực hiện các tác vụ đòi hỏi tính toán chuyên sâu. Điều này làm cho chúng rất khác biệt so với hai dạng công nghệ đám mây còn lại—bộ chứa và máy ảo—cung cấp một cách toàn diện để thực hiện tính toán từ xa. Điều này minh họa một trong những thách thức của việc chuyển từ microservice sang serverless.

Tất nhiên, điều này không phải lúc nào cũng là một vấn đề. Khả năng tận dụng định kỳ các tài nguyên máy tính khổng lồ mà không cần phải mua phần cứng của riêng bạn có thể mang lại lợi ích thực sự, lâu dài cho nhiều tổ chức. Nhưng khi một số ứng dụng nằm trên các máy chủ nội bộ và các ứng dụng khác nằm trên kiến ​​trúc đám mây không có máy chủ thì việc quản lý sẽ trở nên phức tạp hơn.

Cách mạng muôn năm?

Bất chấp tất cả những lời phàn nàn này, bản thân tôi không phản đối các giải pháp serverless. Thành thật. Các nhà phát triển chỉ cần hiểu—đặc biệt nếu họ đang khám phá serverless lần đầu tiên—rằng công nghệ này không phải là sự thay thế trực tiếp cho máy chủ. Thay vào đó, hãy xem các mẹo và tài nguyên của chúng tôi để biết tạo ứng dụng không có máy chủ và quyết định cách tốt nhất để áp dụng mô hình.

Nguồn: www.habr.com

Thêm một lời nhận xét