The Doppler Quarterly (DEUTSCHE) Frühjahr 2018 - Page 66

Serviceerkennung Serverlos Sie müssen das hohe Maß an Komplexität, das mit die- sen äußerst skalierbaren und entkoppelten Architektu- ren verbunden ist, unter Kontrolle behalten. Sie haben keine einzelne monolithische, einfache Anwendung mehr, über die Sie sich Gedanken machen müssen. Stattdessen arbeiten Sie jetzt mit einem in hohem Maße verteilten System mit komplexen Interaktionen, die effizient geplant, auf Fehler überwacht und vermittelt werden müssen, um Konflikte zwischen Ressourcen wie Ports und IP-Adressen zu vermeiden. Wir können zum Beispiel erlauben, dass Docker zufällige Ports für uns zuordnet, aber wie erfahren andere Services, wel- che Ports sie nutzen sollen? Hinzu kommt: Ein verteiltes System, das Hunderte oder Tausende einzelner Com- puter ausführt, stellt eine hochdynamische Umgebung dar. In dieser Größenordnung werden Fehler als Norm und nicht als Ausnahme betrachtet. Wenn physische Nodes hinzugefügt und wieder entfernt werden, fallen Container-Pods aus und werden anderen Nodes im Cluster zugeordnet. Weitere Probleme sind die Vermei- dung von Konflikten, die Erkennung von Services und die Sicherstellung einer effizienten Planung. Serverlose Architekturen, die manchmal auch Func- tion as a Service, kurz FaaS, genannt werden, stellen eine Plattform für flüchtige Services bereit, die für eine kurze Dauer ausgeführt und von klar definierten Ereignissen ausgelöst werden. Die bekannteste FaaS ist AWS Lambda. Statt eine Gruppe von Containern in einer reservierten EC2-Instanz auszuführen, für die Sie unabhängig von der Aktivität des Codes innerhalb dieser Instanz bezahlen, können Sie Ihren Code in Lambda implementieren. Lambda wird nur geplant und ausgeführt, wenn es notwendig ist (d. h. ausge- löst durch eine Ereigniswarteschlange). Mit Lambda definieren Sie die Ereigniswarteschlange, die Sie zu Ihrer Funktion hinzufügen wollen, und wenn das Ereignis eintritt, plant Lambda Ihre Funktion, führt sie aus (wodurch möglicherweise Ereignisse in War- teschlangen erstellt werden, die andere Funktionen auslösen) und beendet die Funktion beim Exit. Tools für die Serviceerkennung sind für die Koordination all dieser Services erforderlich, ohne dass eine langwierige manuelle Konfiguration im gesamten Cluster notwendig ist. Im Kern ist ein Erkennungsservice ein persistenter Schlüs- selwertspeicher, der selbst skalierbar und fehlertolerant sein muss, damit er nicht zu einem Engpass oder Single Point of Failure wird. Tools für die Serviceerkennung können auf ver- teilten Schlüsselwertspeichern wie ZooKeeper und etcd erstellt werden, bei denen sich Services selbst registrieren, sodass andere Services ihre Endpunkte finden können. Consul von HashiCorp ist ein weiteres verfügbares Tool. Dabei handelt es sich um ein Serviceerkennungssystem mit Batterien, das horizontal skalierbar ist und Statusprüfunge [XXY[[[Z[\\[\Y\\[0 \UT\XH[^H\[X[][ۈZ][[]\Y[Y\[[YH[U[XH[\KBY[Y\[ Z[Z]\Z\\Z\Y[XTˈ0\[UP[^KT\XH훛[YHZ[^KQ\Y\Y\[[Z[[[]\YKBY\[[\[[\0\Z[HZZHۈYKBY\[XYZ[]Y\Y[\[[š훛[YHZ[^KQ\\ۘ[\Y\[ZKBY[Z\H훛[YH]YZ[XHZ\HZ[[[]\Y[Y\[[\[[ZH[H[^HZB\]Yܙ\[8'[^KYZ\]\[\Y\[B\'Z]Z[[H[\Y\[[]][]Z[Y[Y[ܝ] Z[HH\ۘ[\Y\[훛B[\[Y[Y\\[[[HZ[[[H[^KT\BXHY[Y\\ \]\8'p\[['\XYY[[ 8'YZ\]\[\Y\[B\' H\Z Y\H훛[\\ޚX][ۈZ[\XX\[]\[YHZ[H[[ۈ]\0 YH\Z][]Z]Z[[H[[HXpH\Z[[\[HZ]\^[[\Z[ۙ[YHY^Y[\[ ]YZ\0\X[\Z][\[p[[HۙZH\[\\[YHܝ[T PY\[H\YZY[HTR N