Bạn có nên sử dụng Serverless Architecture cho giải pháp IoT của mình không?


Dương Tịnh Nhi
2 năm trước
Hữu ích 5 Chia sẻ Viết bình luận 0
Đã xem 2800

Chúng ta đang sống trong thời đại gián đoạn công nghiệp chưa từng có do tốc độ phát triển công nghệ nhanh chóng, đặc biệt là trong lĩnh vực Internet vạn vật. IoT giúp chuyển đổi các ngành công nghiệp thành một mô hình dựa trên dữ liệu, mở ra những cơ hội lớn. Việc áp dụng IoT nhanh được hỗ trợ bởi các công ty đang chuyển đổi hoạt động kinh doanh thông qua đổi mới công nghệ; các nhà sản xuất đang cung cấp các thiết bị giá rẻ và cao cấp và nền tảng IoT cho phép tích hợp và quản lý thiết bị.

Có rất nhiều công cụ và khung công tác IoT với những ưu và nhược điểm khác nhau hiện có trên thị trường, và đó là một lựa chọn khó thực hiện. Chúng tôi tin rằng việc áp dụng IoT kỹ thuật số nên hướng tới các nền tảng linh hoạt, đáng tin cậy và tiết kiệm chi phí với sự đầu tư tối thiểu vào cơ sở hạ tầng, phần mềm, kiến ​​thức và nhân viên.

Cuộc thí nghiệm

Để chứng minh khái niệm này, chúng tôi đã quyết định tìm hiểu cách xây dựng giải pháp IoT từ đầu với cơ sở hạ tầng và chi phí bảo trì bằng không và chi phí vận hành ít. Cách tiếp cận này hoàn toàn phù hợp với các khái niệm đám mây như trả tiền cho những gì bạn sử dụng, trả tiền khi bạn đi và Nền tảng là Dịch vụ (PaaS), Phần mềm là Dịch vụ (SaaS) và phương pháp tiếp cận không có máy chủ.

Cài đặt

Để thực hiện khái niệm này, chúng tôi đã sử dụng các khả năng của đám mây Dịch vụ web Amazon (AWS), vì đây là đám mây hiện đại và sáng tạo nhất trên thị trường. Dự án của chúng tôi là tạo ra các trình giả lập thiết bị báo cáo từ xa theo thời gian thực và để thông tin này có thể truy cập được trong thời gian thực thông qua API.

Chúng tôi đã coi nền tảng AWS IoT là một khung IoT mạnh mẽ. Nó hỗ trợ MQTT - một trong những giao thức truyền thông được sử dụng rộng rãi nhất. Sự lựa chọn của chúng tôi về các dịch vụ hỗ trợ để duy trì và xử lý dữ liệu cũng dựa trên giá cả và chi phí bảo trì.

Sau khi nghiên cứu một vài cách tiếp cận khác nhau về kiến ​​trúc và một loạt các dịch vụ, cuối cùng chúng tôi đã đưa ra danh sách các thành phần sau:

  • AWS IoT để nhập dữ liệu và quản lý thiết bị,
  • DynamoDB - lưu trữ tài liệu để đọc dữ liệu liên tục,
  • AWS Lambda - xử lý dữ liệu không có máy chủ,
  • S3 - khối lưu trữ được sử dụng làm lưu trữ trang web tĩnh,
  • API cổng - REST truy cập dữ liệu.
Dòng dữ liệu

Luồng dữ liệu tổng thể cho dự án khái niệm của chúng tôi hoạt động theo cách sau:

  1. Các thiết bị đang gửi khối lượng dữ liệu nhỏ đến AWS IoT (mỗi giây 5 giây).
  2. AWS IoT lưu trữ dữ liệu vào bảng DynamoDB *.
  3. Các chức năng Lambda được kích hoạt mỗi phút và mỗi giờ để phân tích dữ liệu và lưu trữ kết quả trở lại vào DynamoDB.
  4. API Gateway hiển thị dữ liệu từ DynamoDB ra thế giới thông qua API REST.
  5. Trang web HTML tĩnh được lưu trữ trên S3 và đang sử dụng API REST để hiển thị biểu đồ và phân tích dữ liệu thời gian thực.

* Điểm # 2 có thể trông hơi ngớ ngẩn ngay từ cái nhìn đầu tiên, vì bạn có thể lập luận rằng DynamoDB không phải là lựa chọn tốt nhất để lưu trữ dữ liệu chuỗi thời gian thô. Tuy nhiên, nó thực hiện một công việc tuyệt vời cho mục đích demo với một số lượng nhỏ thiết bị.

Chúng tôi cũng đã cân nhắc sử dụng Firehose như một luồng phân phối từ IoT đến S3 / Reshift và cụm EMR để xử lý dữ liệu, nhưng nó sẽ là quá mức cần thiết cho dự án siêu nhỏ này.

Chúng tôi đặt các tham số chính sau cho kiến ​​trúc:

  1. Miễn phí nếu bạn không có thiết bị báo cáo bất kỳ dữ liệu nào. Ngoài ra với Amazon free tier, bạn có thể nhận nó miễn phí cho số lượng nhỏ thiết bị.
  2. Khả năng mở rộng cao và có sẵn ngoài hộp do tính chất của từng thành phần được chọn.
  3. Kiến thức tối thiểu cần thiết để bắt đầu. Bạn chỉ có thể viết mã, vì bạn chỉ cần xác định quy tắc và viết logic bằng một trong những ngôn ngữ rất phổ biến: JavaScript, Python hoặc Java.

Phân tích / Tính toán

Giả sử các hoạt động phụ trợ của bạn chỉ được yêu cầu xử lý một vài yêu cầu một phút - điều này có nghĩa là hầu hết thời gian CPU của bạn không hoạt động. Chúng tôi cho rằng bạn không muốn trả tiền cho thời gian nhàn rỗi. Vì vậy, ở đây có kiến ​​trúc serverless để đảm bảo bạn không.

Giả sử bạn có 10.000 thiết bị báo cáo khối lượng dữ liệu nhỏ cứ sau 15 phút và điều này dẫn đến khoảng 29,2 triệu yêu cầu hàng tháng trên 730 giờ trung bình một tháng.

AWS IoT có giá 5 đô la cho mỗi yêu cầu 1 triệu và DynamoDB có giá 0,0065 đô la cho mỗi mười yêu cầu đặt mỗi giây và chi phí tương tự cho mỗi 50 yêu cầu nhận được mỗi giây.

Chúng tôi nhận được hóa đơn hàng tháng ở mức khoảng 146 đô la chỉ để nhận dữ liệu thông qua AWS IoT và 14 đô la để lưu trữ nó trong DynamoDB với dung lượng đọc nhỏ nhất. Chúng tôi có tổng cộng 160 đô la tương đương với 0,02 đô la cho mỗi thiết bị trên cơ sở hàng tháng hoặc 0,000005 đô la cho mỗi yêu cầu. Nó không tính đến việc sử dụng lambda, lưu trữ, cổng API mà thực sự sẽ chỉ là một phần của những con số này, vì vậy chúng ta có thể bỏ qua nó.

Thật ấn tượng khi có được một giải pháp IoT với hàng ngàn thiết bị được kết nối sẽ khiến bạn tốn ít hơn 200 đô la mỗi tháng. Tuy nhiên, hãy tưởng tượng một doanh nghiệp nơi các thiết bị đang báo cáo dữ liệu quan trọng mỗi giây và bạn có hàng ngàn người trong số họ. Bạn sẽ trả bao nhiêu cho các hoạt động không có máy chủ?

Tôi sẽ tiết kiệm cho bạn một chút thời gian và chỉ cung cấp kết quả cho các thiết bị 10k gửi một tin nhắn một giây - khoản thanh toán hàng tháng sẽ hơn 136 nghìn đô la và cho các thiết bị 100 nghìn - tương ứng 1,36 triệu đô la và chi phí hàng tháng cho mỗi thiết bị tăng lên 13,61 đô la. Bạn vẫn sẽ xem xét việc xây dựng giải pháp IoT của bạn không có máy chủ? Câu trả lơi con phụ thuộc vao nhiêu thư!

Ưu, nhược điểm và cân nhắc

Tất cả những số liệu này có nghĩa là tối ưu hóa tỷ lệ yêu cầu của bạn sẽ ngay lập tức và gần như tuyến tính dẫn đến giảm hóa đơn hàng tháng của bạn.

Điều này đưa chúng ta đến kết luận quan trọng thứ hai mà chúng ta phải xem xét - tổng chi phí sở hữu. Có một ngưỡng ảo vượt xa mà cách tiếp cận không có máy chủ trở nên rất tốn kém và có thể không hiệu quả.

Ví dụ, chi phí triển khai kiến ​​trúc truyền thống có thể không phụ thuộc quá nhiều vào số lượng thiết bị hoặc số lượng yêu cầu mỗi giây, nhưng sự đánh đổi là chi phí vận hành bổ sung. Chi phí cũng có thể được giảm bằng cách sử dụng các giải pháp nguồn mở.

Không nghi ngờ gì nữa, kiến ​​trúc serverless có nhiều lợi thế:

  • Nó biến đổi chi tiêu vốn thành chi phí hoạt động và thường làm giảm chi phí hoạt động.
  • Bạn không phải suy nghĩ về các quy trình quản trị hệ thống nội bộ.
  • Nó làm giảm chi phí phát triển và triển khai và khung thời gian (thời gian nhanh hơn để tiếp thị).
  • Nó có khả năng mở rộng và chịu lỗi theo thiết kế.

Yếu tố đầu tiên để xem xét là lựa chọn phương pháp phù hợp cho các yêu cầu của dự án của bạn. Cách tiếp cận không có máy chủ sẽ phù hợp nhất nếu bạn không quan tâm đến việc khóa đám mây và:

  1. Bạn đang điều hành một công ty khởi nghiệp nơi bạn cần xác thực ý tưởng của mình nhanh chóng hoặc bạn có một thời gian ngắn để tiếp thị.
  2. Giải pháp của bạn không yêu cầu truyền dữ liệu thường xuyên từ thiết bị sang đám mây và do đó giữ cho chi phí cho mỗi thiết bị ở mức tương đối thấp.

Mặt khác, bạn có thể xem xét các giải pháp IoT tùy chỉnh hoặc nguồn mở nếu bạn đang xây dựng một giải pháp dựa trên nền tảng đám mây và tùy biến cao và hoạt động với dữ liệu thời gian thực.

Bạn có thể tải về một bản sao của báo cáo  ở đây .

Hữu ích 5 Chia sẻ Viết bình luận 0
Đã xem 2800