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 häufig IoT-Plattformen, wenn ein eigenständiger MQTT-Broker für einen Anwendungsfall nicht ausreicht und ein vollständigeres IoT-Plattformprodukt erforderlich ist. Eine IoT-Plattform bietet eine einheitliche Schnittstelle für die Verwaltung einer heterogenen Gerätesammlung. Diese Schnittstelle ist für viele Anwendungen mit verbundenen Geräten wichtig und ein wichtiger 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 enthalten. Die anderen Dokumente in dieser Reihe umfassen die folgenden Punkte:
- Architekturen von verbundenen Geräten in Google Cloud
- Eigenständige MQTT-Broker-Architektur in Google Cloud
- IoT-Plattform-Produktarchitektur in Google Cloud (dieses Dokument)
- Best Practices zum Ausführen eines IoT-Back-Ends in Google Cloud
- Gerät in Pub/Sub-Architektur zu Google Cloud
- Best Practices für die automatische Bereitstellung und Konfiguration von Edge- und Bare-Metal-Systemen und -Servern
Das folgende Diagramm zeigt eine Beispielarchitektur mit einem generischen IoT-Plattformprodukt, das in Google Cloud ausgeführt wird.
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äte-Anmeldedaten
- Modul für Regeln
- Geräteauthentifizierung und -autorisierung
- Gerätekonfigurationsverwaltung
- Geräte-Registry
- Verwaltung von Geräte-Updates
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 in der Regel 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 stellt der MQTT-Endpunkt nur eine Verbindung zwischen den MQTT-Clients und einem Backend-Messaging-Dienst wie Kafka oder Pub/Sub her. 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 der IoT-Plattform verringert wird, da es keine separate MQTT-Brokeranwendung gibt. Die Betriebskosten sind niedriger und die Wartung ist einfacher als bei einer Plattform mit einem separaten MQTT-Broker. 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 Brokerimplementierung 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 zu 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 Anwendungen für verbundene Geräte verwendet und wird 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 richtige Authentifizierungsmethode für den Zielanwendungsfall auszuwählen und das ausgewählte Authentifizierungsschema richtig 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 des X.509-Clientzertifikats zur Authentifizierung, eine JWT-Token-basierte Authentifizierung (oft in Kombination mit OAuth 2.0) sowie die Authentifizierung über Nutzernamen und Passwort. Einige Plattformen unterstützen auch die Integration 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 Schemata auf einem verbundenen Gerät weniger Ressourcen 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-Zertifikatauthentifizierung 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
Normalerweise veröffentlichen verbundene Geräte Telemetrieereignisse und Statusinformationen auf der Plattform über einen der Aufnahmeendpunkte wie MQTT. 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 auf den verbundenen Geräten. 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 umfasst häufig eine Art Low-Code-Oberfläche zum Definieren von Regeln und Pipelines zur Datenverarbeitung.
Backend-Arbeitslasten
Die meisten IoT-Plattformen bieten eigene interne Datenspeicher- und -übertragungsfunktionen, mit denen Sie eine Verbindung zu Ihren Back-End-Arbeitslasten und ‑Anwendungen herstellen können. AMQP, RabbitMQ und Kafka werden häufig für den internen Datentransport verwendet. Diese können ü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 wie Cloud SQL, Firebase oder BigQuery direkt verwendet wird.
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 sie sich als Abonnent mit dem Broker verbinden. Wenn es keine MQTT-Unterstützung gibt, bietet Apache Beam einen MQTT-Treiber, der eine 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 Architekturentscheidung ist als ein eigenständiger MQTT-Broker oder eine direkte Verbindung zu Pub/Sub.
Intelligente Geräteverwaltung
Anwendungen, die mehrere intelligente Geräte 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ülern und Kaffeemaschinen. 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 jedes Geräts zu überwachen, Softwareupdates und Sicherheits-Patches zu verwalten und Geräteaktivitäten zu erfassen, um dem Hersteller und dem Kunden wichtige Informationen zur Verfügung zu stellen. Diese Funktionen gehen über den Umfang 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 Überwachen des aktuellen und bisherigen Status und Standorts einer großen Flotte von Assets erfordert eine robuste Datenbank für den Gerätestatus und ein Identitätsverwaltungssystem. 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 erfasst die Anwendung auch andere Sensorinformationen über das Asset, z. B. lokale Temperatur, Luftfeuchtigkeit und atmosphärischer Druck oder 3D-Positions- und Beschleunigungsdaten, um unerwartete Bewegungen oder Rückgang zu erkennen. Alle diese Daten müssen aufgenommen und mit dem richtigen Asset für die Analyse in einer beliebigen Backend-Anwendung verknüpft werden. Daher ist die umfassende Geräteverwaltung der IoT-Plattform eine wichtige Funktion.
Nächste Schritte
- Weitere Informationen zum Verbinden von Geräten und zum Erstellen von IoT-Anwendungen in Google Cloud mit Intelligent Products Essentials
- Lernen Sie Methoden kennen, wie Sie Edge- und Bare-Metal-Systeme und -Server automatisch bereitstellen und konfigurieren.
- Weitere Referenzarchitekturen, Diagramme und Best Practices finden Sie im Cloud-Architekturcenter.