Đánh giá định tính hai nền tảng điện toán đám mây AWS và GCP ứng dụng trong dự án IoT được thực hiện dựa trên kết quả đúc kết từ quá trình, kinh nghiệm triển khai thực tế hệ thống nhà thông minh mà nhóm nghiên cứu tại TAPIT đã thực hiện. Các tiêu chí đánh giá dựa trên bộ tiêu chí định tính như quản lý thiết bị, định tuyến gói tin, giao thức hỗ trợ kết nối thiết bị và ứng dụng, Bảo mật, xác thực và ủy quyền máy khách, thông báo đẩy, công cụ phát triển phụ trợ, SDK và API hỗ trợ, ở mỗi tiêu chí nhóm nghiên cứu sẽ trình bày về tính năng chính của mỗi nền tảng, ưu nhược điểm (nếu có) và đưa ra đánh giá chung.
Quản lý thiết bị:
- AWS: cung cấp đối tượng tài nguyên để quản lý các thing gọi là registry và người dùng có thể tương tác với registry qua AWS CLI hoặc cửa sổ điều khiển. Tất cả thông tin của của thing được lưu trữ trong registry dưới dạng chuỗi JSON và việc đăng ký thing vào registry cho phép quản lý và tìm kiếm thiết bị dễ dàng hơn với các phương thức được hỗ trợ là: tạo, liệt kê danh sách, tìm kiếm, cập nhật thông tin, gán chứng chỉ và xóa. Ngoài ra AWS còn hỗ trợ dịch vụ Thing Shadow đi kèm để quản lý thông tin, trạng thái thiết bị theo mô hình reported-disred thủ công theo thời gian đặc biệt phù hợp với các ứng dụng điều khiển, cấu hình và đồng bộ trạng thái.
- GCP: cung cấp trình quản lý thiết bị, để một thiết bị kết nối trước tiên thiết bị đó phải được đăng ký trong trình quản lý thiết bị, bao gồm hai đối tượng là registry và device. Registry là một phân vùng chứa các thiết bị, được tạo trong một vùng đám mây cụ thể và thuộc về một dự án đám mây, khi tạo sẽ mặc định liên kết với Pub/Sub topic; thiết bị khi được tạo bên trong registry sẽ được xem là một tài nguyên của Cloud IoT Core và có thể theo dõi thông tin cũng như cấu hình các thuộc tính của thiết bị qua cửa sổ điều khiển, API hoặc gcloud.
- Đánh giá: hai nền tảng đều cung cấp mô hình quản lý thiết bị tương tự nhau sử dụng registry và thing (hoặc device), tuy nhiên về cách thức tương tác thì GCP đa dạng hơn khi có cung cấp thêm API để quản lý từ xa còn AWS thì không có. Về cách thức lưu trữ cấu hình thiết bị, AWS cung cấp dịch vụ độc lập là Thing Shadow còn GCP cung cấp Device Configuration và Device State bên trong dịch vụ IoT Core, mỗi mô hình có ưu nhược điểm khác nhau và trong luận văn sử dụng mô hình desired-reported nên Thing Shadow phù hợp triển khai hơn.
Định tuyến gói tin từ IoT Core đến các dịch vụ khác:
- AWS: cung cấp một tính năng chuyên biệt giúp thiết bị và các dịch vụ khác trên nền tảng đám mây có thể tương tác với nhau gọi là rule. Rule có thể dùng các gói tin được gửi từ thiết bị qua giao thức MQTT để phân tích, lọc dữ liệu và gửi đến các dịch vụ khác qua các rule action với 15 action được định nghĩa sẵn như Lambda, SNS, SQS,… rất đầy đủ cho một hệ thống IoT. Đây là một tính năng cực kỳ hữu ích giúp nhà phát triển không cần phải viết mã quá nhiều mà chỉ cầu tập trung xử lý dữ liệu đầu ra vì tất cả quy trình quản lý, chuyển tiếp gói tin đều được AWS thực hiện.
- GCP: sử dụng dịch vụ nhắn tin thời gian thực Pub/Sub để định tuyến gói tin từ IoT Core đến các dịch vụ khác theo mô hình publish/subscribe, hỗ trợ đa dạng cơ chế pull/push để có thể lựa chọn triển khai tùy ứng dụng. Bên cạnh đó một ưu điểm nữa của nền tảng Google IoT Core là hỗ trợ sẵn cấu hình loại gói tin nhận được từ thiết bị là Telemetry hoặc State để tự động chuyển tiếp đến Cloud Pub/Sub, phù hợp với khung phân loại gói tin đã thiết kế.
- Đánh giá: Nền tảng AWS định tuyến gói tin từ IoT Core dựa vào dịch vụ Rule chuyên biệt, trong khi đó GCP định tuyến gói tin dựa vào hạ tầng dịch vụ Pub/Sub mạnh mẽ có sẵn của nền tảng. Hai dịch vụ này đều cung cấp đầy đủ các tính năng cần thiết để các hệ thống IoT có thể xây dựng các luồng dữ liệu từ đơn giản đến phức tạp, đảm bảo khả năng bảo mật, độ tin cậy và tốc độ chuyển tiếp gói.
Giao thức hỗ trợ kết nối thiết bị và ứng dụng:
- AWS: AWS hỗ trợ đầy đủ các giao thức kết nối như MQTT, HTTPS, Websocket và quy hoạch giao thức phù hợp cho từng đối tượng như thiết bị hoặc ứng dụng khách.
- GCP: hỗ trợ hai giao thức kết nối và giao tiếp với đám mây là MQTT và HTTP qua các cầu nối giao thức.
- Đánh giá: dù cả hai nền tảng đều cung cấp hai giao thức phổ biến nhất hiện nay cho các ứng dụng IoT là MQTT và HTTPS, tuy nhiên AWS ưu điểm hơn so với GCP vì có hỗ trợ thêm Websocket giúp các máy khách trên nền tảng website khi kết nối cũng có thể thực thi cơ chế giữ kết nối với máy chủ.
Bảo mật, xác thực và ủy quyền máy khách:
- AWS: với hạ tầng kiến trúc theo mô hình trách nhiệm chung (Shared Responsibility Model) cùng với dịch vụ IAM cho phép quản lý truy cập vào các dịch vụ và tài nguyên. Đối với thiết bị, AWS sử dụng cơ chế xác thực máy chủ và máy khách sử dụng giao thức bảo mật TLS sử dụng chứng chỉ X.509 rất an toàn. Còn với ứng dụng, AWS hỗ trợ xác thực và ủy quyền qua dịch vụ Amazon Cognito và IAM với đầy đủ các phương thức phù hợp với từng ứng dụng khách chạy trên các nền tảng hoặc hệ điều hành khác nhau.
- GCP: mỗi thiết bị kết nối với Google IoT sẽ được mã hóa và xác thực bằng giao thức TLS 1.2 cùng với cơ chế khóa bất đối xứng sử dụng chuỗi JSON Web Tokens với rất nhiều ưu điểm như: liên tục tạo mới phiên sử dụng khóa để giảm thiểu bị tấn công bảo mật, hỗ trợ thuật toán RSA và Elliptic Curve để xác thực chữ ký phù hợp cho nhiều loại máy khách,…
- Đánh giá: hai nền tảng điện toán đám mây IoT đều yêu cầu kết nối bảo mật qua giao thức TLS và xác thực máy chủ qua chứng chỉ X.509, tuy nhiên có sự khác nhau về phương pháp xác thực máy khách. AWS kích hoạt cơ chế xác thực máy khách trong quá trình bắt tay lớp TLS để xác thực qua chứng chỉ X.509 tương tự như cách máy khách xác thực máy chủ AWS, còn GCP sử dụng gói tin mã hóa theo tiêu chuẩn JWT để xác thực máy khách, dữ liệu JWT này sẽ được gửi kèm trong mật khẩu gói tin kết nối giao thức MQTT hoặc payload của giao thức HTTP. Hai phương pháp xác thực này tuy khác nhau nhưng đều đảm bảo tính bảo mật cao trong điều kiện yêu cầu thiết bị hoặc ứng dụng khách phải lưu giữ khóa riêng tư an toàn không bị lộ ra, tuy nhiên phương pháp của GCP cho thấy một số ưu điểm hơn khi sử dụng thêm tiêu chuẩn JWT yêu cầu mỗi mật khẩu xác thực đi kèm thời gian hiệu lực, hết thời gian hiệu lực phải tạo chuỗi JWT mới giúp quá trình giao tiếp luôn an toàn.
Thông báo đẩy:
- AWS: cung cấp dịch vụ nhắn tin Amazon SNS dùng cơ chế publish/subscribe triển khai rất nhanh chóng cho phép gửi tin nhắn đến các ứng dụng người dùng qua các phương tiện phổ biến như SMS, email và thông báo đẩy trên di động thời gian thực rất phù hợp với các ứng dụng IoT cần tính năng gửi cảnh báo hoặc thông báo về tình trạng hoạt động của thiết bị cũng như hệ thống.
- GCP: để thực hiện thông báo đẩy đến người dùng, GCP không hỗ trợ dịch vụ chuyên biệt nào để thực hiện tính năng này mà nhà phát triển phải tự xây dựng hoặc sử dụng dịch vụ của bên thứ 3 như Amazon SNS, SendGrid.
- Đánh giá: AWS ưu điểm hơn so với GCP vì cung cấp dịch vụ chuyên biệt Amazon SNS, giúp nhanh chóng tạo ra tính năng thông báo đẩy đến người dùng qua nhiều phương tiện phổ biến chỉ với vài phút cấu hình trên giao diện quản lý, rất phù hợp với các hệ thống IoT. Vì vậy khi triển khai hệ thống IoT trên GCP có thể kết hợp với dịch vụ SNS trên AWS để thực hiện tính năng này.
Công cụ phát triển phụ trợ:
- AWS: hỗ trợ giao diện giọng lệnh qua một công cụ thống nhất AWS CLI giúp quản lý hầu hết các dịch vụ của AWS và có thể tự động hóa qua các tập lệnh hỗ trợ, công cụ hỗ trợ cài đặt cho đầy đủ nền tảng Windows, MacOS, Linux,… rất thuận tiện.
- GCP: hỗ trợ giao diện dòng lệnh gcloud làm công cụ chính để quản lý các tài nguyên trên GCP và hỗ trợ cài đặt trên nhiều nền tảng hệ điều hành khác nhau tương tự như AWS. Bên cạnh đó là công cụ Cloud Shell cho phép truy cập vào công cụ dòng lệnh trực tiếp trên trình duyệt mà không cần tải về máy tính.
- Đánh giá: hai nền tảng đều hỗ trợ công cụ giao diện dòng lệnh hỗ trợ quản lý các tài nguyên và dịch vụ trên đám mây rất hữu ích khi làm việc từ xa trên nhiều hệ điều hành khác nhau rất thuận tiện khi triển khai hệ thống ở mỗi nền tảng. Tuy nhiên, trong quá trình triển khai hệ thống IoT nhận thấy rằng GCP hỗ trợ tốt hơn với dịch vụ Cloud Shell cho phép sử dụng công cụ dòng lệnh trực tiếp trên trình duyệt, tính năng này đặc biệt hữu ích khi cần thực hiện các thử nghiệm dự án, giúp tiết kiệm thời gian rất nhiều.
SDK và API hỗ trợ:
- AWS: hỗ trợ đầy đủ thư viện cho các ngôn ngữ phổ biến nhất hiện nay giúp tương tác với đám mây dễ dàng như: C++, Go, Java, JavaScript, .NET, Node.js, PHP, Python, Ruby. Ngoài ra AWS hỗ trợ dịch vụ API Gateway rất mạnh mẽ để tạo và quản lý API riêng cho ứng dụng.
- Google: hỗ trợ các công cụ và bộ thư viện Client Libraries để nhà phát triển có thể tương tác với đám mây bằng các ngôn ngữ khác nhau: Java, Python, Node.js, Ruby, Go, .NET, PHP
- Đánh giá: cả hai nền tảng AWS và GCP đều hỗ trợ SDK cho rất nhiều ngôn ngữ có thể lập trình xây dựng ứng dụng tương tác với đám mây, tuy nhiên AWS ưu điểm hơn vì cung cấp dịch vụ chuyên biệt API Gateway giúp tạo và quản lý API riêng của hệ thống IoT một cách nhanh chóng và bảo mật.
Qua quá trình triển khai hệ thống nhà thông minh ứng dụng nền tảng đám mây AWS và GCP theo thiết kế đề xuất, nhóm nghiên cứu đã thực hiện đánh giá từng nền tảng theo bộ tiêu chí và đưa ra các so sánh, đề xuất. Kết quả cho thấy thiết kế mà nhóm đề xuất đảm bảo được các tính năng của hệ thống IoT hoạt động ổn định, bên cạnh đó hai nền tảng đám mây cung cấp đầy đủ các dịch vụ, tính năng phù hợp cho các hệ thống IoT khác nhau trong thực tế có thể ứng dụng triển khai.
Chuỗi bài viết được thực hiện và chia sẻ bởi LCV.Khải và Các nhóm nghiên cứu tại Cộng đồng Kỹ thuật TAPIT
Chúc các bạn thành công!