IoT-Plattform-Produktarchitektur in Google Cloud

IoT-Plattformprodukte bieten in der Regel eine grundlegende MQTT- und HTTPS-Datenverbindung. Sie können mit ihnen auch Geräte bereitstellen und sie bieten Authentifizierung und Verwaltung, Telemetriespeicher und Visualisierung, Datenverarbeitung und Benachrichtigungen. Organisationen verwenden oft IoT-Plattformen, wenn ein eigenständiger MQTT-Broker für einen Anwendungsfall nicht ausreicht und ein umfassenderes IoT-Plattformprodukt erforderlich ist. Eine IoT-Plattform bietet eine einheitliche Schnittstelle zur Verwaltung einer heterogenen Sammlung von Geräten. Diese Schnittstelle ist für viele verbundene Geräteanwendungen wichtig und ein wesentlicher Unterschied zwischen einer IoT-Plattform und einem eigenständigen MQTT-Broker. In diesem Dokument werden die grundlegenden Architekturaspekte und -empfehlungen beschrieben, die Sie vor der Bereitstellung einer IoT-Plattform-Produktarchitektur in Google Cloud erwägen müssen.

Dieses Dokument ist Teil einer Reihe von Dokumenten, die Informationen zu IoT-Architekturen in Google Cloud und zur Migration von IoT Core enthalten. Die anderen Dokumente in dieser Reihe umfassen die folgenden Punkte:

Das folgende Diagramm zeigt eine Beispielarchitektur mit einem generischen IoT-Plattformprodukt, das in Google Cloud ausgeführt wird.

Eine allgemeine IoT-Plattformarchitektur (der Ablauf von Ereignissen wird im folgenden Text erläutert).

Wie im vorherigen Diagramm dargestellt, stellt die IoT-Plattform einen MQTT-Broker oder Endpunkt für die Geräteverbindung bereit. Die IoT-Plattform ist mit einem externen Proxy-Network-Load-Balancer verbunden, um den Traffic von den Edge-Geräten zu verteilen. Zusätzliche IoT-Anwendungen können über Pub/Sub oder mit dem Dataflow-MQTT-Connector eine Verbindung zur IoT-Plattform herstellen.

Die IoT-Plattform bietet eine Reihe von Diensten zur Geräteverwaltung. Wie im Diagramm dargestellt, handelt es sich bei diesen Diensten um folgende:

  • Speicher für Geräteanmeldedaten
  • Modul für Regeln
  • Geräteauthentifizierung und -autorisierung
  • Verwaltung der Gerätekonfiguration
  • Geräte-Registry
  • Verwaltung von Geräteupdates

IoT-Plattformprodukte umfassen im Allgemeinen auch Dienste wie digitale Zwillingsfeatures, Low-Code-Entwicklungsschnittstellen, Warnungs- und Benachrichtigungsfunktionen und andere Analysefunktionen.

Überlegungen und Auswahlmöglichkeiten zu Architekturen

In den folgenden Abschnitten werden die Architekturoptionen beschrieben, die Sie für eine IoT-Plattform-Produktarchitektur treffen können, und die Auswirkungen dieser Entscheidungen.

Aufnahmeendpunkte

Die meisten kommerziellen IoT-Plattformanwendungen enthalten einen MQTT-Endpunkt und normalerweise auch einen HTTPS-Endpunkt für die Datenaufnahme von verbundenen Geräten.

MQTT

Eine IoT-Plattform implementiert einen MQTT-Endpunkt auf eine der folgenden Arten:

  • Durch einen Connector zwischen MQTT und einem anderen Nachrichtendienst
  • Durch einen MQTT-Broker, der die vollständige MQTT-Spezifikation implementiert

Bei der Bewertung von kommerziellen IoT-Plattformen ist es wichtig zu wissen, welchen der vorhergehenden Ansätze der Anbieter für das Produkt ausgewählt hat, damit Sie die Auswirkungen für Ihren Anwendungsfall ermitteln können.

In einigen Fällen verbindet der MQTT-Endpunkt nur die MQTT-Clients mit einem Backend-Nachrichtendienst, z. B. Kafka oder Pub/Sub. Dieser Endpunkttyp implementiert normalerweise nicht die vollständige MQTT-Protokollspezifikation und enthält häufig keine Features wie die Dienstqualitätsebenen 1 und 2 oder freigegebene Abos. Der Vorteil dieses Ansatzes besteht darin, dass die Komplexität auf der IoT-Plattform reduziert wird, da es keine separate MQTT-Broker-Anwendung gibt. Die Betriebskosten sind niedriger und die Wartung ist einfacher, als wenn die Plattform einen separaten MQTT-Broker verwendet. Aufgrund der geringeren Unterstützung für erweiterte MQTT-Protokollfeatures bedeutet dieser Ansatz jedoch weniger Flexibilität und Funktionalität für den MQTT-Nachrichtentransport als bei einem eigenständigen MQTT-Broker, der die vollständige MQTT-Spezifikation implementiert.

Andere IoT-Plattformen bieten einen vollständigen MQTT-Broker als Teil der Plattform, wie in der Beispielarchitektur in diesem Dokument gezeigt. Dieser Broker kann einer der vorhandenen Open Source-Broker oder eine proprietäre Broker-Implementierung sein. Ein vollständiger MQTT-Broker bietet die zuvor beschriebene vollständige bidirektionale MQTT-Funktionalität. Ein vollständiger Broker kann jedoch die Komplexität und die Betriebskosten im Rahmen der Verwaltung der IoT-Plattform erhöhen.

HTTPS und andere ergänzende Protokolle

Zusätzlich zu MQTT bieten viele IoT-Plattformen mehr Datenaufnahmeendpunkte als die, die in der Hauptarchitektur gezeigt werden, die in diesem Dokument beschrieben wird.

HTTPS ist ein gängiges alternatives Protokoll für MQTT für Anwendungsfälle mit verbundenen Geräten. Es verlangt einen höheren Aufwand als MQTT, wird aber von Mobilgeräten wie Smartphones sowie von Webbrowsern und anderen Anwendungen öfter unterstützt. Es wird häufig in bestimmten verbundenen Geräteanwendungen verwendet und von Open-Source-Plattformen wie Eclipse Hono und vielen kommerziellen Produkten unterstützt.

Viele eingeschränkte Geräteanwendungen verwenden (Eingeschränktes Anwendungsprotokoll (CoAP), definiert in RFC 7252) als MQTT-Alternative. CoAP ist auf Clients mit geringem Aufwand und geringem Ressourcenbedarf für eingebettete Geräte und Sensoren ausgerichtet. Viele kommerzielle IoT-Plattformanwendungen bieten auch einen CoAP-Endpunkt.

Load-Balancing

Weitere Informationen zur Auswahl des besten Load-Balancers für Ihre Architektur finden Sie im Abschnitt zum Load-Balancing der eigenständigen MQTT-Broker-Architektur in Google Cloud, da diese Überlegungen auch auf diesen Fall anwendbar sind.

Verwaltung der Geräteauthentifizierung und -anmeldedaten

Die Verwaltung der Geräteanmeldedaten und -authentifizierung ist ein wichtiger Bestandteil des Betriebs einer IoT-Plattform. Die Authentifizierungsmethoden, die von verbundenen Geräten unterstützt werden, variieren je nach Anwendung und Formfaktoren des Geräts stark. Es ist wichtig, die entsprechende Authentifizierungsmethode für den Zielanwendungsfall auszuwählen und das ausgewählte Authentifizierungsschema korrekt zu implementieren.

Im Gegensatz zu einem eigenständigen MQTT-Broker bietet eine IoT-Plattform integrierte Dienste zum Verwalten der Geräteidentität und -anmeldedaten. Die meisten IoT-Plattformen verwenden die Authentifizierung mit X.509-Clientzertifikaten zur Authentifizierung, die JWT-Token-basierte Authentifizierung (häufig in Verbindung mit OAuth 2.0) sowie die Authentifizierung mit Nutzernamen und Passwort. Einige Plattformen unterstützen auch die Einbindung in einen externen LDAP-Authentifizierungsanbieter.

Für einige eingeschränkte Geräte ist die JWT- oder Nutzername- und Passwort-Authentifizierung möglicherweise besser geeignet, da diese Schemas weniger Ressourcen auf einem verbundenen Gerät erfordern. Wenn Sie die JWT- oder Nutzername- und Passwort-Authentifizierung verwenden, ist es wichtig, dass Sie die Netzwerkverbindung getrennt von der mTLS-Authentifizierung verschlüsseln, da für keine dieser Authentifizierungsmethoden eine verschlüsselte Verbindung erforderlich ist. Die X.509-Zertifikatsauthentifizierung verbraucht dagegen mehr Ressourcen auf dem verbundenen Gerät, wird aber in der Regel in einer mTLS-verschlüsselten Verbindung verwendet und bietet somit ein hohes Maß an Sicherheit.

Die Bereitstellung der Anmeldedaten für die Authentifizierung auf dem Edge-Gerät zum Zeitpunkt der Fertigung ist auch ein wichtiger Teil des Authentifizierungsschemas für verbundene Geräte, wird jedoch in diesem Dokument nicht behandelt.

Weitere Informationen zur Authentifizierung und Verwaltung von Anmeldedaten finden Sie unter Best Practices zum Ausführen eines IoT-Back-Ends in Google Cloud.

Verbundene Geräte verwalten

In der Regel veröffentlichen verbundene Geräte Telemetrieereignisse und Statusinformationen über einen der Aufnahmeendpunkte wie MQTT auf der Plattform. Wenn Sie eine IoT-Plattform mit mehreren Protokollen verwenden, können Geräte mit jedem der unterstützten Protokolle kommunizieren.

Wir empfehlen, dass Ihre Organisation eine IoT-Plattform mit den folgenden Funktionen verwendet:

  • Software- und Systemupdates: Die Bereitstellung und das Rollback von Firmware-, Software- und Anwendungsupdates für die verbundenen Geräte. Diese Updates umfassen normalerweise auch die Speicherung und Verwaltung der Updates selbst.
  • Konfigurationsupdates: Die Bereitstellung, die Speicherung und das Rollback von Updates für die Konfiguration von Anwendungen, die auf den verbundenen Geräten bereitgestellt werden.
  • Erstellen und Verwalten von Anmeldedaten: Das Erstellen neuer Geräteanmeldedaten, Bereitstellen dieser Anmeldedaten für das verbundene Gerät, Prüfen von Gerätezugriffsversuchen und -aktivitäten sowie Widerrufen von manipulierten oder abgelaufenen Anmeldedaten zum richtigen Zeitpunkt.
  • Regel-Engine und Datenverarbeitung: Die Definition und Ausführung von datengestützten Regeln und anderen Datenverarbeitungsschritten. Diese Funktion enthält häufig eine Art Low-Code-Schnittstelle zum Definieren von Regeln und Datenverarbeitungspipelines.

Backend-Arbeitslasten

Die meisten IoT-Plattformen bieten eigene interne Datenspeicher- und Transportfunktionen, mit denen Sie eine Verbindung zu Ihren Backend-Arbeitslasten und -Anwendungen herstellen können. AMQP, RabbitMQ und Kafka werden häufig für die interne Datenübertragung verwendet. Diese können alle über das Pub/Sub SDK mit Pub/Sub verbunden werden. Sie können auch ein integriertes Datenbanksystem wie PostgreSQL verwenden, um Daten auf der Plattform zu speichern. In vielen Fällen kann die IoT-Plattform so konfiguriert werden, dass eines der Cloud Storage-Produkte direkt verwendet wird, z. B. Cloud SQL, Firebase oder BigQuery.

Wenn die IoT-Plattform einen vollständigen MQTT-Broker hat, können Backend-Anwendungen auch über die MQTT-Funktion der Plattform mit Geräten kommunizieren. Wenn die Anwendung MQTT unterstützt, kann die Anwendung eine Verbindung mit dem Broker als Abonnent herstellen. Wenn keine MQTT-Unterstützung vorhanden ist, bietet Apache Beam einen MQTT-Treiber, der die bidirektionale Integration in Dataflow und andere Beam-Bereitstellungen ermöglicht.

Anwendungsfälle

In den folgenden Abschnitten werden Beispielszenarien beschrieben, in denen eine IoT-Plattform eine bessere Architektur als ein eigenständiger MQTT-Broker oder eine direkte Verbindung zu Pub/Sub bietet.

Intelligente Appliance-Verwaltung

Anwendungen, die mehrere intelligente Appliances verwalten, eignen sich gut für eine IoT-Plattform. Ein Beispiel für eine solche Anwendung ist eine Plattform zur Verwaltung von Küchengeräten wie Geschirrspüler und Kaffeekocher. Diese Geräte stellen im Allgemeinen eine Verbindung mit einer cloudbasierten Anwendung her, entweder direkt über WLAN oder über ein lokales Gateway, das Bluetooth Low Energy (BLE) oder ein anderes lokales Protokoll verwendet. Die Verwaltungsfunktionen einer IoT-Plattform sind hier wichtig, um den Status der einzelnen Geräte zu überwachen, Softwareupdates und Sicherheitspatches zu verwalten und Geräteaktivitäten zu erfassen, um dem Hersteller und dem Kunden wichtige Informationen zu liefern. Diese Funktionen gehen über den Rahmen eines einfachen MQTT-Brokers hinaus. Das Vorhandensein von mindestens einem Geräteinformations-Repository, einer Gerätestatus-Datenbank, eines Telemetriedatenspeichers und einer Analyseschnittstelle sind für das Erstellen einer erfolgreichen intelligenten Appliance-Plattform entscheidend.

Logistik und Asset-Tracking

Für eine Logistik- und Asset-Tracking-Anwendung bietet ein IoT-Plattformprodukt mehr Funktionen als ein einfacher MQTT-Broker. Daher ist es eine bessere Wahl für diesen Anwendungsfall. Das Monitoring des aktuellen und früheren Status und Standorts einer großen Flotte von Assets hängt von einer robusten Gerätestatus-Datenbank und einem Identitätsverwaltungssystem ab. Wenn neue Assets bereitgestellt werden, müssen sie so reibungslos wie möglich mit der Plattform verbunden werden und in der Folge während des gesamten Lebenszyklus des Assets überwacht werden. In vielen Fällen sammelt die Anwendung auch andere Sensorinformationen über das Asset, z. B. lokale Temperaturen, Luftfeuchtigkeit und atmosphärischen Druck oder 3D-Positionierungs- und Beschleunigungsdaten, um unerwartete Bewegungen oder Rückgänge zu erkennen. Alle diese Daten müssen für die Analyse in einer beliebigen Backend-Anwendung aufgenommen und mit dem richtigen Asset verknüpft werden. Daher ist die von der IoT-Plattform bereitgestellte vollständige Geräteverwaltung eine wichtige Funktion.

Nächste Schritte