Review findings
This commit is contained in:
@@ -1,8 +1,9 @@
|
||||
# Millionen langlebiger TCP-Verbindungen – Herausforderungen und Lösungen bei Update-Prozessen
|
||||
|
||||
Ihr wollt in euren Urlaub starten, seid mit gepackten Koffern am Bahnhof. Beim Warten auf den verspäteten Zug habt ihr jede
|
||||
Menge Zeit zum überlegen. Ihr fragt euch: "Ist der Herd wirklich abgeschaltet?". Anders als in früheren Urlauben habt ihr aber
|
||||
einen smarten Herd daheim. Ihr öffnet eure App, stellt fest, dass alles in Ordnung ist, und könnt beruhigt in Urlaub starten.
|
||||
Neulich stehe ich am Bahnhof, mit gepackten Koffern, und will in meinen Urlaub starten. Beim Warten auf den (natürlich)
|
||||
verspäteten Zug hatte ich jede Menge Zeit zum überlegen. Ich habe mich gefragt: "Ist der Herd wirklich abgeschaltet?". Anders
|
||||
als in früheren Urlauben hatte ich aber einen smarten Herd daheim. Ich öffne also meine App, stelle fest, dass alles in Ordnung
|
||||
ist, und kann beruhigt in den Zug einsteigen.
|
||||
|
||||
IoT (also "Internet of Things") beschreibt genau diese Art von Geräten. Mein Name ist Bene. Ich bin Softwareentwickler mit Fokus
|
||||
auf Softwarearchitektur bei Scandio. Wir bei Scandio entwickeln für unsere Kunden maßgeschneiderte intelligente und kreative
|
||||
@@ -24,14 +25,13 @@ wie möglich beantworten.
|
||||
|
||||
## Über Scandio
|
||||
|
||||
Noch kurz ein paar Worte über Scandio: Vorhin habe ich ja schon gesagt, dass wir individuelle Software entwickeln, wobei wir
|
||||
neben IoT noch Stärken in den Bereichen Cloud und Systems Engineering, DevOps und Fullstack-Web-Entwicklung haben. Daneben
|
||||
unterstützen wir mit agilen Coaches und Beratern dabei, Prozesse zu optimieren. Insbesondere helfen wir als Atlassian Platinum
|
||||
Solution Partner unseren Kunden bei ihrer agilen Transformation.
|
||||
Noch kurz ein paar Worte über Scandio: Neben IoT haben wir Stärken in den Bereichen Cloud und Systems Engineering, DevOps und
|
||||
Fullstack-Web-Entwicklung. Daneben unterstützen wir mit agilen Coaches und Beratern dabei, Prozesse zu optimieren. Insbesondere
|
||||
helfen wir als Atlassian Platinum Solution Partner unseren Kunden bei ihrer agilen Transformation.
|
||||
|
||||
## Projektsetup
|
||||
|
||||
[5] Das Projekt, von dem ich heute rede, hat den Namen "Heimdall".
|
||||
Das Projekt, von dem ich heute rede, hat den Namen "Heimdall".
|
||||
|
||||
Heimdall ist in der nordischen Mythologie der Wächter der Götterbrücke Bifröst (das ist der Regenbogen im Bild) und Heimdall hat
|
||||
außergewöhnliche Wahrnehmungsfähigkeiten. Hier im Bild ist das durch das Hören symbolisiert. Genauso wie Heimdall die Verbindung
|
||||
@@ -46,18 +46,18 @@ unserem neuen System regelmäßig das alte System überlastet haben, da wir einf
|
||||
Last das alte System aushält. Mit diesem Lock-In-Effekt war unser Kunde verständlicherweise unzufrieden und hat uns beauftragt,
|
||||
Heimdall neu zu entwickeln.
|
||||
|
||||
Ich will hier einmal schematisch zeigen, welche Aufgabe Heimdall hat. Eure smarte Herdplatte von vorhin muss regelmäßig an das
|
||||
Herdplattenstatusbackend die Information senden, welche Herdplatten auf welcher Stufe angeschaltet sind. Gleichzeitig tauscht
|
||||
das smarte Heizungsthermostat eures Nachbarn Nachrichten mit einem Backend aus, um herauszufinden, ob die Heizung nach oben oder
|
||||
unten geregelt werden sollte, und die smarte Dunstabzugshaube eurer Tante meldet an das entsprechende Backend, dass die Filter
|
||||
mal wieder eine Reinigung bräuchten. Heimdall sitzt zwischen den Geräten und den Backends und sorgt dafür, dass die richtigen
|
||||
Nachrichten das richtige Backend erreichen, und dass umgekehrt auch Nachrichten in die Gegenrichtung versendet werden können:
|
||||
beispielsweise kann das Herdplattenbackend die Herdplatte anweisen, sich abzuschalten. Die Geräte halten dazu eine Verbindung zu
|
||||
Heimdall aufrecht. Über diese Verbindung werden die Nachrichten dann ausgetauscht.
|
||||
[5] Ich will hier einmal schematisch zeigen, welche Aufgabe Heimdall hat. Meine smarte Herdplatte von vorhin muss regelmäßig an
|
||||
das Herdplattenstatusbackend die Information senden, welche Herdplatten auf welcher Stufe angeschaltet sind. Gleichzeitig
|
||||
tauscht das smarte Heizungsthermostat eures Nachbarn Nachrichten mit einem Backend aus, um herauszufinden, ob die Heizung nach
|
||||
oben oder unten geregelt werden sollte, und die smarte Dunstabzugshaube eurer Tante meldet an das entsprechende Backend, dass
|
||||
die Filter mal wieder eine Reinigung bräuchten. Heimdall sitzt zwischen den Geräten und den Backends und sorgt dafür, dass die
|
||||
richtigen Nachrichten das richtige Backend erreichen, und dass umgekehrt auch Nachrichten in die Gegenrichtung versendet werden
|
||||
können: beispielsweise kann das Herdplattenbackend die Herdplatte anweisen, sich abzuschalten. Die Geräte halten dazu eine
|
||||
Verbindung zu Heimdall aufrecht. Über diese Verbindung werden die Nachrichten dann ausgetauscht.
|
||||
|
||||
## Problemstellung
|
||||
|
||||
[10] Das wichtigste Qualitätsziel bei Heimdall ist, dass diese Verbindungen zwischen Gerät und Heimdall so selten wie möglich
|
||||
Das wichtigste Qualitätsziel bei Heimdall ist, dass diese Verbindungen zwischen Gerät und Heimdall so selten wie möglich
|
||||
unterbrochen werden. Das hat zwei Gründe: Zum einen kann ich als Nutzer nicht sehen, auf welcher Stufe mein Herd gerade kocht,
|
||||
wenn der Herd nicht mit Heimdall verbunden ist. Zum anderen finden einige Prozesse nach jeder Neuverbindung statt. Das kann
|
||||
potenziell zu Überlastung von Heimdall oder den Backends führen, wenn die Neuverbindungen zu häufig stattfinden.
|
||||
@@ -72,17 +72,17 @@ notwendig sind, sondern die Konfigurationsänderungen am Live-System durchgefüh
|
||||
Diesem Prinzip, dass Konfigurationsänderungen ohne Neustarts möglich sein sollen, werden wir bei der Betrachtung der
|
||||
Heimdall-Architektur noch öfter begegnen. Wir schauen uns jetzt mal an, wie Heimdall aufgebaut ist.
|
||||
|
||||
Das Kernstück von Heimdall ist der sogenannte "Web Socket Manager", kurz WSM. Eure Herdplatte kann über euer heimisches WLAN mit
|
||||
Idem Internet kommunizieren. Nachdem die Firmware der Herdplatte gestartet und die Verbindung mit dem Internet hergestellt
|
||||
wurde, versucht die Herdplatte eine Websocket-Verbindung zum WSM zu öffnen. Dabei handelt es sich um eine dauerhafte Verbindung,
|
||||
über die zu beliebigen Zeiten Nachrichten in beide Richtungen entlang der Verbindung geschickt werden können. Die Verbindung
|
||||
wird so lange wie möglich aufrecht erhalten. Es gibt im Wesentlichen vier Gründe für den Abbruch der Verbindung: Das Gerät wurde
|
||||
abgeschaltet, die Netzwerkverbindung zwischen Gerät und WSM wurde unterbrochen, der WSM wurde beendet oder der WSM hat die
|
||||
Verbindung beendet. Im letzten Fall teilt also der WSM dem Gerät mit, dass über die Verbindung keine Daten mehr entgegengenommen
|
||||
oder verschickt werden können, ohne dass WSM oder Gerät beendet wurden. Gehen wir also mal davon aus, dass die Verbindung
|
||||
geöffnet ist und die Herdplatte mit dem WSM kommuniziert. Dann leitet der WSM die Nachrichten des Geräts an ein Backend weiter
|
||||
und umgekehrt werden Nachrichten vom Backend an das Gerät zurückgeleitet. Wenn es nur ein Gerät und nur ein Backend geben würde,
|
||||
wäre ich jetzt fertig mit der Präsentation. Das ist aber natürlich nicht alles.
|
||||
[10] Das Kernstück von Heimdall ist der sogenannte "Web Socket Manager", kurz WSM. Eure Herdplatte kann über euer heimisches
|
||||
WLAN mit dem Internet kommunizieren. Nachdem die Firmware der Herdplatte gestartet und die Verbindung mit dem Internet
|
||||
hergestellt wurde, versucht die Herdplatte eine Websocket-Verbindung zum WSM zu öffnen. Dabei handelt es sich um eine dauerhafte
|
||||
Verbindung, über die zu beliebigen Zeiten Nachrichten in beide Richtungen entlang der Verbindung geschickt werden können. Die
|
||||
Verbindung wird so lange wie möglich aufrecht erhalten. Es gibt im Wesentlichen vier Gründe für den Abbruch der Verbindung: Das
|
||||
Gerät wurde abgeschaltet, die Netzwerkverbindung zwischen Gerät und WSM wurde unterbrochen, der WSM wurde beendet oder der WSM
|
||||
hat die Verbindung beendet. Im letzten Fall teilt also der WSM dem Gerät mit, dass über die Verbindung keine Daten mehr
|
||||
entgegengenommen oder verschickt werden können, ohne dass WSM oder Gerät beendet wurden. Gehen wir also mal davon aus, dass die
|
||||
Verbindung geöffnet ist und die Herdplatte mit dem WSM kommuniziert. Dann leitet der WSM die Nachrichten des Geräts an ein
|
||||
Backend weiter und umgekehrt werden Nachrichten vom Backend an das Gerät zurückgeleitet. Wenn es nur ein Gerät und nur ein
|
||||
Backend geben würde, wäre ich jetzt fertig mit der Präsentation. Das ist aber natürlich nicht alles.
|
||||
|
||||
[15] In Wirklichkeit gibt es ja außer eurer Herdplatte auch noch den Thermostat eures Nachbarn, die Dunstabzugshaube eurer Tante
|
||||
und noch jede Menge andere Geräte, die mit den Backend-Systemen kommunizieren sollen. Unser Deployment ist in vier verschiedene
|
||||
|
||||
Reference in New Issue
Block a user