Interview mit Jan Mischlich und Benjamin Rank

„Container sind aktuell die einfachste Möglichkeit, Applikationen zwischen Cloud- oder Private-Umgebungen zu portieren“

„Container sind aktuell die einfachste Möglichkeit, Applikationen zwischen Cloud- oder Private-Umgebungen zu portieren“

Interview mit Jan Mischlich und Benjamin Rank

„Container sind aktuell die einfachste Möglichkeit, Applikationen zwischen Cloud- oder Private-Umgebungen zu portieren“


Nicht erst seit der Übernahme von Red Hat durch IBM schwirrt der Begriff Hybrid Cloud durch die Entwicklerszene. Wie ein solcher Hybridansatz tatsächlich durchgeführt werden kann, erklären Jan Mischlich und Benjamin Rank im Interview zur W-JAX 2018. Unsere Speaker gehen dabei auch auf die Vor- und Nachteile aktueller Container-Technologien in diesem Zusammenhang ein.

JAXenter: In eurer Session auf der W-JAX 2018 erklärt ihr, wie ihr für das neue Online-Only-Angebot von ARD und ZDF die IT-Infrastruktur erneuert habt. Dabei kommt nun eine Microservices-Architektur zum Einsatz. Warum habt ihr den Monolithen abgeschafft?

Jan Mischlich & Benjamin Rank: Bei FUNK ging es nicht um die Portierung einer bestehenden Anwendung in eine Microservices-Architektur. Wir sind im Projekt auf der grünen Wiese gestartet, haben uns aber für die Einführung zunächst für einen Betrieb in der Cloud entschieden. So konnten wir in der Anfangsphase des Projekts die Infrastruktur sehr frei und flexibel gestalten. Es war aber von Beginn an geplant, mittel- bis langfristig auf einen Hybridansatz zu schwenken, da Teile der Anwendungslandschaft nur intern betrieben werden sollten. Durch den Start in der Cloud konnten wir in der Entwicklung schnell Erfahrungen mit Kubernetes und den anderen eingesetzten Technologien sammeln, um zu entscheiden, ob die Vorteile den betrieblichen Mehraufwand für den Aufbau der privaten Umgebung rechtfertigen.

JAXenter: Ihr habt also mit einem Cloud-Only-Ansatz begonnen und die Infrastruktur anschließend in einen Hybridansatz überführt – wie ging das vonstatten?

Jan Mischlich & Benjamin Rank: Dadurch, dass der Hybridansatz von Beginn an das Ziel war, konnten wir die Architektur entsprechend schneiden, um bestimmte Aspekte bzw. Funktionen in der Private- und/oder Public-Cloud-Umgebung zu betreiben. Knackpunkte bei dem Betrieb einer Applikation in zwei Zonen sind die Datensynchronisation, sowie das Load Balancing zwischen den beiden Zonen.

Gegenüber einem klassischen Betrieb ist die Cloud viel dynamischer.

Nach dem CQRS-Pattern haben wir die Services in Read- und Write-Services aufgeteilt. Ziel war, Write-Services mittelfristig nur in der Private-Umgebung und Read-Services in beiden Umgebungen betreiben zu können. Durch Master-Slave-Replikation der Datenbank von der Private- in die Public-Umgebung wurde eine gleiche Datenbasis in beiden Umgebungen sichergestellt. Als Datenbank kam MongoDB zum Einsatz. Bei der Umstellung wurden die Write-Services und der Master-Knoten der Datenbank in die Private-Umgebung umgezogen. Synchrone Kommunikation zwischen den Zonen sollte man vermeiden, da die Latenzen über WAN-Strecken deutlich größer sind.

Der externe Traffic lässt sich zwischen den Zonen über DNS-Load-Balancing oder über einen CDN-Anbieter steuern.

JAXenter: Ihr setzt auch auf Docker und Kubernetes, was ist der Vorteil dieser Tools?

Jan Mischlich & Benjamin Rank: Docker erleichtert einem in vielen Aspekten den Entwickler-Alltag, nicht nur beim Deployment. In heutigen Projekten hat man häufig mehrere Abhängigkeiten zu Infrastrukturkomponenten, neben der Datenbank z.B. Elasticsearch und Redis. Durch eine Container-Registry kann ich ein fertig konfiguriertes Image der benötigten Applikation einfach im Team verteilen. Der Installationsaufwand für den Entwickler ist minimal und er hängt nicht von externen Systemen ab. Auch Änderungen an der Konfiguration werden quasi automatisch verteilt. Weiterhin sind Container im Moment aus unserer Sicht die einfachste Möglichkeit, Applikationen zwischen Cloud- oder Private-Umgebungen zu portieren.

Der größte Vorteil von Kubernetes ist seine Ausgereiftheit und Flexibilität. Es ermöglicht den Betrieb von Applikationen mit einem Cloud-ähnlichen Komfort, ohne sich dabei zu sehr an einen Anbieter zu binden, um nur einige Vorteile zu nennen.

JAXenter: Die Google Container Engine wird als Cloud-Anbieter verwendet – was sprach für Google und gegen einen Wettbewerber?

Jan Mischlich & Benjamin Rank: Wir haben uns für Google entschieden, da zum damaligen Zeitpunkt die Google Container Engine das einzige Cloud-Angebot war, das Kubernetes Fully-Managed angeboten hat. So waren Aufwand für Administration und Betrieb minimal.

JAXenter: Welche Tipps habt ihr für Entwickler, die von einem klassischen Ansatz in die Cloud wechseln wollen? Welche Kernbotschaft sollte jeder aus eurer Session mit nach Hause nehmen?

Jan Mischlich & Benjamin Rank: Gegenüber einem klassischen Betrieb ist die Cloud viel dynamischer. Daran muss man sich erstmal gewöhnen. Ansonsten liegen die Herausforderungen bei statusbehafteten Applikationen. Statuslose Applikationen lassen sich im Verhältnis relativ einfach migrieren.

JAXenter: Vielen Dank für das Interview!

Jan Mischlich

 

Benjamin Rank