TSM - Rețetă (I)IoT cu Azure

Cătălin Gheorghiu - Solution Architect @ EPAM

Cum alegem ce tip de tehnologii Azure vom folosi pentru soluția noastră (I)IoT? ȘI Azure e o opțiune de luat în seama pentru acest tip de soluții.

Aceasta este tema acestui articol. Mai întâi, să vedem ce tehnologii sunt disponibile și, pe urmă, să găsim niște criterii pe care să le utilizăm pentru a clasifica aceste tehnologii.

Tehnologiile pe care le vom compara:

Criteriile se referă la:

  1. Facilitățile de management dispozitiv;

  2. Suportul pentru protocolul MQTT;

  3. Costul unui dispozitiv care poate fi conectat.

Ce este MQTT?

MQTT (Message Queuing Telemetry Transport), conform mqtt.org este: " un protocol de mesagerie standardizat de OASIS pentru Internet of Things (IoT). Acesta este conceput ca un mecanism de transport lightweight al mesajelor de tip publisher/subscriber, fiind ideal pentru conectarea dispozitivelor de la distanță, având o amprentă de cod redusă și necesitând o lățime de bandă minimă."

Conectează dispozitivele prin rutarea mesajelor printr-un broker central, care decuplează producătorii de date (publishers) de consumatori (subscribers). Fără a mai intra în detalii, MQTT este, momentan, cel mai folosit protocol, este recunoscut chiar și ca standard ISO.

Azure IoT Hub

Azure IoT Hub este un serviciu Azure care acționează ca un hub central de mesaje într-o soluție IoT bazată pe cloud. Acesta permite o comunicare bidirecțională fiabilă și sigură, la scară largă, între o aplicație IoT și dispozitivele conectate la aceasta. Protocoalele folosite pentru comunicare sunt: AMPQ, MQTT, HTTP și chiar pot fi definite ca protocoale custom.

  1. Capabilități de administrare a dispozitivelor: IoT Hub oferă funcționalități precum actualizări OTA ("over-the-air"), apelarea de la distanță a metodelor implementate pe dispozitiv și blocarea accesului unui dispozitiv. Totuși, utilizarea acestor funcții depinde de capabilitățile hardware și software ale dispozitivului. De exemplu, dispozitivul trebuie să permită actualizări OTA, iar firmware-ul trebuie să fie dezvoltat într-un limbaj pentru care există bibliotecile și componentele necesare.

  2. Limitări MQTT: Serviciul nu implementează integral specificațiile unui broker MQTT 5 și nu oferă suport nativ pentru subiecte MQTT ierarhice personalizate.

  3. Cerințe hardware și de securitate: Principala limitare poate fi puterea de procesare a dispozitivului, deoarece acesta trebuie să execute într-un timp rezonabil operațiile criptografice necesare. Comunicarea cu Azure IoT Hub este întotdeauna criptată. Platforme precum ESP32, Arduino și Raspberry Pi pot fi utilizate fără dificultăți majore, însă nivelul de suport pentru funcționalitățile avansate menționate la punctul 1 diferă în funcție de dispozitiv și de implementare. De asemenea, pot fi construite dispozitive mai simple și mai ieftine care să se conecteze la IoT Hub, cu condiția să îndeplinească cerințele minime de comunicare și securitate. Bonus: IoT Hub are reguli de procesare a mesajelor nu foarte sofisticate, dar care sunt relativ simplu de utilizat. În plus, are reguli de plată clare. ( De comparat, de exemplu, cu Stream Analytics).

Scenariu de utilizare: atunci când ai device-uri off the shelf sau dispozitive dezvoltate intern, care vor fi produse și implementate în număr mare. Un exemplu îl reprezintă rețelele de senzori utilizate în agricultură sau în logistică.

Dacă vorbim și despre IA, în cele mai multe cazuri modelele sunt rulate în cloud. Totuși, există și modele optimizate pentru dispozitive cu resurse limitate.

Azure IoT Edge

Azure IoT Edge este o device-focused runtime, care vă permite să implementați, să rulați și să monitorizați aplicații în containere Linux. OK! nu neapărat din punct de vedere practic Linux. Vom vedea de ce Linux este preferat/suportat.

  1. Să repetăm "rulați și să monitorizați aplicații în containere Linux". Poți face asta din portalul Azure. Firmware, în acest caz, este mai aproape de un sistem de operare.

  2. Protocolul default de comunicare cu cloud este AMPQ. Dar pentru că intern există un Iot Hub MQTT cu limitările cunoscute.

  3. Pe dispozitiv ar trebui să ruleze un număr redus de containere Docker, optimizate din punctul de vedere al dimensiunii (aproximativ 120-200 MB). Un container găzduiește runtime-ul IoT Edge, altul gestionează comunicația dintre containere, iar celelalte conțin aplicația propriu-zisă (modelul IA, interfața cu utilizatorul etc.). Acest lucru presupune cel puțin nivelul de performanță al unui Raspberry Pi 4, dacă nu chiar al unui dispozitiv mai puternic. În plus, un container Windows este considerabil mai mare, ceea ce explică alegerea Linux. În privința memoriei, vorbim oricum de ordinul gigabyților.

Scenariu de utilizare: hardware mai performant, care nu este neapărat conectat permanent la rețea. Un exemplu îl reprezintă instalațiile petroliere. Dacă vorbim despre IA, un container care include un model reprezintă o soluție elegantă și ușor de implementat, permițând rularea modelului on the edge și distribuirea sa într-un mod controlat.

Azure Event Grid

Azure Event Grid este un serviciu managed publish-subscriber, "real-time", cu scalabilitate ridicată, destinat distribuirii mesajelor. Event Grid oferă modele flexibile de consum al mesajelor și utilizează protocoalele MQTT (Message Queuing Telemetry Transport) și HTTP.

  1. Vorbim de mesaje nu de dispozitiv. Deci, nu avem capabilități de rulare software pe dispozitiv sau monitorizare dispozitiv.

  2. Implementare completă a unui broker MQTT v5 (și v3.5). Știe și Custom hierarchical topics cu wildcard și Authentication based-on certificates și Entra ID service.

  3. Dacă dispozitivul se poate conecta la un hub (IoT Hub, Event Hub), sau dacă "vorbește" mesaje MQTT (și multe din cutie fac asta sunt MQTT client) lucrează perfect cu Azure Event Grid.

Bonus: Un mecanism sofisticat de retry reprezintă una dintre funcționalitățile Event Grid.

Scenariu de utilizare: în special în scenarii care implică integrarea mai multor dispozitive. Un exemplu îl reprezintă un shop floor, unde există diferite mașini care trebuie să comunice între ele, fie prin orchestrare, fie prin coregrafie. În acest caz, nu discutăm în mod explicit despre IA.

Azure IoT Operations

Azure IoT Operations este un data plane unificat pentru edge. Este noua arhitectură IoT bazată pe viziunea unificată Microsoft Edge construită on top of Azure Arc-enabled K8s.

  1. Avem o versiune la scara largă a IoT Edge. În loc de numai containere avem Kubernetes și management cu Azure Arc. În acest caz Firmware este un sistem de operare.

  2. Implementare completă a unui broker MQTT v5 (și v3.5). Știe și Custom hierarchical topics cu wildcard .

  3. Configurația minimă: 4 cores + 16Gb. Cu un preț similar serverului.

Scenariu de utilizare: un shop floor relativ modern. De exemplu, într-o fabrică medie există adesea un server insuficient utilizat, care poate rula IoT Operations, în timp ce PLC-urile reprezintă restul dispozitivelor. Azure Arc este posibil să fie deja folosit pentru management, astfel că adoptarea IoT Operations reprezintă un pas firesc înainte. Distribuirea modelelor IA pentru a rula on the edge într-un scenariu Kubernetes este banală: mai este adăugat doar un container. Prin urmare, IA on the edge devine un scenariu obișnuit.

Simplificând, IoT Operations poate fi privit ca un succesor al IoT Edge atunci când sunt disponibile resurse hardware semnificative, de la putere de procesare la memorie. Fiind bazat pe Azure Arc, utilizat pe scară largă pentru administrarea PC-urilor și a serverelor, acesta oferă și o imagine asupra nivelului de capabilități hardware pe care îl presupune pentru dispozitivele pe care rulează.

Rețeta în stilul magic quadrant Gartner

Ca o concluzie, putem afirma că focusul actual se orientează înspre dispozitive cu sistem de operare relativ puternice și implicit mai scumpe. În anul acesta, MQTT este protocolul de comunicație la modă. Soluțiile bazate pe containere au o eleganță care le face populare. Și dacă folosești containere, soluțiile de management ale containerelor apar și ele în zona (I)IoT, Kubernetes. Totodată, există dorința de avea capabilitatea de a rula modele IA on the edge. Indirect se pare că scenariul sometimes connected este în continuare cel mai comun, chiar în (I)IoT. Încă nu am ajuns la nivelul de conectare și încredere ca aceste sisteme să fie întotdeauna online.

Sper că am adus puțină lumină în subiectul legat de ce anume să alegi din Azure pentru o soluție (I)IoT.