In der Applikations-Entwicklung ist derzeit kaum ein Thema so angesagt wie Micro ServicesMicro Services sind unabhängige Softwarebauteile, die genau eine Funktion erfüllen und über eine einheitliche Schnittstelle mit den anderen Micro Services bzw. Modulen der Software kommunizieren. Micro Services lassen sich durch…. Diese neue Methode soll unter anderem das Deployment vereinfachen, die Skalierbarkeit erhöhen und die Fehlerbehebung beschleunigen. Wir werden in diesem Beitrag den neuen Entwicklungsprozess näher unter die Lupe nehmen und die Vorteile kritisch diskutieren, um Ihnen einen tiefgehenden Einblick in die Thematik zu geben. Anschließend liefern wir noch einen Ausblick, inwiefern das Modell der Micro Services auf andere Unternehmensbereiche übertragen werden könnte.
Micro Services vs. Monolithische Architektur
In der Vergangenheit wurde in der App-Entwicklung vor allem auf monolithische Architekturen gesetzt. Eine monolithische Architektur besteht aus einer einzigen Code-Datei, die beim Deployen ausgeführt wird. Werden Änderungen beispielsweise Optimierungen oder Fehlerbehebungen am Code vorgenommen, so muss die gesamte Applikation neu ausgerollt werden. Außerdem sind bei Monolithen die einzelnen Komponenten in der Regel voneinander abhängig, wodurch eine kleine Änderung große Auswirkung auf den Rest der Anwendung haben kann. Der Entwicklungsprozess ist daher sehr aufwendig und die einzelnen Projektteams sind darüber hinaus auf das Ergebnis anderer Teams angewiesen: Die Programmierer schreiben den Code, die Tester testen und Operations kümmern sich um Betrieb und Wartung. Wird ein Fehler beim Testen oder im Betrieb erkannt, muss dieser den Programmierern gemeldet werden, diese beheben ihn, geben die neue Version zum Testen weiter, bevor das Update ausgerollt und in den aktiven Betrieb überführt werden kann. Bereits hier zeigt sich, dass der Entwicklungsprozess, insbesondere bei großen Anwendungsprojekten, extrem groß sein kann und erhebliche zeitliche und personelle Ressourcen beansprucht.
Heutzutage geht der Trend jedoch dahin, dass von Kunden ein schneller Problemlösungsprozess erwartet wird und das möglichst ohne Einschränkungen in der Handhabung. Dieser Anforderung können monolithische Architekturen nur schlecht gerecht werden, weshalb sich sogenannte Micro Services immer mehr etablieren. Denn im Gegensatz zu Monolithen basieren Micro Services auf unabhängigen Bauteilen, die über Schnittstellen wie der REST-API miteinander kommunizieren. Dadurch entsteht der Vorteil, dass die Projektteams, in der Regel bestehend aus 5 bis 7 Personen, mit ihrer bevorzugten Programmiersprache arbeiten können und lediglich auf die korrekte Namenskonvention der genutzten API achten müssen.
Die Projektteams können somit unabhängig voneinander an ihrem Code arbeiten und diesen aufgrund der Kürze problemlos testen – Micro Services enthalten teilweise nur 10 bis 100 Zeilen Code. Das typische Merkmal eines Micro Service besteht darin, dass der Service nur für eine einzige Aufgabe im Gesamtsystem zuständig ist. Ein Service ist daher mit einer „Klasse“, die in einer monolithischen Architektur verbaut ist, vergleichbar, nur dass sie völlig losgelöst vom Rest des Codes arbeiten kann. Dadurch stellen Micro Services letzten Endes eine andere Ausprägung von modularer Softwareentwicklung dar.
Vorteile von Micro Services
Aufgrund ihrer elementaren Eigenschaften von Kürze und Unabhängigkeit, bieten Micro Services diverse Vorteile in der praktischen Umsetzung. Wir gehen daher an dieser Stelle auf die wichtigsten Aspekte ein:
Treten Fehler in einem System aus Micro Services auf, ist direkt klar, welcher Service die Ursache ist. Die Dauer der Fehlersuche wird dadurch erheblich reduziert. Im zweiten Schritt, der Fehlerbehebung, muss lediglich ein sehr überschaubarer Code-Abschnitt betrachtet werden, wodurch die Problembehebungszeit ebenfalls deutlich gesenkt wird.
Während bei herkömmlicher Software der Deploymentprozess teilweise extrem langwierig ist, da mehrere tausend Zeilen Code ausgelesen werden, sind es bei Micro Services nur wenige Zeilen. Um die Bereitstellung noch weiter zu vereinfachen, lassen sich viele Micro Services zu Containern zusammenfassen. Dadurch reduziert sich der Deploymentprozess um ein Vielfaches.
Die Unabhängigkeit bei Micro Services bietet gleich zwei Vorteile. Erstens gibt es nahezu keine Abhängigkeit zu anderen Micro Services, es muss lediglich eine Integration in das Gesamtsystem sichergestellt werden. Das System ist dadurch weniger fehleranfällig, da Abhängigkeiten innerhalb des Gesamtsystems bewusst hergestellt werden müssen. Zweitens sind die Entwicklerteams unabhängig voneinander, wodurch verschiedene Programmiersprachen, je nach Kompetenzen oder Anforderungen, genutzt werden können.
Die technische Koordination wird bei Micro Services erheblich reduziert, da die Teams nicht mehr das große Ganze im Blick haben müssen, sondern sich auf die einzelnen Services konzentrieren können. Bei monolithischen Architekturen muss die Projektleitung beispielsweise immer darauf achten, dass beispielsweise gleiche Bibliotheksversionen oder passende Frameworks genutzt werden. Bei Micro Services hingegen können die Teams autark voneinander arbeiten und in der Gesamtkoordination muss nur die Integration sichergestellt werden.
Aufgrund der Kommunikation über Schnittstellen, können die einzelnen Micro Services so programmiert werden, dass sie sich beim Eintreten von vordefinierten Ereignissen vom restlichen System isolieren. Dadurch entsteht ein sehr robustes Gesamtsystem, das die Ausfallsicherheit steigert.
Beispiel von Micro Services anhand eines Webshops
Ein bekanntes Beispiel für das Zusammenspiel von Micro Services, das wir Ihnen nicht vorenthalten wollen, ist die Bereitstellung eines Webshops. Jede Komponente des Shops wird durch einen einzelnen Micro Service realisiert. Eine einzelne Funktion im Shop wird durch einen Micro Service abgebildet und hat ausschließlich eine einzige Aufgabe. Die Suchfunktion muss passende Ergebnisse ermitteln, der Warenkorb muss die gewünschten Produkte speichern, der Kaufprozess muss die Daten an CRM und/oder ERP übertragen, der Verarbeitungsprozess muss sicherstellen, dass die Ware versendet wird und so weiter.
Eine Verknüpfung zwischen zwei Services möchten wir anhand von Projektempfehlungen verdeutlichen: Die Daten aus der Sucheingabe werden in diesem speziellen Service mit Erfahrungswerten verglichen, sodass Produkte angezeigt werden, die mit größtmöglicher Wahrscheinlichkeit dem Kunden gefallen. Die Daten werden anschließend an ein „Anzeigemodul“ weitergegeben, in dem die berechneten Produkte eingeblendet werden. Zwischen den einzelnen Services bestehen ausschließlich die Abhängigkeiten, dass die Daten der Sucheingabe weiterverarbeitet werden. Die Kernfunktion des jeweiligen Micro Service arbeitet jedoch völlig autonom.
Dieses Beispiel stellt nur eine grobe Übersicht dar, die noch deutlich verfeinert werden könnte. Es geht in diesem Fall jedoch darum, aufzuzeigen, dass jeder Vorgang in sich geschlossen ist und lediglich die für andere Micro Services benötigten Informationen weitergibt.
Risiken und Nachteile von Micro Services
Wie bereits erwähnt, ändert sich durch den Einsatz von Micro Services die Teamstruktur. Anstatt weniger großer Teams gibt es kleine autonome Projektteams. Dabei erhält jedes einzelne Team mehr Verantwortung, da es selbstständig für das Ergebnis verantwortlich ist – so zumindest die Theorie. Das stellt ein erhöhtes Risiko dar, denn auf beiden Hierarchieebenen muss diese Änderung der Teamstruktur verstanden und gelebt werden. Nur wenn der Vorgesetzte bereit ist, ein Stück der Verantwortung abzugeben und die Mitarbeiter diese annehmen, kann die gewonnene Freiheit zielführend genutzt und der Erfolg des Projekts gewährleistet werden.
Obwohl die Unabhängigkeit von Micro Services ihre Vorteile hat, entstehen dadurch auch gleichzeitig Risiken, welche die IT-Abteilung vor große Herausforderungen stellen. Der Testprozess einzelner Services und das Deployment werden zwar an sich vereinfacht, es können jedoch auch Probleme am Gesamtsystem auftreten. Es gilt daher nach jedem Update eines Service das Gesamtsystem auf Funktionalität zu prüfen. Durch kürzere Update- und Änderungszeiten der jeweiligen Services erhöht sich gleichzeitig die Anzahl der Gesamttests. Ohne eine definierte Automatisierungsstrategie ist die Anzahl an Tests in vielen Fällen beim Einsatz von Micro Services nur schwer zu handhaben.
Fazit und Ausblick
Abschließend lässt sich sagen, dass der Einsatz von Micro Services mehr Vorteile bietet als Risiken birgt. Dennoch sollte vor dem Entwicklungsumstieg jedes Unternehmen den Einsatz genau prüfen, da der neue Ansatz mit der Teamphilosophie übereinstimmen muss. In der Regel müssen neue Koordinationsformen etabliert werden und die Mitarbeiter die neue Verantwortung von autonomer Arbeit akzeptieren. Sind diese Voraussetzungen gegeben, bietet eine Micro Service Architektur die angesprochenen Vorteile wie schnellere Fehlerbehebungszeiten, schnellere Updatemöglichkeiten und verbesserte Ausfallsicherheit durch isolierte Systeme.
Aufgrund der Vielzahl an Vorteilen, möchten wir abschließend noch eine Einschätzung geben, ob sich das Modell von Micro Services auch auf andere Unternehmensbereiche übertragen lässt. Es lässt sich bereits jetzt sagen, dass ähnliche Modelle in modernen Unternehmenskulturen in Ansätzen zu finden sind. Im Zuge von New Work Konzepten setzen einige Firmen bereits darauf herkömmliche Teamstrukturen abteilungsübergreifend aufzubrechen und sogenannte virtuelle Teams zu bilden. Die Teams sind dabei nicht mehr standortgebunden, sondern können über die ganze Welt verteilt sein. Außerdem wird nicht mehr in Abteilungen im herkömmlichen Sinn gearbeitet, sondern die Mitarbeiter werden aufgrund ihrer Kompetenzen sowie Stärken einem temporären Projektteam zugeordnet, das ein gemeinsames Ziel verfolgt. Analog zu den Micro Services handelt es sich um Einheiten, die nur ein spezielles Ziel verfolgt, welches sich in das Gesamtziel des Unternehmens einfügt. Durch die Ausrichtung und Kombination der individuellen Stärken der einzelnen Teammitglieder, lässt sich die Produktivität in vielen Fällen steigern. Ähnlich wie bei Micro Services ist es also auch bei anderen Teamarbeiten möglich durch die Fokussierung auf einen speziellen Teilbereich die Effektivität des Gesamtsystems zu verbessern.
Um die Effektivität von virtuellen Teams jedoch zu gewährleisten, sind Technologien notwendig, die einen reibungslosen Zugriff auf alle Unternehmensdaten und -Anwendungen ermöglichen, ohne dass Performanceprobleme auftreten. Für solche Anforderungen bieten wir von der Makro Factory einen „Desktop as a Service“ an, um Mitarbeitern die notwendige Basis für eine standortunabhängige Zusammenarbeit zu ermöglichen und Unternehmen eine flexible Arbeitsplatzlösung zu planbaren Kosten bereitzustellen.