Máy chủ là gì?


42

Tất cả các nhà cung cấp đám mây đang tiếp thị các giải pháp "không có máy chủ" của họ. Lời hứa là serverless sẽ thay thế cách các nhà phát triển hiện đang phát triển phần mềm của họ và các hoạt động quản lý nó trong sản xuất.

"Máy chủ" là gì? Nơi nào người ta có thể tìm hiểu thêm về nó, và làm thế nào nó có thể được sử dụng ngày hôm nay?


máy tính không có máy chủ là "máy chủ ít" vì "burger gà" là thuần chay vì bạn không đích thân gặp gà
Sai Addanki

Câu trả lời:


43

Bài viết của Wikipedia về máy tính không có máy chủ cung cấp một giới thiệu tốt về chủ đề này:

Máy tính không có máy chủ, còn được gọi là chức năng như một dịch vụ (FaaS), là mô hình thực thi mã điện toán đám mây trong đó nhà cung cấp đám mây quản lý hoàn toàn việc bắt đầu và dừng nền tảng container của một chức năng như một dịch vụ (PaaS) khi cần để phục vụ các yêu cầu và yêu cầu được lập hóa đơn bằng một thước đo trừu tượng về các tài nguyên cần có để đáp ứng yêu cầu, thay vì trên mỗi máy ảo, mỗi giờ.

Ý tưởng là nhà phát triển không cần quan tâm đến cơ sở hạ tầng máy chủ . Nhà cung cấp đám mây quản lý các máy chủ vật lý, hệ điều hành được sử dụng và tất cả những khó khăn truyền thống liên quan đến việc chạy máy chủ.

Máy tính không có máy chủ thay đổi kiến ​​trúc của bạn từ suy nghĩ về những gì máy móc đang làm cho đến những chức năng đang làm. AWS Lambda là ví dụ xuất hiện trong tâm trí - bạn trả tiền và chạy các chức năng , mà không có bất kỳ đề cập nào về loại cơ sở hạ tầng vật lý nào đang chạy bên dưới. Ngoài ra còn có các máy chủ không có máy chủ cạnh tranh như Chức năng Azure (hoặc bạn có thể chỉ cần tìm kiếm nếu bạn không quan tâm đến một trong số đó).

Có một vài lợi thế cho serverless (mặc dù bạn không cần phải viết theo một cách hơi khác so với trước đây, vì đó là một kiến ​​trúc hoàn toàn khác):

  • Khả năng mở rộng về cơ bản là miễn phí - vì bạn chỉ trả tiền để chạy một chức năng, nhà cung cấp đám mây có thể dễ dàng dành nhiều phần cứng hơn khi cần để chạy mã của bạn. Bạn cũng có thể mở rộng quy mô khi nhu cầu tăng, thay vì trả một tỷ lệ cố định cho dù ứng dụng của bạn được sử dụng một lần hay một triệu lần.

  • Phần mềm và phần cứng máy chủ không còn cần phải được quản lý bởi nhà phát triển - nhà cung cấp đám mây xử lý việc đó. Nếu bạn đã từng sử dụng một cái gì đó như Arch trên máy chủ, bạn sẽ biết việc xóa một gói quan trọng dễ dàng như thế nào và phá vỡ mọi thứ!

  • Nó giải phóng các nhà phát triển để tập trung vào những gì họ giỏi - . Hầu hết các nhà phát triển có thể sẽ không giỏi cả về cơ sở hạ tầng máy chủ lập trình - serverless chỉ đưa ra một vấn đề ngoài phương trình.


"Không cần quan tâm đến cơ sở hạ tầng máy chủ". Đó thực sự là một điều tốt bởi vì, theo kinh nghiệm của tôi, có quá nhiều người trong số họ đã / không /, với hậu quả tai hại!
Phill W.

15

Martin Fowler có một cái nhìn tổng quan tốt:
https://martinfowler.com/articles/serverless.html

TL; DR
"Serverless" mô tả kiến ​​trúc và phát triển ứng dụng thiết kế các ứng dụng trong đó cơ sở hạ tầng là phù du , nghĩa là chúng có xu hướng dựa trên container và có thể "đến và đi" dựa trên cơ chế mở rộng động. Điều này quy định việc sử dụng các kiến ​​trúc không trạng thái phụ thuộc vào các công nghệ phân tán (như kho lưu trữ khóa / giá trị.)


2
Không chỉ phù du, mà trừu tượng hóa hoàn toàn. Trong nhiều thiết lập không có máy chủ hiện đại (như AWS EC2 ASG), cơ sở hạ tầng cũng rất nhanh chóng; một thể hiện EC2 trong ASG có thể bị chấm dứt bất cứ lúc nào.
Adrian

14

'Serverless', giống như nhiều thứ trong không gian của chúng ta, đang trở thành một thuật ngữ quá tải .. nhưng nói chung, ý nghĩa của nó là "Về mặt chức năng, kiến ​​trúc của chúng tôi không phụ thuộc vào việc cung cấp hoặc bảo trì máy chủ liên tục"

Ví dụ đầu tiên xuất hiện trong đầu là một ứng dụng javascript, sử dụng bộ nhớ cục bộ và được lưu trữ trên một cái gì đó như Amazon S # hoặc Github Pages (hoặc bất kỳ trang web tĩnh nào - đó chỉ là những ví dụ phổ biến). Hãy tưởng tượng một cái gì đó như ứng dụng kiểu 'việc cần làm' hoặc 'hoàn thành công việc' chạy hoàn toàn trong trình duyệt của bạn. Trình duyệt của bạn truy cập một dịch vụ như S3 để tải xuống mã và các mục bạn lưu trữ đều được lưu trữ trong bộ nhớ cục bộ trong trình duyệt của bạn. Không có máy chủ bạn duy trì cho việc này.

Ví dụ thứ hai, và phức tạp hơn một chút (và cũng là trường hợp phổ biến thuật ngữ 'serverless'), sử dụng một dịch vụ như AWS Lambda. Hãy để tôi giải thích điều này bằng cách trình bày vấn đề mà nó giải quyết:

Nhiều lần trong sự nghiệp, tôi đã giải quyết một vấn đề kinh doanh cho một khách hàng với ít hơn một số mã ruby ​​thực hiện trích xuất, chuyển đổi và tải định kỳ (thường được viết dưới dạng tác vụ cào). Sau khi giải quyết, tôi thường tự động hóa nó bằng cron. Sau đó, vấn đề trở thành 'nơi tôi lưu trữ thứ này chạy mỗi giờ một lần?' Đối với một số khách hàng, chúng tôi đã thiết lập một máy chủ trong cơ sở hạ tầng hiện có của họ. Đối với những người khác, chúng tôi đã thiết lập một phiên bản EC2, mặc dù nó không hoạt động 99%. Trong một trong những trường hợp đó, có một máy chủ yêu cầu cung cấp, vá lỗi, giám sát, cập nhật, v.v.

Với Amazon Lambda, tôi có thể thực hiện nhiệm vụ cào đó và chạy nó trên dịch vụ của họ như một "chức năng" thuần túy. Tôi thậm chí có thể lên lịch trình nó. Không còn khách hàng đó cần một phần cơ sở hạ tầng cho một việc đơn giản như vậy một lần một giờ.

Với 'serverless' vẫn còn một máy chủ, giống như với 'đám mây' vẫn còn một máy tính. Chỉ có một mức độ trừu tượng trên nó có một số trách nhiệm về môi trường đối với bạn.


Upvote của tôi cho ví dụ thực tế về công việc một lần trong một giờ thường cần EC2. Bây giờ bạn chỉ cần một chức năng Lambda!
HopeKing

10

Tất cả các câu trả lời tuyệt vời rồi. Tôi đã xem qua bài viết trên blog Thinking Serverless - Cách tiếp cận mới giải quyết nhu cầu xử lý dữ liệu hiện đại trong khả năng cao, nơi tôi đã bắt gặp lời giải thích tuyệt vời này về ý nghĩa của máy chủ:

Cụm từ server serverless không có nghĩa là máy chủ không còn tham gia. Nó đơn giản có nghĩa là các nhà phát triển không còn phải nghĩ nhiều về họ nữa. Tài nguyên điện toán được sử dụng như các dịch vụ mà không phải quản lý xung quanh năng lực hoặc giới hạn vật lý. Các nhà cung cấp dịch vụ ngày càng đảm nhận trách nhiệm quản lý máy chủ, kho lưu trữ dữ liệu và các tài nguyên cơ sở hạ tầng khác. Máy chủ không giới hạn cho phép các nhà phát triển chuyển trọng tâm từ cấp độ máy chủ sang cấp độ nhiệm vụ. Giải pháp không có máy chủ cho phép các nhà phát triển tập trung vào những gì ứng dụng hoặc hệ thống của họ cần làm bằng cách lấy đi sự phức tạp của cơ sở hạ tầng phụ trợ.

Và, một điều nữa học hỏi từ kinh nghiệm cá nhân của tôi trong việc xây dựng cơ sở hạ tầng không có máy chủ là:

  • Đường ống dữ liệu không có máy chủ không thực sự chỉ cần ở thời gian thực. Người ta có thể xây dựng các đường ống không có máy chủ xử lý hàng loạt hiệu quả thông qua các cơ chế cảnh báo CloudWatch của AWS, cho phép một người giám sát các công cụ và đưa ra cảnh báo để (AWS) Lambda tính toán.

Ví dụ như: Lưu trữ các tệp trong hàng đợi AWS SQS. Khi số lượng tin nhắn trong hàng đợi lên tới 10, hãy gửi một sự kiện đến Lambda.


6

Bên cạnh việc giải thích đơn giản định nghĩa của thuật ngữ Serverless, nguồn gốc của thuật ngữ và lịch sử của nó cũng cung cấp một số hiểu biết sâu sắc về ý nghĩa của nó. Khái niệm này có nguồn gốc với JAWS khuôn khổ bởi Austen Collins , mà đã sau này đổi tênserverless . Tôi đã học được của nó lần đầu tiên trong AWS lại: Invent 2015 phiên , có thể được giúp đỡ để ngày khái niệm này. Đây là những gì thực sự đặt ra thuật ngữ Serverless, sau đó lan truyền nhanh chóng sang các hệ thống đám mây khác:

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.