Serverless một bước tiến hai bước lùi

Như các bạn đã thấy trong các bài trước Serverless hướng tới autoscaling và pay-as you go maner (dùng bao nhiêu thì trả tiền bấy nhiêu). Nó là một bước tiến lớn cho các cloud developers tới đơn giản hóa việc triển khai serverless applications trên cloud, nó giống như một cách mà các nhà cung cấp dịch vụ cloud (cloud providers) phải triển khai để các developers sử dụng dịch vụ của họ.


6-CLOUD-COMPUTING-TRENDS-SERVERLESS-TOP-GROWING-CLOUD-SERVICE

Trong bài này chúng ta sẽ cùng nhau tìm hiểu những nhược điểm quan trọng của serverless. Chắc hẳn các bạn cũng nghe về việc Amazon Web Services vừa kỉ niệm 12 năm thành lập và trình làng public cloud, Amazon là gã khổng lồ đầu tiên triển khai public cloud và đến giờ public cloud của gã vẫn là lớn nhất làng công nghệ, và serverless hay còn gọi là FaaS(Functions as a Service) được triển khai giúp các developers dễ dàng xây dựng và duy trì ứng dụng của họ trên Cloud tuy nhiên ngay từ đầu serverless đã không hướng tới các ứng dụng quá cồng kềnh hay quá phức tạp nhưng do các hệ thống on-premise thấy được ưu điểm lớn của serverless nên ngày một nhiều doanh nghiệp cho triển khai dịch vụ với serverless nhằm tiết kiệm chi phí và rồi mỗi ngày một nhiều các nhược điểm của serverless được lộ ra, khiến các chuyên gia phải nhận định liệu serverless có phù hợp cho ứng dụng của họ trong tương lại hay không?

FaaS có 3 đặc điểm chính:

1. Embarrassingly Parallel Functions

independent task là điểm mạnh của serverless vì với một số ứng dụng các function này hoạt động độc lập và không yêu cầu giao tiếp với functions khác. Amazon Lambda cũng giới hạn scope và tính phức tạp của các functions. Để nhấn mạnh independent task là những thứ đủ đơn giản tới mức cần thiết.

  • Function tới resize kích thước của ảnh cho phù hợp mỗi mỗi thiết bị
  • Function nhận dạng một image
  • Function tối ưu hóa những con số cho các Financial Engines

Các functions này hoàn toàn độc lập và không hề liên quan hay communicate với một function khác.

2. Orchestration funtions

Hãy hình dung hệ thống của bạn có tới vài nghìn functions và chúng được scales ở khắp mọi nodes trong mạng, thuật ngữ Orchestation giống như những nốt của chiếc đàn piano vậy, phím lên phím xuống một cách nhịp nhàng thì tạo ra âm hưởng tuyệt vời. Các functions của bạn là services việc quan trọng nhất của các services là phục vụ client của nó, nếu một service down phải có ngay một service khác thế chỗ, mỗi service đều có một lượng tài nguyên nhất định do đó để tránh việc quá tải các services này luôn được kiểm tra (health check) và từ đó orchestration sẽ biết được có cần start một instance mới của service hay không?

Orchestration hiện nay có Kubernetes đang là phổ biến nhất, dùng rộng rãi nhất và được đầu tư nhiều nhất bởi các ông lớn. Với Serverless thì orchestration hoàn toàn tự động và serverless developers thậm chí còn không cần quan tâm tới nó. Amazon Lambda function dựa vào kết quả phân tích từ các queries được chạy bởi AWS Athena để autoscaling.

3. Function Composition

Dạng function này thường dành cho các workflows có cả chuỗi các functions cái sau phụ thuộc cái trước (Output của function này thường là input của functions khác)  Tuy nhiên trong quá trình chạy 2 Lambda functions có thể không cùng nằm trên một máy (VM) nên chỉ có thể giao tiếp được với nhau thông qua một service trung gian thằng trung gian này sử dụng cloud storage (ex: Amazon S3, Azure storage) nên nó rất chậm và mất nhiều thời gian hơn là point-to-point networking. Lý do là S3 storage có thể nằm cùng hoặc khác server rack, cùng hoặc khác network

FaaS tại sao vẫn được triển khai ít?

  1. Limited Lifetime (maximum là 15 phút nếu function của bạn rơi vào trạng thái inactive nó sẽ được shutdown bởi Amazon Lambda hay các hạ tầng khác)
  2. IO Bottlenecks
  3. Communication Through Slow Storage
  4. No Spcialized Hardware

FaaS và những thiếu sót lớn nhất

FaaS is Data-Shipping Architecture

Đây phải nói là thiếu sót lớn nhất của serverless mà bất kỳ các buổi techtalk nào cũng đề cập tới, các serverless functions chạy độc lập trên các VMs tách biệt với phần data. Serverless cũng thuộc nhóm short-lived và không biết nó được chạy ở đâu (non-addressable) do hạ tầng quyết định functions được chạy ở node nào chứ không phải bạn. Do đó hạn chế khả năng cache state nếu request nhiều lần lặp đi lặp lại cùng một thứ, do đó đôi khi tốc độ mạng làm cho điều này trở lên tệ hại, độ trễ cao, băng thông nhiều và kéo theo chi phí.

FaaS Stymies Distributed Computing

Không có biết nơi cư trú của serverless functions trong khi 2 serverless functions lại có thể communicate và làm việc cùng nhau thông qua service trung gian. Điều này làm cho việc passing data chậm và tốn kém. Đôi khi nếu cần các tác vụ tính toán thì nếu chạy trên Amazon EC2 sẽ mang lại hiệu quả nhanh hơn hẳn so với chạy trên Amazon Lambda Funtion. Một thử nghiệm cho biết là (Amazon Lambda là chậm hơn 21x lần so với EC2 và với các tác vụ kiểu này nó sẽ đắt đỏ hơn EC2 tới 7.3x lần)

FaaS stymies hardware-accelerate

FaaS có những hạn chế trong việc đổi mới phần cứng (điều này các bạn có thể tìm hiểu thêm qua google)

FaaS discourages Open Source service

Low-latancy Prediction Serving via Batching

Distributed Computing

Nếu chúng ta có ý định triểu khai các case liên quan tới AI (model training) thì có thể ngó qua các bài so sánh giữa serverless và cloud computing trước khi đưa ra quyết định.

Serverless đúng là một bước tiến mạnh mẽ khi giúp developers bỏ qua những yêu cầu và điều khoản về máy chủ. Nhưng nó cũng có 2 hạn chế lớn một là tầm quan trọng của việc xử lý dữ liệu, thứ 2 nhìn thì có vẻ hợp với hệ thống phân tán nhưng nó lại đi ngược lại với điều này, trong khi tương lai của cloud là Fog cloud, edge cloud giúp việc phân tán hứa hẹn hơn bao giờ hết.

Đứng ở góc độ đưa ra quyết định việc triển khai một hệ thống trên serverless có lẽ chúng ta sẽ có rất nhiều những đắn đo và so sánh, hy vọng bài viết này giúp bạn có thêm những lựa chọn cho hệ thống của mình.

Y Hoang

#Serverless

#cons & pros of serverless

Please follow and like us:

Leave a Reply

Your email address will not be published. Required fields are marked *