
Patrick Plattner
Principal Architect
In diesem Blogbeitrag geht es um die schrittweise und einfache Migration Deiner Applikationen von einem lokalen Netzwerk in die Public Cloud mit der Unterstützung durch ein Service Mesh.
Autor: Patrick Plattner
Der Weg in die Public Cloud ist eine kontinuierliche Reise. Applikationen werden nicht alle auf einmal, sondern schrittweise in die Public Cloud migriert. Das stellt die IT vor neue Herausforderungen. Eine davon ist, dass sich die Netzwerke (und eventuell auch die Verschlüsselung, z.B. http zu https), unter welchen die Applikationen erreichbar sind, während der Migrationsphase ändern. Hier kommt das Service Mesh ins Spiel. Das Service Mesh ist ein programmierbarer Infrastruktur-Layer und bietet effiziente Lösungen rund um die Herausforderungen von verteilten und heterogenen Applikationen. So stellt das Service Mesh für Applikationen die Kernfunktionalität bereit, um die Verbindung zu sich dynamisch ändernden Endpunkten von Applikationen sicherzustellen.
Der Begriff Service Mesh beschreibt das Zusammenspiel von Softwarekomponenten, die die Kommunikation zwischen den verschiedenen Anwendungen in einer verteilten Architektur steuern. Service Mesh bietet die Möglichkeit, die Sicherheit durchzusetzen, den Netzwerkverkehr zu überwachen, das Routing zu steuern und insgesamt die Entwicklung und den Betrieb von Anwendungen zu vereinfachen, ohne dabei die Applikationen selbst zu verändern. Service Mesh ist eine Weiterentwicklung von Proxys, Edge-Router und Load Balancer, die nun auch für das Routing des Netzwerkverkehrs zwischen den Applikationen, die Verwaltung von TLS/SSL-Zertifikaten und die Bereitstellung von Metriken aus dem Netzwerkverkehr verantwortlich sind.
Die Migration bestehender Applikationen in die Public Cloud ist eine anspruchsvolle Aufgabe und birgt Herausforderungen rund um die Kommunikation zwischen Applikationen. Eine davon ist, dass migrierte Applikationen unter einer neuen Domain erreichbar sind, Pfade sich ändern oder man auf eine verschlüsselte Kommunikation wechselt. Jede dieser Änderungen am Endpunkt einer Applikation betreffend Domain, Port, Pfad oder Protokoll führt zu Änderungen an allen Applikationen, die die zu migrierende Applikation nutzen.
Zum Beispiel wird Applikation B in die Cloud migriert und erhält eine neue Adresse (von http://applications.company.ch:8080/app-b/ zu https://app-b.cloud.company.ch/). Applikationen, welche auf B zugreifen, müssen nun ihre Konfiguration ändern und neu deployed werden, damit sie Applikation B unter der neuen Adresse erreichen können. Das heisst, dass die Migration genau geplant und koordiniert werden muss. Denn ein Fehler in der Konfiguration führt zum Ausfall der Applikation. Und mit jeder zusätzlichen Applikation, die migriert wird, erhöht sich der Aufwand und das damit verbundene Risiko.
Da das Service Mesh die gesamte Kommunikation unter den Applikationen vermittelt, kann es zur Abstraktion der reellen Endpunkte der Applikationen verwendet werden. Damit kann das Problem der sich stets ändernden Konfiguration und deren Anpassung bzw. Deployment aufgelöst werden. Denn das Service Mesh abstrahiert das Routing zu den realen Endpunkten, ohne dass die aufrufenden Applikationen wissen müssen, ob die Applikation noch im lokalen Netzwerk läuft oder schon in der Public Cloud ist. Dadurch können Sie die Applikationen schrittweise in die Cloud migrieren, ohne dabei ständig die Konfigurationen der aufrufenden Applikationen verändern und neu deployen zu müssen. Das Service Mesh bewerkstelligt dies, indem ein Proxy mit jeder Applikation deployed wird, der den Datenverkehr abstrahiert. Alle Proxys werden vom Service Mesh verwaltet.
Mit nachfolgender Abbildung möchte ich die Migration am Beispiel von Applikation B aufzeigen.
Situation vor der Migration von B (graue Zahlen):
Situation nach der Migration von B (gelbe Zahlen):
Neben der Abstraktion bietet das Service Mesh auch eine wichtige Funktion, um die Sicherheit und Compliance durchzusetzen. Die Proxys des Service Mesh können so konfiguriert werden, dass sie untereinander nur verschlüsselt kommunizieren. Dadurch können auch Applikationen eine sichere Verbindung aufbauen, die keine Verschlüsselung unterstützen. Somit stellt das Service Mesh eine Garantie für verschlüsselten Traffic.
Neben dem in diesem Blog beschriebenen Nutzen gibt es aber auch einige Einschränkungen, die Sie kennen sollten, bevor Sie mit der Migration beginnen.
Mithilfe eines Service Mesh kann der Migrationsprozess durch Kontrolle und Abstraktion der internen Kommunikation zwischen Applikationen drastisch vereinfacht und weitestgehend automatisiert werden. Dadurch ist es für die aufrufende Applikation irrelevant, ob die Applikation schon migriert ist oder nicht, das Service Mesh routed die Kommunikation an den richtigen Endpunkt. Dies ermöglicht eine einfache und schrittweise Migration von Applikationen in die Cloud. Durch das Erzwingen von verschlüsselter Kommunikation leistet das Service Mesh auch einen wichtigen Beitrag zum Erfüllen der Sicherheits- und Compliance-Anforderungen.