Containerisierung

Wie Microservices gegen Provider-Lock-in helfen

25.08.2020
Von   
Branimir Brodnik schreibt als Experte zu Sourcing-Themen in der IT in Zeiten von Cloud und Digitalisierung. Er ist Gründer und geschäftsführender Gesellschafter der microfin Unternehmensberatung GmbH und weist eine über 20-jährige Berufserfahrung in den Bereichen Financial Services und Consulting auf.
Containerisierung und Microservices helfen nicht nur beim strukturierten Übergang in die Cloud, sondern sind auch ein probates Mittel gegen den gefürchteten Provider-Lock-in.
Plug'n'Play - Standardisierung durch Software-Container macht den Plattform- und Providerwechsel erheblich leichter.
Plug'n'Play - Standardisierung durch Software-Container macht den Plattform- und Providerwechsel erheblich leichter.
Foto: AurelioaPhoto - shutterstock.com

"Cloud first" ist heutzutage in aller Regel fester Bestandteil jeder IT-Strategie. Dieser Trend hat sich 2020 noch weiter beschleunigt. Eine Verlagerung von Anwendungen in die Cloud entpuppt sich häufig als ein Entwicklungsprojekt, wenn alle Vorteile der IT-Wolke voll genutzt werden sollen. Es ist nicht damit getan, eine bereits bestehende Anwendungsinfrastruktur einfach eins zu eins auf eine vergleichbare Infrastruktur in der Cloud abzubilden. Meist müssen die entsprechenden Applikationen in aktuelleren Programmiersprachen neu entwickelt werden.

Alles neu macht die Cloud

Herausforderungen dieser Art und die damit verbundenen Risiken sind in der Unternehmens-IT nicht neu. Viele Verantwortliche werden sich zum Beispiel an die Anwendungsportierungen von IBM Mainframes auf verteilte "Open-Systems"-Server-Infrastrukturen anderer Hersteller erinnern. In den Anfängen der IT wurden Anwendungen monolithisch entwickelt. Alle Eingabe-, Verarbeitungs- und Ausgabefunktionalitäten waren in einem Programmcode abgebildet. Insbesondere im Zuge der genannten Portierungen ging man dazu über, die Schnittstelle zum Anwender, die Verarbeitung der Anwendung und die Datenhaltung voneinander zu trennen ("Three-Tier-Modell").

Die Ausläufer dieser Softwarearchitektur sind heute noch aktuell – aber für einen Betrieb in der Cloud wenig passend. Das liegt unter anderem daran, dass sie eine On-Premises-Infrastruktur abbildet, die in dieser Form in der Cloud gar nicht mehr vorhanden ist. Es ist zwar durchaus möglich, Cloud-Anwendungen auch als On-premises-Abbild zu realisieren. Aber das ist aufwendig, unflexibel und negiert damit einen der großen Vorteile der Cloud: die leichte Portierbarkeit. Ohne diese Portierbarkeit steigt wiederum die Bindung der Anwender an einen einzelnen Cloud-Provider und damit die Abhängigkeit von diesem externen Partner.

Lesen Sie mehr zum Thema Microservices und Container-Techniken:

Deshalb denken Unternehmen im Zuge der Migration in die Cloud intensiv über neue Architekturprinzipien für ihre Softwarelandschaft nach – falls diese monolithisch oder nach dem herkömmlichen Three-Tier-Modell implementiert wurde. Das kommt dann einem Redesign von Anwendungen gleich – ein sogenannter "Full-rebuild"-Ansatz.

Container statt Monolithen

State of the Art ist heutzutage, Anwendungen auf möglichst kleine Funktionsblöcke aufzuteilen und diese gut separierbaren Funktionen als Microservices zu betreiben. Eine Vielzahl solcher Microservices kann von unterschiedlichsten Anwendungen genutzt werden, und Änderungen beziehungsweise Fehlerbehebungen lassen sich aus Gesamtanwendungssicht "minimalinvasiv" vornehmen, da in der Regel immer nur ein Microservice betroffen ist. Dies kommt agilen Entwicklungsmethoden und dem DevOps-Ansatz sehr zugute. Auch umfangreiche Anwendungen mit sehr vielen Nutzern können so während der Laufzeit "on the fly" aktualisiert werden. Große Anwendungen im Internet (wie zum Beispiel Amazon, eBay, Facebook, Google, Netflix usw.) werden auf diese Weise mindestens einmal, aber auch bis zu 100 Mal pro Tag aktualisiert.

Ein wesentlicher weiterer Vorteil von Microservices ergibt sich, wenn diese in betriebssystemunabhängigen Containern betrieben werden. Container stellen alle für die Verarbeitung von Programmcode erforderlichen Ressourcen unabhängig von physischen Servern und deren Betriebssystemplattformen zur Verfügung. Diese Architektur ermöglicht so einen einfacheren verteilten Einsatz sowie eine unkomplizierte und schnelle Portierbarkeit: Das wiederum reduziert aus Sicht von Sourcing-Strategen die Abhängigkeit von einzelnen Herstellern (zum Beispiel für Server und Betriebssysteme) oder aber die Abhängigkeit von einzelnen Hyperscalern (zum Beispiel Microsoft, AWS, Google), da man seine Programme in den Containern schnell und meist ohne größere Abhängigkeiten von Cloud A nach Cloud B verschieben kann (die Migration der Daten mal außen vor gelassen).

Lesen Sie mehr über die Sicherheit in Container-Umgebungen:

Container wie beispielsweise Docker, eine freie Software der Apache Software Foundation, passen somit nicht nur perfekt zu einem auf Microservices basierten Software-Architekturansatz, sondern wirken auch weitgehend einem bei vielen IT- und Einkaufsorganisationen gefürchteten Supplier- beziehungsweise Provider-Lock-in entgegen.

Microservices brauchen eine gute Verwaltung

Für den Betrieb und die Verwaltung von Myriaden von Microservices benötigt man allerdings eine Management-Software, die hilft, den Überblick zu behalten und die Microservices zu orchestrieren. Bekanntester und beliebtester Vertreter ist derzeit Kubernetes der Cloud Native Computing Foundation. Diese Open-Source-Software unterstützt durch Automatisierung den Microservices-Betrieb – vom Einrichten, Starten, Überwachen bis hin zum Skalieren sowie der Sicherstellung von Hochverfügbarkeit.

Wird das Ganze auch noch mit einer sogenannten CI/CD-Pipeline (Continuous Integration, Continuous Delivery und Continuous Deployment) kombiniert, lassen sich in Container-Umgebungen fabrikähnliche Verfahren von der Software-Entwicklung über das Testing bis hin zum automatisierten Deployment von Software realisieren. Die Bereitstellung und der Betrieb von verteilten und plattformunabhängigen Anwendungen wird also zukünftig stark erleichtert, indem manuell installierte Server, Betriebssysteme, Storages usw. durch automatisch erzeugte und bereitgestellte Instanzen ersetzt und automatisch verwaltet werden.

Microservices und ihre Bündelung in Containern haben also nicht nur aus technischer und betrieblicher Sicht hohe Effizienzpotenziale bei der Migration in die Cloud. Sie helfen auch dabei, dass sich Unternehmen nicht in Abhängigkeiten von Cloud-Anbietern begeben müssen und ihre Cloud-Sourcing-Strategien erheblich flexibler gestalten können – Voraussetzung hierfür ist jedoch, dass man sich von den zum Teil stark proprietären funktionalen Angeboten der Cloud-Anbieter (zum Beispiel aus dem KI-Bereich) nicht verführen lässt. (ba)