IoT CONFERENCE Blog

Softwareentwicklung im IoT: Container sind die Antwort auf die Probleme in der IoT-Softwareentwicklung

Feb 21, 2017

Die Softwareentwicklung für Anwendungen im Internet of Things hat mit zwei Problemen zu kämpfen: Updates auf verteilten Systemen und Hardwarewechsel während des Entwicklungs- prozess. IoTCon-Sprecher Dieter Reuter (Hypriot) erklärt in seinem Talk "Docker opens the Doors for IoT" wie Container diese Probleme lösen können. Im Vorab-Interview erläutert er die Ideen hinter der Technik.

JAXenter: Warum passen Container und IoT-Anwendungen so gut zusammen?

Dieter Reuter: Container sind eine ideale Möglichkeit, komplette Anwendungen zu kapseln und portabel auf verschiedene Geräte zu deployen. Besonders wichtig sehe ich dies für IoT-Anwendungen, da sich diese so sicher und einfach verteilen und im Bedarfsfall schnell austauschen lassen. Updates und Sicherheits-Patches lassen sich so sehr einfach realisieren, ein wichtiger Aspekt für einen langfristigen Support gerade im industriellen Bereich.

 

 

JAXenter: Wie können Container dabei helfen die Software vom Prototypen bis zur finalen, produktiven Hardware mitzunehmen?

 

Dieter Reuter: In der Regel kann man mit Containern bereits die Entwicklung starten, bevor die Ziel-Hardware zur Verfügung steht. Anstatt auf einem teuren Entwicklungssystem im vier- bis fünfstelligen Bereich, lassen sich so im Extremfall auf einem ARM-System wie dem Raspberry Pi die Container für ARMv7 oder ARM64 entwickeln und realitätsnah testen. Ein Deployment auf die endgültige Hardware lässt sich später recht einfach anpassen. Das spart Zeit und Geld und hilft so die Gesamtlösung schneller auf den Markt zu bekommen. Notwendig ist dazu aber eine gute Isolation von der speziellen Hardware. Das sollte aber bei entsprechendem Softwaredesign nicht allzu schwierig sein und bringt zudem weitere Vorteile in der Testbarkeit und Wiederverwendung der Software mit sich.

 

 

JAXenter: Ein großes Problem bei IoT-Anwendungen sind Software-Updates. Wie helfen Container hier weiter?

 

Dieter Reuter: Die Container selbst enthalten absolut alle Bestandteile der Applikation in der richtigen Version, wie Shared Libraries. Somit lassen sich ganz einfach neue Versionen parallel betreiben und testen oder auch on-the-fly austauschen. Auch ein Rollback auf eine alte funktionierende Version ist somit einfach gewährleistet.

 

 

JAXenter: IoT-Anwendungen laufen nicht einsam auf ihren Geräten. Oft schicken sie Daten in die Cloud. Wie funktioniert die Zusammenarbeit zwischen Gerät und Cloud mit Containern?

 

Dieter Reuter: Interessant wird es, wenn Container auf IoT-Geräten mit zentralen Services in so genannten IoT-Gateways und in der Cloud zusammenarbeiten. Die benötigten Netzwerkverbindungen können und sollten komplett verschlüsselt und per TLS abgesichert werden. Dabei ist es vollkommen egal, ob man ARM- oder Intel-Prozessoren in den verschiedenen beteiligten Systemen verwendet. Alles lässt sich austauschen und komplett transparent testen. Somit ist man in der Lage, auch den kompletten Technologie-Stack einheitlich mit Containern aufzubauen, in der Entwicklung, für die Cloud-Services, für die IoT-Gateways und auch auf den Edge-Devices selbst.

 

 

JAXenter: An welchen Ecken hakt es denn noch bei Containern und dem IoT? Was würde die Entwicklung noch weiter vereinfachen und verbessern?

 

Dieter Reuter: Heute ist die Nutzung von Containern für IoT-Anwendungen noch relativ unbekannt. Aber die ersten Kunden haben bereits mit der Umsetzung in konkreten Projekten begonnen. Wichtig für Container ist die Verwendung von neueren Linux-Kernel-Versionen, am besten mit Mainline-Linux-Unterstützung. Dies sollte aber eh der Standard sein, da man nur so die gesteigerten Sicherheitskriterien in künftigen IoT-System gerecht werden kann. Insgesamt lässt sich mit Containern die Entwicklung beschleunigen und auch die Sicherheit verbessern, da mit der Hilfe von Containern schnellere und häufigere Updates und Deployments durchgeführt werden können.

 

 

JAXenter: Vielen Dank für das Gespräch!