Giải pháp xây dựng và triển khai hệ thống theo dõi tài sản với sự kết hợp AWS IoT Core & Mapbox

AWS Mar 01, 2022

Bối Cảnh

Một cty Khách Hàng(KH) đang kinh doanh dịch vụ thu mua đồ điện tử, đồ gia dụng gia đình.
KH đang muốn xây dựng một ứng dụng để có thể theo dõi các xe hàng, và một hệ thống bao gồm các bên:

  • Bên thứ nhất: App (Tài xế sử dụng)
  • Bên thứ hai: Hệ thống Người điều phối xe
  • Bên thứ ba: Admin (KH)

Vấn đề nội tại

  1. Với việc thiết kế ứng dụng thì khách hàng đang lo lắng tới việc lái xe đang cần sử dụng khá nhiều các thiết bị khác nhau.
  2. Số lượng người dùng: Cty KH đang nhắm tới phân phối giải pháp cho 15 - 30 cty khác:
  • Mỗi cty của KH có 10 xe
  • Tổng số lượng xe dùng từ 150 -> 300 xe. Và có nhu cầu mở rộng lên 1000 xe
  1. Về phía quản lý Admin KH đang chưa có nhiều ý tưởng và cần tư vấn thêm.
  2. Vấn đề về Budget của KH đang còn nhiều hạn chế, và mong muốn giải pháp tối ưu mặt chi phí vận hành(Running Cost).

Phân tích đưa ra vấn đề và đưa ra nhu cầu của Khách Hàng

Với tư cách là một người tư vấn giải pháp, tôi đã nhìn nhận và đánh giá các vấn đề mà KH đang gặp phải:

  1. KH đang muốn thiết kế một ứng dụng theo dõi tài sản, thông qua GPS(Global Positioning System).
  2. KH muốn có một hệ thống để quản lý các tài sản có tính ổn định, linh hoạt, khả năng mở rộng cao, và có thể phục vụ cho KH trong việc phân phối lại cho các cty liên kết với cty KH.
  3. KH muốn có một giải pháp tối ưu hoá chi phí phù hợp với Budget hiện tại của KH.

Phân tích khái quát

Các bạn thân mến, trước khi chúng ta đi vào giải pháp chi tiết mà tôi chuẩn bị trình bày dưới đây, chúng ta sẽ cùng phân tích một số điểm dưới đây.

Với hơn 12 tỷ thiết bị IoT được kết nối6 tỷ điện thoại thông minh được trang bị GPS đã trực tuyến thì các doanh nghiệp có xu hướng đang theo dõi tài sản theo thời gian thực, ở mọi bước trong chuỗi cung ứng. Điểu này giúp cho họ cải thiện hiệu quả hoạt động và năng suất, loại bỏ tổn thất tiềm ẩn và có tầm nhìn tổng thể về cách hoạt động công nghiệp. Ở quy mô và độ phức tạp này, bắt buộc phải có một cách linh hoạt để nhập, xử lý và hành động dựa trên dữ liệu này mà không làm mất đi tính bảo mật hoặc các phương pháp tối ưu nhất.

Vậy sẽ có vấn đề nào cần xử lý khi xây dựng ứng dụng theo dõi tài sản?

  • Đầu tiên, bài toán chúng ta đang làm là việc nhận tín hiệu GPS để theo dõi các tài sản(Điện Thoại, Xe ô tô...). Chúng ta sẽ cần tới một hệ thống máy chủ, xử lý các tín hiệu GPS gửi tới từ các thiết bị theo thời gian thực.
  • Thứ hai, với hệ thống mà chúng ta xây dựng nó phải đảm bảo được hiệu suất, tính ổn định, khả năng mở rộng cao, chi phí vận hành phải đúng với nhu cầu thực tế
  • Thứ ba, với việc xây dựng hệ thống Amin để quản lý/theo dõi các tài sản thì chúng ta sẽ cần phải có một dịch vụ bản đồ để hiển thị ở phí Admin.

Với các vấn đề này là từ kinh nghiệm của bản thân tôi nhận thấy, ngoài ra nếu còn các vấn đề nào mà bạn cảm thấy cần thiết thì có thể nêu ra, để phân tích nhé.

Chúng ta tiếp tục phân tích xem đâu là điểm mẫu chốt để giải quyết được bài toán này. Các bạn có nhìn nhận quan điểm giống với tôi không? Đứng ở vai trò là người tư vấn, tôi nhận thấy vấn đề khó khăn mà chúng ta cần giải quyết ở đây là tìm ra một dịch vụ cung cấp vị trí.

Tại sao tôi lại chỉ đề cập tới dịch vụ vị trí, mà chưa vội quan tâm tới các vấn đề xử lý tín hiệu GPS real-time?

  • Các bạn biết đấy, dịch vụ vị trí hàng đầu đang được nhắc tới là Google Map, nó có cả miễn phí và trả phí. Nhưng khi triển khai một giải pháp cho doanh nghiệp, chúng ta sẽ phải trả một mức chi phí rất cao khi sử dụng Google Map Platform, và điều này khiến chúng ta cần phải suy nghĩ rất nhiều, vì KH chúng ta đang hướng tới, là một KH đang có hạn chế về ngân sách.
    Các bạn có thể xem thông tin chi tiết về Google Map Platform Pricing
  • Ngoài ra, còn có một số nhà cung cấp dịch vụ trí để phục vụ nhu cầu này với các hình thức khá đa dạng bao gồm cả miễn phí, và trả phí, cloud và on-premise như:
    • AWS loaction
      AWS Location là một dịch vụ vị trí mà do chính aws xây dựng, AWS location sử dụng bản đồ cung cấp ở bên thứ ba là HERE và ERSI. AWS Location cung cấp cho chúng ta chúng ta đầy đủ các tính năng: Map, Places, Routing, Tracking, Geofencing. Và giá cả cũng phải chăng
      Các bạn có thể xem thông tin chi tiết về AWS Location Pricing
    • Mapbox
      Mapbox là một dịch vụ chuyên về bản đồ tuỳ chỉnh trực tiếp, và dịch vụ vị trí hỗ trợ cho Developer.
      Dù còn một số điểm chưa đáp ứng được bằng Google Map, nhưng Mapbox cung cấp các công cụ định tuyến mạnh mẽ, thời gian di chuyển chính xác, dựa trên giao thông và chỉ đường từng chặng trực quan để giúp bạn xây dựng trải nghiệm điều hướng hấp dẫn.
      Các bạn có thể xem thông tin chi tiết về Mapbox pricing

Với việc phân tích vấn đề, chúng ta có thêm được một số thông tin và phần nào đưa ra được sự lựa chọn thích hợp. Bây giờ chúng ta cùng đến phần "Bài Toán Yêu Cầu" để đánh giá, và đưa ra thêm lựa chọn để giải quyết bài toán nhé.

Bài Toán Yêu Cầu

Bài toán 1: Xây dựng hệ thống server xử lý tín hiệu GPS theo thời gian thực(real-time) được gửi từ các tài sản.
Bài toán 2: Xây dựng hệ thống quản lý/theo dõi tài sản và hiển thị lên bản đồ ở phía Admin.
Bài toán 3: Tối ưu hoá chi phí vận hành (running cost).
Bài toán 4: Tối ưu hoá chi phí phát triển.

Với vấn đề dịch vụ vị trí, chúng ta đang nhắc tới: Google Map, AWS location, Mapbox:

Google Map API

Điểm mạnh:

  • Là một dịch vụ điện toán đám mây do Google tạo ra mang lại khả năng mở rộng cao, và có thể tuỳ chỉnh/custom theo ý muốn có giới hạn.
  • Có nhiều tính năng Map( tracking, geofence..v.v) và chất lượng bản đồ tốt nhất tại thời điểm hiện tại.
  • Có các option miễn phí và trả phí.

Điểm bất lợi:

  • Khi upgrade lên plan doanh nghiệp, chi phí dịch vụ phải bỏ ra lớn.
  • Một số vùng đang còn bị cấm sử dụng dịch vụ trong đó có Việt Nam.

AWS Location

Điểm mạnh

  • Là một dịch vụ điện toán đám mây do AWS cung cấp, dễ dàng mở rộng, và có thể tuỳ chỉnh/custom theo ý muốn có giới hạn.
  • Cung cấp hầu hết các dịch vụ map(routing, geofence v.v.)
  • Có các option miễn phí và trả phí.

Điểm yếu:

  • Do sử dụng nhà cung cấp dịch vụ map bên thứ ba, nên có custom theo ý mong muốn.
  • Vấn đề về giá cả vẫn chưa phù hợp với một số doanh nghiệp nhỏ lẻ.
  • Một số tính năng, mức độ chưa được tốt so với Google Map, và Mapbox.

Mapbox

Điểm mạnh:

  • Là một dịch vụ cùng cấp map trực tuyến thông qua API, dễ dàng custom theo ý muốn.
  • Cung cấp hầu hết các dịch vụ map(routing, geofence v.v.)
  • Giá thành hợp lý, phù hợp với các doanh nghiệm vừa và nhỏ.
  • Có các option miễn phí và trả phí.

Điểm yếu:

  • Một số tính năng, mức độ phổ biến của Mapbox vẫn chưa được như google Map.

Khi chúng ta triển khai giải pháp lần này thì yếu tố giá thành vẫn đang là cái mà KH chúng ta quan tâm đến. Theo các đánh giá/phân tích ưu, nhược điểm thì tôi sẽ hướng tới AWS, và Mapbox. Để giải quyết thêm yếu tố chi phí vận hành, tôi sẽ quyết định lựa chọn Mapbox.

Sau khi giải quyết được vấn đề về chi phí, thứ chúng ta quan tâm tiếp theo là việc xây dựng hệ thống máy chủ, để giải quyết vấn đề gửi GPS theo thời gian thực. Hiện tại các dịch vụ điện toán đám mây đang phát triển mạnh mẽ, thiên hướng của chúng ta sẽ dịch chuyển các cơ sở hạ tầng dưới mặt đất(on-premise) lên các dịch vụ đám mây. Một số dịch vụ cung cấp hạ tầng cloud phổ biến hiện nay như: AWS, Google Cloud, Azure v.v. Nên tôi sẽ chọn đưa hệ thống này lên Cloud, và phần tôi hướng đến đó là AWS

Có bạn nào thắc mắc việc xử lý GPS này, chúng ta không tự xây dựng server On-premise để giải quyết không? sau đây là giải thích của tôi về câu hỏi này nếu bạn có suy nghĩ như thế nhé.

Việc xử lý tín hiệu GPS, chúng ta cần xây dựng hệ thống chạy real-time 24/7, phải đảm bảo tính sẵn sàng cao, tính mở rộng... Việc tự tạo ra hệ thống như vậy sẽ tốn rất nhiều chi phí, thay vào đó chúng ta nên lựa chọn các nhà cung cấp dịch vụ cloud và có giá cả phải chăng để chúng ta lựa chọn một cách hợp lý.

Với vai trò là một kỹ sư giải pháp, một phần kinh nghiệm của tôi có phần hướng về AWS( AWS là một nhà cung cấp dịch vụ điện toán đám mây mạnh mẽ, với giá cả hợp lý nhất tại thời điểm hiện tại). Đối với vấn đề hiện tại, thì tôi đã tìm hiểu về một số dịch vụ AWS để kết hợp với Mapbox, để xử lý tín hiệu GPS theo thời gian thực. Ở đây, tôi sẽ nhắc tới dịch vụ chính khi sử dụng trong sơ đồ chi tiết dưới đây, là dịch vụ AWS IoT Core:

  • AWS IoT Core là một dịch vụ đám mây được quản trị được cho phép những thiết bị liên kết hoàn toàn, có thể thuận tiện tương tác một cách bảo mật thông tin với những ứng dụng đám mây và những thiết bị khác. Với AWS IoT Core, ứng dụng sẽ có chức năng theo dõi và tiếp xúc với toàn bộ thiết bị của bạn, vào mọi thời gian, ngay cả khi chúng không được liên kết.
  • AWS IoT Core giúp kết nối, xác thực các thiết bị với AWS Cloud hoặc giữa các thiết bị với nhau dễ dàng và bảo mật cao thông qua các giao thức HTTP, WebSockets, MQTT và các giao thức chuẩn công nghiệp khác.
  • AWS IoT Core có tích hợp với một số dịch vụ AWS như AWS Lambda, Amazon Kinesis, Amazon S3, Amazon SageMaker, Amazon DynamoDB, Amazon CloudWatch, AWS CloudTrail, Amazon QuickSight và Alexa Voice Service; Để xây dựng những ứng dụng IoT, sẽ tích lũy, giải quyết và xử lý, nghiên cứu và phân tích và thao tác trên tài liệu do những thiết bị được liên kết tạo ra; Mà không phải quan tâm tới việc quản trị, mở rộng bất kể hạ tầng nào.

Chúng ta sẽ đến phần giải pháp chi tiết, ngay dưới đây nhé

Giải pháp xây dựng và triển khai hệ thống theo dõi tài sản với sự kết hợp AWS IoT Core & Mapbox

Với việc sủ dụng linh hoạt giữa các dịch vụ AWS, ngoài dịch Vụ AWS IoT Core, tôi có sử dụng thêm một số dịch khác, vừa đảm bảo chi phí phát triển, cũng như chí phí vận hành:

  • AWS Amplify: AWS Amplify là một tập hợp các công cụ và tính năng được tạo ra có chủ đích, giúp nhà phát triển web và di động frontend xây dựng các ứng dụng fullstack một cách nhanh chóng và dễ dàng trên AWS với khả năng tận dụng linh hoạt các dịch vụ AWS phong phú khi các trường hợp sử dụng của bạn tiến triển. Với Amplify, bạn có thể cấu hình backend của ứng dụng web hoặc di động, kết nối ứng dụng của bạn chỉ trong vài phút, xây dựng UI frontend của web một cách trực quan và dễ dàng quản lý nội dung ứng dụng bên ngoài bảng điều khiển AWS. Cung cấp nhanh hơn và dễ dàng thay đổi quy mô—mà không cần phải có chuyên môn về đám mây.

  • AWS Cognito: Amazon Cognito cho phép bạn thêm quyền kiểm soát đăng ký, đăng nhập và truy cập của người dùng vào web và ứng dụng dành cho thiết bị di động của bạn một cách nhanh chóng và dễ dàng. Amazon Cognito mở rộng quy mô tới hàng triệu người dùng và hỗ trợ đăng nhập với các nhà cung cấp danh tính xã hội, chẳng hạn như Apple, Facebook, Google và Amazon và các nhà cung cấp danh tính doanh nghiệp thông qua SAML 2.0 và OpenID Connect.

  • AWS Lambda: AWS Lambda là một dịch vụ máy tính hướng sự kiện, không máy chủ cho phép bạn chạy mã cho hầu như bất kỳ loại ứng dụng hoặc dịch vụ phụ trợ nào mà không cần cung cấp hoặc quản lý máy chủ.

  • AWS Kinesis Streams: Thu thập, xử lý, và lưu trữ các luồng dữ liệu theo thời gian thực

  • AWS Kinesis Data Firehose: Lấy các luồng giữ liệu theo thời gian thực tới các dịch vụ lưu trữ của AWS

  • AWS S3: Dịch vụ lưu trữ trên AWS

  • AWS DynamoDB: Amazon DynamoDB là cơ sở dữ liệu NoSQL được quản lý hoàn toàn, không có máy chủ, có giá trị khóa được thiết kế để chạy các ứng dụng hiệu suất cao ở mọi quy mô.

  • AWS EC2: Dịch vụ Amazon Elastic Compute Cloud (Amazon EC2) cung cấp nền tảng máy tính rộng nhất và sâu nhất, với hơn 500 phiên bản và lựa chọn bộ xử lý, lưu trữ, mạng, hệ điều hành và mô hình mua hàng mới nhất

  • AWS RDS: Dịch vụ cơ sở dữ liệu quan hệ của Amazon (Amazon RDS) giúp dễ dàng thiết lập, vận hành và mở rộng quy mô cơ sở dữ liệu quan hệ trên đám mây.

Sơ đồ giải pháp chi tiết:

Snag_1a128e8

Follow:

  1. Các ứng dụng phía client/Admin được xây dựng sử dụng AWS Amplify (App).
  2. Authentication/Authorization được thực hiện thông qua AWS Cognito.
  3. Các thiết bị(tài sản) sẽ kết nối tới dịch vụ AWS IoT Core, với việc kết nối này chúng ta có thể dễ dàng quản lý các thiết bị của mình.
  4. Sau khi được kết nối tới AWS IoT Core, các thông tin GPS của thiết bị sẽ được gửi dưới dạng messegage, qua giao thức MQTT.
  5. Với số lượng GPS của các thiết bị theo thời gian thực là rất lớn, và khó kiểm soát. Nên chúng ta sẽ cần dùng tới dịch vụ AWS Kinesis streams sẽ giúp chúng ta kiểm soát được các luồng dữ liệu theo thời gian thực tốt hơn.
  6. Khi dữ liệu vào Kinesis streams, hàm lambda sẽ có nhiệm vụ làm phong phú cho đầu vào dữ liệu. Sau đó đẩy dữ liệu cho dịch vụ Kinesis Data Firehose và Kinesis Data Firehose sẽ phân bổ luồn dữ liệu tới AWS S3, với mục đích lưu trữ lịch sử vị trí của các thiết bị để phục vụ cho việc phân tích lâu dài.
  7. Đồng thời, Lambda cũng trả về vị trí tại thời điểm hiện tại của thiết bị để lưu vào DynamoDB và lambda sẽ gửi các dữ liệu GPS của thiết bị từ AWS Kinesis tới Mapbox để cập nhật vị trí của các thiết bị.
  8. Về phía Admin sẽ xây dựng một hệ thống web, kết hợp với API Mapbox để theo dõi tài sản trực tiếp.

Kết luận:

Với giải pháp lần này, việc kết hợp giữa AWS IoT Core và một số dịch vụ AWS( Amplify, Lambda, Kinesis v.v.) với dịch vụ map MapBox sẽ giúp bạn có một giải pháp theo dõi tài sản vừa đảm bảo được chi phí phát triển, vận hành, tính mở rộng cao. Hãy liên hệ với tôi nếu bạn muốn cung cấp, hỏi đáp về giải pháp này nhé.

Demo

Dưới đây là kết quả demo mà tôi đã triển khai

demo_jp_slomation1-3

Tags

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.