zurück zum Artikel

Software-Updates im Internet der Dinge

Know-how
Software-Updates im Internet der Dinge

Im IoT-Umfeld ist die Aktualisierung der Software auf den Endgeräten aufgrund der längeren Lebensdauer und hohen Sicherheitsanforderungen eine besondere Herausforderung.

Software-Updates im Internet der Dinge sind vielfältig: Sie können von Firmware-Updates für einen vernetzten Sensor oder Linux-getriebene IoT-Gateways (Internet of Things) bis zu Updates von komplexen IoT-Systemen wie einem vernetzten Fahrzeug oder einer Fertigungslinie mit Dutzenden updatefähigen Steuergeräten reichen.

Entsprechend vielfältig und hoch sind die Erwartungen an Techniken, die für Software-Updates zum Einsatz kommen. Nahezu identisch ist allerdings die Motivation, ein vernetztes Gerät für Updates bereit zu machen und eine entsprechende Infrastruktur bereitzustellen.

Warum Software-Updates im IoT?

Der wichtigste Grund für Updates im Internet der Dinge ist die Sicherheit: Sobald ein Gerät mit dem Internet verbunden ist, empfiehlt es sich, gängige Sicherheitsvorkehrungen zu treffen.

Für vernetze Geräte kommt eine weitere Herausforderung hinzu: Es muss berücksichtigt werden, dass sie oftmals eine wesentlich längere Lebensdauer als PCs, Server oder Smartphones haben. Kaum jemand möchte beispielsweise ein zehn Jahre altes Linux-System ohne Sicherheitspatches dem Internet überlassen.

Ein weiterer Grund ist das nachträgliche Hinzufügen neuer Funktionen. Sie sichern die langfristige Attraktivität eines Produkts für den Nutzer und verlängern den Lebenszyklus des Geräts. Schlussendlich greifen die gleichen Mechanismen, die den PC-, Server- und Smartphone-Markt in den letzten 15 Jahren nachhaltig verändert haben. Dort ist es selbstverständlich, dass Nutzer mit dem Kauf eines Smartphones nicht nur die Funktionen nutzen können, die im Auslieferungszustand enthalten sind. Sie sichern sich mit dem Erwerb des Geräts zugleich die unzähligen Anwendungsmöglichkeiten, die App Stores bereithalten.

Solche Funktionserweiterungen sind nicht nur für Nutzer, sondern auch für Hersteller interessant, denn sie können zusätzliche Einnahmequellen schaffen. Hierfür gibt es in verschiedenen Branchen beispielsweise im Smart-Home-Markt bereits Initiativen (http://www.mozaiq.io), ein Ökosystem aufzubauen und zusätzliche Angebote über einen App Store zu platzieren.

Durch die Möglichkeit von Software-Updates auf Geräten können ganz neue Geschäftsmodelle entstehen. Welche Herausforderungen gilt es nun im IoT-Kontext für Updates zu meistern?

Herausforderungen im IoT

Zunächst sind auch hier Sicherheitsaspekte von Bedeutung. Das Software-Update ist ein wichtiger Baustein im Sicherheitsgefüge einer IoT-Anwendung. Gleichzeitig birgt die Möglichkeit aber eine Sicherheitsgefahr für ein vernetztes Gerät. Angreifer können ein Update auch dafür missbrauchen, die Sicherheitsmechanismen eines Gerätes auszuschalten. Sich gegen einen Angriff mit manipulierter Firmware zu verteidigen, ist daher für jedes vernetze Gerät höchste Priorität. Das wird heute bereits über Signaturen und Kryptologie realisiert.

Die nächste Herausforderung ist die API-Stabilität. Im IoT-Kontext gibt es Geräte mit sehr langer Lebenszeit, die im klassischen IT-Hardware- und vor allem im Consumer-Bereich gar nicht denkbar wäre. Während ein Smartphone nach zwei bis drei Jahren oft schon veraltet ist, beträgt die Nutzungsdauer von Fahrzeugen oder Maschinen häufig 20 Jahre und mehr.

Ebenso problematisch können sich die oftmals langen Laufzeiten zwischen der Fertigung von Geräten, ihrer Inbetriebnahme und der erstmaligen Vernetzung auswirken. Zwischen Fertigung und erster Inbetriebnahme eines Geräts vergehen oft mehrere Monate. Viele Geräte wie eine Waschmaschine, ein Kühlschrank oder sogar Produktionsmaschinen sind auch ohne Vernetzung mit ihren Grundfunktionen nutzbar. Anwender haben in dem Fall die Möglichkeit, das Gerät erst mit dem Internet zu verbinden, wenn sie die Vernetzung nutzen wollen. Aufgrund der Zeitspanne kann es passieren, dass nicht mehr alle Schnittstellen funktionieren. Zumindest das Software-Update muss aber noch durchführbar sein.

Eine Frage der Skalierbarkeit

Die nächste Herausforderung ist die technische und fachliche Skalierbarkeit. Bezüglich ersterer (wie viel kann wie schnell aktualisiert werden) gilt es zunächst, die Heterogenität verschiedener IoT-Szenarien wie in folgenden Beispielen zu betrachten:

Diese rein technischen Skalierungsanforderungen können Software- beziehungsweise Cloud-Anbieter bereits heute gut bedienen. Fast wichtiger ist daher die fachliche Skalierung: Wie lässt sich sicherstellen, dass ein Software-Update auf Hundertausenden von Geräten kontrolliert erfolgt?

Dazu gehört das automatische Erkennen der auf den jeweiligen Geräten eingespielten Softwareversion. Dem folgt eine Gruppierung der Geräte und ein sukzessives Ausrollen (Gruppe für Gruppe). Dadurch wird es möglich, den Update-Prozess zu jedem Zeitpunkt beobachten und notfalls abbrechen zu können. Gute Kontrolle macht im Fehlerfall den Unterschied zwischen einem Totalverlust aller Geräte und dem einer kleinen Gruppe. Natürlich sollte es mit einer professionellen Qualitätssicherung keine Fehler geben, aber ein gutes Rollout-Management ist die Absicherung vor einem Komplettausfall und für ein robustes Gesamtsystem daher unverzichtbar.

Software-Update-Prozess im Internet der Dinge inklusive definierten Schwellwerten, um das Update für die nächste Geräte-Gruppe zu starten beziehungsweise den gesamten Prozess zu stoppen (Abb. 1)
Software-Update-Prozess im Internet der Dinge inklusive definierten Schwellwerten, um das Update für die nächste Geräte-Gruppe zu starten beziehungsweise den gesamten Prozess zu stoppen (Abb. 1)

Implementierung und Fazit

Implementierung in der Praxis

Für die praktische Umsetzung von Software-Update-Systemen im IoT existiert eine Reihe von Angeboten.

Zunächst sind die klassische Device-Management-Systeme wie ProSyst mPRM und Axeda Device Management zu nennen, die das Software-Update als Unterfunktion ihres Aufgabenspektrums verstehen. Diese Systeme kommen zum Teil aus dem IoT-(Gateway-) und dem Telekommunikationsmarkt.

Spezialisierte Software-Update-Systeme für IoT sind zum jetzigen Zeitpunkt hingegen noch selten. Zwei gute Beispiele stammen aus der Open-Source-Welt. Apache ACE, historisch betrachtet aus dem OSGi-Bundle-Update entstanden, ist flexibel genug für den Einsatz in anderen Szenarien. Es beinhaltet neben den Kernfunktionalitäten des Update-Managements (Übertragen des Update-Kommandos, Feedback Kanal, Artefakt Repository) auch ein Dependency Management, um konsistente (OSGi bundle) Distributionen zusammenzustellen.

Das von Bosch Software Innovations initiierte Eclipse hawkBit-Projekt hat sich zum Ziel gesetzt, eine domänenunabhängige und offene Plattform für Software-Updates im IoT-Kontext bereitzustellen.

Module auf Basis von Spring

Eclipse hawkBit stellt eine Reihe von Modulen bereit, die auf Spring (Boot) basieren und mit denen Entwickler einen Cloud-Service für Software-Updates im IoT bauen und entweder eigenständig betreiben oder in ein bestehendes System integrieren können. Ein Repository für Geräte- und Softwarepaket-Informationen, Schnittstellen zur direkten und indirekten Geräteintegration sowie eine RESTful-Management-Schnittelle (alternativ eine Benutzeroberfläche für die Verwaltung) stehen dem Anwender ebenso zur Verfügung.

Anders als Apache ACE stellt hawkBit allerdings kein Dependency Management bereit. Es konzentriert sich auf die Update-Verteilung und will über die Beschaffenheit der Artefakte dabei möglichst wenig wissen.

Insbesondere die indirekte Geräteintegration stellt eine Besonderheit dar, da sie die Nutzung eines Device Connectivity Layers ermöglicht. Hier bietet hawkBit eine AMQP-basierte (Advanced Message Queuing Protocol) Schnittstelle zur Verknüpfung mit dieser Ebene. Mittelfristig ist zudem eine Integration mit dem Eclipse hono-Projekt geplant, um die Off-the-Shelf-Funktionen aus Eclipse IoT heraus zu verbreitern. Hono kümmert sich um die Gerätekonnektivität und ermöglicht dabei verschiedenen Services mit einem Gerät Daten auszutauschen, hawkBit als spezialisiertes Software Update System ist typischerweise nur ein Interessent unter mehreren an dem Gerät.

Eclipse hawkBit stellt dazu eine Reihe von Beispielimplementierungen bereit: von Netflix-Feign-basierten REST-Clients bis hin zu einem umfangreichen Gerätesimulator.

Software-Updates im Internet der Dinge mit Eclipse hawkBit (Abb. 2)
Software-Updates im Internet der Dinge mit Eclipse hawkBit (Abb. 2)

Das Projekt steckt noch in der Anfangsphase, ist allerdings bereits heute die Basis für viele Update-Systeme im industriellen Umfeld.

Fazit

Dem IoT-Systemarchitekten stehen neben den proprietären Angeboten offene Plattformen zur Verfügung, um den beschriebenen Herausforderungen zu begegnen. Allein die Sicherheitsanforderungen machen das Software-Update zu einem "Must Have" jeder modernen IoT-Architektur und -Anwendung. Die möglichen Erweiterungen des IoT-Geschäftsmodells durch Software-Updates machen es noch einmal attraktiver. (rme [1])

Kai Zimmermann
ist bei der Bosch Software Innovations GmbH verantwortlicher Product Owner für den Bosch IoT Rollouts Cloud Service und Project Lead für Eclipse hawkBit.


URL dieses Artikels:
http://www.heise.de/-3358524

Links in diesem Artikel:
[1] mailto:rme@ct.de