Microservices

Schnell auf Veränderungen reagieren

Was sind Microservices?

Was sind Microservices?

Microservices sind ein Resultat der DevOps Bewegung und repräsentieren einen neuen Ansatz in der Softwareentwicklung. Im Gegensatz zur traditionellen monolithischen Softwareentwicklung unterstützen Microservices nur lose miteinander verbundene Architekturen und die voneinander unabhängige Skalierung einzelner Komponenten. Die Defintion von Microservice variiert, jedoch haben sich einige Standards herauskristallisiert.

Jeder Microservice

  • Nutzt technologie-agnostischen Protokolle (z.B. HTTP)
  • Kann unabhängig von anderen Microservices integriert werden
  • Hat ein/e spezifische/s Aufgabe, Ziel oder Fähigkeit
  • Kann einfach ersetzt werden
  • Kann jede Programmiersprache, Datenbank oder Bibliothek nutzen
  • Enthält seine eigene Business Logik

Monolithische Softwareentwicklung steht Microservices in nichts nach, beide haben Vor- und Nachteile. Allerdings favorisieren viele Unternehmen Microservices, wenn ein großer Bedarf nach Agilität und Skalierbarkeit besteht. Microservices können über alle Industriebereiche hinweg implementiert werden, um schnell neue Services aufzubauen, Cloud Infrastrukturen zu skalieren oder monolithische Software in kleinere und einfach zu managende Anwendungen aufzuspalten. Der Hype um Microservices und der zunehmende Einsatz ist hauptsächlich auf die Anpassungsfähigkeit an sich ständig wechselnde Anforderungen zurückzuführen.

Das „Micro“ in Microservices hängt vom Umfang der Lösung ab und steht nicht stellvertretend für die Größe der Anwendung oder der Daten. Wird der Umfang reduziert, kann ein kleines Team den Microservice erstellen, verwalten und betreiben. Das Team hat dadurch einen kompletten Überblick über die Funktionalitäten und kann somit schnell auf sich ändernde Nutzerwünsche eingehen. Dies wird dadurch ermöglicht, dass jeder Microservice seine eigene Logik, API und Daten besitzt. Jeder Microservice kann daher individuell deployed, aktualisiert und skaliert werden – ohne dabei andere Services oder Applikationen zu beeinträchtigen.

Was Microservices benötigen

Agile Teams

Der wesentliche Vorteil von Microservices liegt in der Geschwindigkeit. Es ist daher unerlässlich, dass das zuständige Team mit agilen Methoden arbeitet und schnelle Releasezyklen einhält. Team Mitglieder sollten Fähigkeiten in einem breiten Feld aufweisen, allerdings immer noch auf einen bestimmten Bereich spezialisiert sein, um auf sich ändernde Anforderungen aus dem Unternehmen reagieren zu können.

DevOps Kultur

Microservice Teams liefern konstant neue Iterationen, die eine flexible Betriebsstrategie benötigen. Prozesse in der Zusammenarbeit zwischen Softwareentwicklern und IT Betrieb müssen daher optimiert werden. Definierte Standards können dabei helfen, da keine alleinige Plattform oder einzelne Tools diesen Anforderungen genügen.

Die richtige Infrastruktur

Microservices benötigen eine stabile Betriebsumgebung. Die Infrastruktur muss daher nicht nur das konstante Deployment von Microservices zum Skalieren bestehender Services unterstützen, sondern auch umgehend neu in Betrieb genommene Microservices. Viele Unternehmen bauen dazu auf eine adaptive Infrastruktur aus Containern, PaaS und verschiedenen Cloud Anbietern.

Vorteile

Vorteile

Die Geschäftswelt ändert sich schneller den je zuvor und die IT muss damit mithalten. Dieses Verlangen nach Geschwindigkeit ist der Haupttreiber hinter Microservices. Da diese von kleinen Teams im Hintergrund betreut werden, kann schnell auf sich ändernde Anforderungen reagiert werden. Darüber hinaus skalieren Microservices effizienter als monolithische Software, da jeder Service unabhängig betrieben werden kann.

Skalierung im Vergleich: Monolith vs. Microservices

Die Fähigkeit zu skalieren ist eine der Schlüsselvorteile von Microservices im Vergleich zu monolithischer Software, was in der unteren Abbildung einfach ersichtlich ist. In Kombination mit Container Management Lösungen wie Kubernetes oder Docker Swarm können auch einzelne Services automatisch hochskaliert werden, um Lastspitzen abzufangen – und natürlich auch wieder heruntergefahren werden.

Im Vergleich zu einer monolithischen Lösung erlauben Microservices Flexibilität und die freie Wahl von Entwicklern. Da jeder Microservice unabhängig ist, kann jedes Team die Technologie verwenden, die sie am geeignetsten zur Bewältigung der Herausforderung erachtet: D.h. jede beliebige Programmiersprache, Datenbank oder Bibliothek kann zum Erreichen des Ziels verwendet werden, ohne die Abhängigkeiten eines großen Softwareprojekts.

Das erhöht nicht nur die Effektivität, sondern ermöglicht es auch Unternehmen ein breites Spektrum an Entwicklern einzustellen, die vorher nicht ins Raster von monolithischen Software Ansätzen gepasst haben. Microservices ermöglichen einen vielschichtigen Ansatz und führen zu produktiveren und glücklicheren Entwicklern, während neue Technologien eingeführt werden, ohne den Status quo zu beeinträchtigen.

Jedes Team wählt die Tools für ihren Microservice selber aus.

Da Teams eine relativ klein sind und der zu betreuende Microservice lediglich einen begrenzten Umfang umfasst, kann jeder Microservice schnell an sich ändernden Anforderungen angepasst werden, ohne die meist sehr komplexen Systeme noch weiter aufzublähen. Die konstante Evolution von Microservices ist der agile Idealzustand, welcher die denkbar größte Verzahnung von IT und geschäftlicher Ausrichtung ermöglicht.

Das Team verwaltet seinen Microservice über den kompletten Lifecycle.

Das Team hinter einem Microservice ist vom Konzept über das Deployment bis zum Abschalten zu 100% für diesen verantwortlich. Microservices können deaktiviert werden, wenn sie keinen weiteren Bedarf mehr decken, von einem anderen Microservice ersetzt werden oder wenn der Microservice in seiner bestehenden Form unrentabel ist.

Microservice Ansatz Traditionelle Software Entwicklung
„Mach´ nur eine Sache, aber mach sie richtig“ ist das Motto von Microservices, wobei dies nicht auf die Größe der Projekte reduziert werden sollte, sondern auf klare Zielstellungen und den beschränkten Umfang von Microservices abzielt. „Mach´ alles richtig“ – Traditionelle Software-Entwicklung erstellt umfassende Lösungen, um viele Anforderungen für eine Gruppe von Endnutzern zu erfüllen.
Lose Verzahnung – Microservices sind unabhängig und bleiben selbst weiter funktionstüchtig, wenn ein unterstützender Service nicht verfügbar ist. Enge Verzahnung – Systeme haben strikte Voraussetzungen und voneinander abhängige Komponenten. Die Software ist oft sehr unflexibel im Deployment.
DevOps – DEntwicklung und Betrieb operieren kooperativ im Team, um eine konstante und optimale Softwareauslieferung zu ermöglichen. Trennung von IT Betrieb und Entwicklung – Entwickler sind traditionell für den Code zuständig und der IT Betrieb dafür, dass dieser auch läuft.
Lebenszyklus abhängig vom Service – Jeder Microservice ist nur von sich selbst abhängig, d.h. jedes Team kann den Lebenszyklus selbst bestimmen. Da die Services einen kleineren Fokus besitzen, können Änderungen schnell umgesetzt werden, ohne von einem langfristigen Releasezyklus abhängig zu sein. Lebenszyklus abhängig von der Software – Monolithische Software hat allgemein längere Release-Zyklen aufgrund von starker Komplexität innerhalb der Anwendung. Änderungen gehen daher langsam vonstatten und Zyklen zur Implentierung sind starr.
Betriebskomplexität – Microservices reduzieren die Anwendungskomplexität, in dem sie technische Verpflichtungen zum IT Betrieb abwälzen. Dem kann durch neue Technologien entgegengewirkt werden, wie PaaS, Container Management und Cloud Services wie AWS, welche Microservices unterstützen. Anwendungskomplexität – In monolithischer Software ist es sehr komplex Änderungen vorzunehmen, das Deployment ist hingegen sehr einfach. Da es nicht so viele bewegliche Teile gibt, erfordert ein Monolith weniger Koordination wie Microservices.
Teams bestimmen die Tools – Die einzelnen Teams wählen die Tools aus, welche am besten zur Lösung passen und den Standards entsprechend. Vorgegebene Tools definieren den Standard – Lösungen müssen durch die Teams mit vorgegebenen Toolsets umgesetzt werden.
Herausforderungen

Herausforderungen

Nicht jede Organisation ist wie Netflix, daher sollte darauf hingewiesen werden, dass Microservices ihre eigene Komplexität besitzen und nicht jedes Problem lösen können. Tatsächlich sind monolithische Ansätze für gewisse Lösungen besser geeignet. Es ist daher wichtig zu evaluieren, ob es der richtige Weg ist, einen Monolith in kleinere Anwendungen aufzubrechen oder Microservices aufzubauen.

Die Erfahrung mit Microservices wird in Unternehmen von verschiedenen Faktoren bestimmt. Ein Microservice Ansatz ist in hohem Maße erfolgreich, wenn die richtigen Technologien, Methoden und die richtige Unternehmenskultur kombiniert wird. Jedoch sind die geeigneten Methoden und Tools von Unternehmen zu Unternehmen unterschiedlich und können sich von denen der Microservice Pioniere auch erheblich unterscheiden.

Agile Methoden meistern

Agile Methoden wie SCRUM und KANBAN sind seit einigen Jahren auf dem Vormarsch, dennoch sind sie trotz steigender Beliebtheit kein Erfolgsgarant. Wenn Ihr Unternehmen in der Vergangenheit bereits Probleme mit Agile hatte, sollten agile Projekte in kleinen Schritten angegangen werden. Bauen Sie so langsam Erfahrung mit Agile auf, um Ihr Unternehmen schrittweise zu transformieren, damit Microservices Sie erfolgreich unterstützen.

Um Unternehmen im erfolgreichen Umgang mit Agile zu unterstützen, erarbeitet ApiOmat zusammen mit Kunden in einem Workshop ein Pilotprojekt auf Basis von Design Thinking-Methoden. Wurde ein idealer Use-Case identifiziert und technisch evaluiert, kooperiert ApiOmat mit Ihnen bis das Projekt live geht. Lernen Sie von unseren Workshops und erreichen Sie die Agilität, um Ihr Business innerhalb von Wochen zu transformieren und nicht in vielen Monaten.

Fehler akzeptieren

Fehler passieren und treten in der Welt der Microservices besonders vermehrt auf, da es mehr „bewegliche Teile“ gibt. Dieser einfache Vergleich soll die Unterschiede zu traditionellen monolithischen Ansätzen verdeutlichen, in denen Software und Projekte so geplant sind, dass sie nicht fehlschlagen dürfen. Der Umschwung zu Microservices bedarf daher einem Paradigmenwechsel, aber auch im Ansatz wie Business mit digitalen Initiativen umgeht.

Aus der Perspektive von Business, sollten Microservices dem Prinzip „Schneller scheitern, um früher erfolgreich zu sein“ folgen. Microservices unterstützt Initiativen aus dem Business, jedoch werden nicht alle dieser Initiativen erfolgreich sein. Führungskräfte sollten daher mit einem „Minimum Viable Product“ (MVP) starten, welches sich schnell erfolgreich entwickeln lässt, aber auch einfach gestoppt werden kann, wenn sich die Idee nicht durchsetzt. Aus der Business Sicht heraus fällt es zwar schwer Fehler zu akzeptieren, allerdings ist dies eine Grundvoraussetzungen für Microservices.

Traditionelle Softwareentwicklung reflektiert traditionelle Business Ansätze hinsichtlich der Fehlervermeidung. Bei Microservices ist Fehlervermeidung jedoch nahezu unmöglich und je mehr Microservices im Einsatz sind, desto mehr Fehler treten auf. Das Ziel sollte daher darin bestehen, möglichst elegant zu scheitern. Software zu erstellen, die Fehler erlaubt kann eine Herausforderung sein, jedoch bestehen viele Tools, die den IT Betrieb und die Entwicklung damit erheblich erleichtern.

Einheitliche Standards und Flexibilität

Das zentrale Element beim Konzept von Microservices besteht darin, dass Teams Wahlfreiheit haben, mit welchen Tools sie arbeiten wollen – bei gleichzeitiger Implementierung von einheitlichen Standards und Prozessen. Es ist daher unerlässlich einen Mittelweg zu finden, dass Microservices den Verwaltungsaufwand reduzieren, gleichzeitig aber nicht zu viele Restriktionen schaffen, damit Entwicklern über alle Tools verfügen, die zur Erstellung von robusten Lösungen notwendig sind.

Die Faustregel lautet daher, Standards sollten nicht die Programmiersprache*, Datenbanken, Frameworks oder Bibliotheken diktieren, welche die Teams nutzen, sie sollten jedoch sicherstellen, dass die Integration in den laufenden Betrieb und die gesamte Microservice-Architektur nahtlos vollzogen werden kann. Standards sollten für die Deployment-Methode, die Kommunikation zwischen Microservices (REST, Message Broker, etc.), Versionierung usw. bestehen.

*Es ist speziell für Unternehmen zu empfehlen, die erst neu mit der Thematik vertraut sind, die Programmiersprachen auf die Populärsten (z.B. Java, C#, node.js) zu limitieren. Falls ein Teammitglied das Unternehmen verlässt und ein geschäftskritischer Microservice in Rust oder Dart geschrieben ist, fällt es unter Umständen schwer dieses Wissen zu ersetzen.

Silos vermeiden

Da Microservice von jeweils einzelnen Teams umgesetzt werden besteht die Gefahr, dass das Gesamtbild verloren geht. Es ist unwahrscheinlich, dass ein einzelner Microservice einen kompletten Service oder Anwendung abdeckt, daher besteht keine Notwendigkeit die Charakteristik von Silos für Microservices zu übernehmen. Werden bewährte Verfahren berücksichtigt, wie gründliche Dokumentierung und Standardisierung von APIs, kann die Schaffung von Silos vermieden werden.

Da Microservices miteinander verflochten sind, wäre es unwahrscheinlich, dass ein einzelner individueller Service zu einem Silo wird – zumindest gilt dies für Microservices in individuellen Geschäftszweigen. Jeder Microservice sollte daher nicht nur mit den Nutzern direkt kommunizieren können, sondern auch mit anderen Geschäftszweigen. Wenn Microservices einfach veröffentlicht und leicht zu erschließen sind, hilft dies weitere Microservices zu erstellen, die ähnliche Probleme lösen.

Mobilgeräte

Mobilgeräte

Das Ziel von Microservices sollte darin bestehen, Applikationen zu bauen, die sich schnell an die Anforderungen der Nutzer anpassen können. Oft steigt parallel zum Wachstum eines Unternehmens – oder dessen Angeboten – das Portfolio an Microservices schnell von mehreren zehn auf viele hunderte an. Damit jeder Geschäftsprozess on-the-fly angepasst werden kann, muss eine geeignete Methodik implementiert werden, so dass Apps, Websites, Chatbots, Digitale Assistenten für Kunden, Mitarbeiter oder Partner weiterentwickelt werden können.

Microservices sind zwar eigenständig, können aber erst durch eine sinnvolle Orchestrierung ihren Vorteil für eine optimale User-Experience entfalten. Eine App kann dabei zwei oder mehrere Microservices enthalten, die miteinander kommunizieren um den vollen Nutzen auszuspielen, was Entwickler vor große und neue Herausforderungen stellt. Damit das Endgerät der Nutzer mit allen Microservices kommunizieren kann, wird für jeden einzelnen eine API benötigt, oder eine konsolidierte Schnittstelle bzw. ein API-Gateway für das gesamte Unternehmen, um Endgeräten Zugriff zu ermöglichen. Diese beiden Ansätze verlangsamen jedoch die Innovationsgeschwindigkeit und erhöhen die Entwicklungszeit für Apps.

In den meisten Fällen erfordern neue Frontendanwendung ihr eigenes Backend, um die zusätzlichen Anforderungen der Endgeräte zu erfüllen, wovon jedoch Standard Microservices nicht betroffen sind. Darüber hinaus benötigen Apps für Endnutzer mobilfähige APIs, welche nur die notwendigen Daten verarbeiten, aber auch Zugriffsrechte, Authentifizierungen, Push und andere frontendspezifischen Anforderungen (Bildskalierung, Offline Handling…) verwalten können.

Backends für Endgeräte benötigen:

  • Offline Handling
  • Serverseitige Bildskalierung
  • Feingranulare ACLs
  • Mobilfähige APIs
  • Push Notifications
  • Hyper-Linking
  • Geo-Location Unterstützung
  • OAuth/LDAP Integration
  • Analytics
  • Encryption
  • Microservice Integration
  • Data Caching

Um die Auslieferung von Frontendlösungen zu beschleunigen, die auf Microservices setzen, ist es am besten die Auslieferung von Backends für Endgeräte mit Backend-as a Services Plattformen wie ApiOmat zu standardisieren. Die Integration von Microservices wird so erleichtert und die individuelle Implementierung eines zusätzlichen Backends bei jedem neuen Projekt obsolet.

OpenShift-Grafik-Mobilize Microservices

ApiOmat standardisiert die Kommunikation zwischen Frontends und Microservices.

Mit einer Plattform wie ApiOmat können Entwickler sich voll darauf fokussieren, nur den Code zu schreiben, der die App einzigartig macht, anstelle das gesamte Projekt von Grund auf aufzubauen. ApiOmat vereinfacht die Integration neuer Microservice-Versionen und liefert dynamisch generierte SDKs aus. Diese SDKs beschleunigen die Frontend-Entwicklung, indem die Kommunikation zwischen Backend und der App in beliebigen Frontends und Programmiersprachen gekapselt wird und unmittelbar Zugriff auf die Daten der Microservices gegeben wird.

Microservices beschleunigen

Microservices beschleunigen

Microservices lassen Unternehmen agiler werden und erlauben es, Änderungen sowie neue Services schneller zu implementieren – obwohl Microservices von Frontend-Entwicklern konsumiert werden müssen, um die Daten für Mobile und Web Apps, Chatbots, Sprachassistenten und Wearables verfügbar zu machen. ApiOmat standardisiert und beschleunigt diesen Prozess mit seiner Backend as a Service Plattform.

Lernen Sie, wie ApiOmat die Entwicklungszeit mit der Erstellung neuer Backends und APIs, der Bereitstellung essentieller Funktionalitäten Out-of-the-Box und der Integration von Microservices beschleunigen kann. Laden Sie sich das Whitepaper „Accelerating Microservices“ herunter um mehr zu erfahren, oder treten Sie mit uns direkt in Kontakt.

Benutzten Sie PaaS?

Obwohl Microservices On Premise oder in der Cloud über Container Management Systeme betrieben werden können, eliminiert Platform as a Service (PaaS) den größten Anteil des Verwaltungsaufwandes, den Microservices verursachen. PaaS hilft dabei, den Microservice zu Verwaltern, Microservices und über jegliche Kombination aus On Premise oder Cloud Infrastruktur zu deployen.

ApiOmat unterstützt den PaaS-Betrieb, indem Entwickler nur noch den relevanten Code schreiben müssen. In der Kombination aus PaaS – wie Openshift oder Cloud Foundry – und ApiOmat, wird der Betrieb vereinfacht und Entwicklung beschleunigt, da die Standardkomponenten für jedes Projekt dynamisch generiert werden.

ApiOmat & Cloud Foundry

Mit Cloud Foundry können Entwickler jede Art von Anwendung schnell bereitstellen. Schreiben Sie dazu in ApiOmat lediglich den relevanten Code der Anwendung. Verwenden Sie ApiOmat und Cloud Foundry, um Lösungen für jedes mögliche Endgerät umzusetzen – schneller als je zuvor.

ApiOmat & OpenShift

Vereinfachen Sie mit OpenShift den IT-Betrieb und stellen Sie Entwicklern zusätzliche Ressourcen on-demand bereit. In Verbindung mit ApiOmat können Microservices einfach in Ihre Legacy IT eingebunden, Frontend- von der Backendentwicklung entkoppelt und neue Ideen direkt umgesetzt werden.