Hier geben wir Einblicke in das Unternehmen, Gedanken, How-Tos, Wissenswertes und News, die sich aus der Programmierung und Projekten ergeben. Auch unsere Open Source Aktivitäten begleiten wir hier.

Corporate Blog der prooph software GmbH

Durchstarten mit Microservices

Voll Durchstarten mit Microservices

© Neddevine / Fotolia

Microservices liegen voll im Trend. Viele meinen jedoch, Microservices und Serverless wären nur etwas für Global Player wie Amazon oder Google. Wir bei prooph software sind anderer Meinung. Es braucht gewisse Rahmenbedingungen, damit Microservices ihre Vorteile voll ausspielen können. Welche genau das sind und ob sich der Aufwand für die Einführung von Microservices lohnt, erläutere ich in diesem Artikel.

Was sind Microservices?

Eine klassische eCommerce Plattform lässt sich in verschiedene Bereiche teilen. Da gibt es den Produktkatalog, das Shop-Frontend u.a. mit Produktsuche, Galerie, Kaufempfehlungen und Bewertungen, das Management-Backend, Warenkorb mit Checkout-Prozess, meistens auch User-Profile und über Schnittstellen angeschlossene Drittsysteme wie z.B. eine Warenwirtschaft, Logistiker und Payment-Anbieter. Zusammengefasst haben wir es also mit einer ganzen Reihe verschiedener Domains zu tun, die zwar alle mehr oder weniger Teil der eCommerce Plattform sind, aber nicht unmittelbar eine gemeinsame Applikation bilden müssen.

Letztere Überlegung ist der erste Schritt in Richtung Microservices: Die Aufspaltung einer Anwendung in viele kleine Services. Die monolithische Variante der eCommerce Plattform hat den Vorteil, dass nur eine Applikation installiert und betreut werden muss. Entwickler und Administratoren können mit wenig Aufwand einen einigermaßen guten Betrieb gewährleisten. Also eigentlich alles gut, oder?

Risiken monolithischer Softwarearchitekturen

Monolithische Architekturen bringen Risiken mit sich, die in der heutigen Zeit immer deutlicher werden. Das beschriebene eCommerce Szenario lässt sich so oder so ähnlich auf jede größere Software übertragen, sei es nun ein umfangreiches Buchungssystem, ERP-System, B2B Portal oder CRM-Software.

Risiko 1 - Abhängigkeit

Die digitale Welt dreht sich immer schneller. Neue Technologien erobern den Alltag der Endverbraucher, selbstfahrende Autos, IoT oder einfach nur die Möglichkeit per Smartphone zu shoppen und ein Taxi per App zu rufen. Diese rasante Entwicklung stellt Unternehmen vor eine schwierige Aufgabe: Wie soll das eigene Business mithalten können? Die Antwort ist Veränderung und zwar kontinuierliche. Nur wer flexibel auf Marktveränderungen reagieren kann und dabei stets seine eigenen Stärken clever ausspielt, wird mittelfristig als Unternehmen bestehen können. Für die eigene IT heißt das vor allem: Fesseln lösen. Weg von proprietären und sündhaft teuren Hard- und Software-Lizenzen, hin zu flexibleren Modellen. Proprietäre Software schränkt die Anpassung durch Nutzer und Dritte oft sehr stark ein – eine enorme Bremse für kontinuierliche Veränderung und Optimierung des Geschäftsmodells.

Risiko 2 - Veraltete Technologie

Eine monolithische Anwendung ist meist sehr eng verzahnt mit der eingesetzten Infrastruktur wie z.B. einem bestimmten Datenbanksystem oder einer starren Server-Architektur. Auch sind die Möglichkeiten im User Interface in der Regel limitiert. Dem gegenüber gibt es ein vielfältiges Angebot an Speziallösungen und Technologien wie Elasticsearch, die - gezielt eingesetzt - Performance, Ausfallsicherheit und andere Parameter einer Applikation deutlich verbessern können.
Moderne Softwarelösungen sollten daher in der Lage sein, die Vorteile neuester Technologien zu nutzen.

Risiko 3 - Ressourcenmangel

Ein weiterer Grund für die Neuerung einer alten Anwendung ist nicht zuletzt die Schwierigkeit Entwickler zu finden, die das System weiterentwickeln können. Es fehlt schlichtweg an Nachwuchs oder freien Ressourcen. Das Problem hat praktisch jede Progammiersprache. Helfen kann hier nur ein Technologie-Mix und die Option, schnell und effizient alte Technologien gegen neue zu tauschen, um Zugriff auf einen größeren Pool an Softwareentwicklern zu erlangen.

Vorteile von Microservices

Betrachtet man die Risiken monolithischer Software, fällt schnell eine Gemeinsamkeit auf. Die Größe ist das Problem. Und hier verhält es sich ähnlich wie mit Konzernen und Start Ups. Zu viele Entscheider und komplexe Verwaltungsstrukturen verhindern Innovation. Deshalb ist bei Microservices auch der Name Programm. Es geht darum, ein Softwaresystem oder auch eine komplette IT-Landschaft eines Unternehmens in kleine Services zu teilen, in Teamarbeit, jeder mit einer speziellen Aufgabe und losgelöst von den anderen Services. Man erhöht damit drastisch die Flexibilität und Innovationskraft.

Schneller Austausch

Da Microservices untereinander nur über dezentrale APIs kommunizieren, lassen sich einzelne Services komplett austauschen ohne den Betrieb anderer Services zu beeinflussen. Bei einer monolithischen Anwendung sind dem Entwickler die Hände gebunden. Eine noch so kleine Änderung im System, kann an einer völlig anderen Stelle Fehler verursachen.

Für jede Aufgabe die richtige Technologie

Ein Handwerker geht nicht ohne seinen Werkzeugkoffer aus dem Haus, in dem er für jede Aufgabe das passende Werkzeug hat. Genauso benötigt der Softwareentwickler die Freiheit sein eigenes Toolkit einzusetzen. Auch hier wieder, durch die Unabhängigkeit der Microservices untereinander, kann für jede Aufgabe die passende Technologie gewählt werden.

Kleine Teams für mehr Effizienz

Zwei Softwareentwickler schaffen nicht das Doppelte an Arbeit wie ein einzelner Softwareentwickler. Ab einer gewissen Teamgröße ist der Kommunikations-Overhead so groß, dass die Produktivität des Teams spürbar darunter leidet. Microservices bilden hier eine natürliche Grenze: Kleinere Teams, die untereinander lediglich Schnittstellen zwischen ihren Microservices abstimmen müssen. Ein weiterer Bonus ist die schnelle Einarbeitungszeit für neue Teammitglieder. Da Microservices dem Namen nach sehr klein und übersichtlich sind - sie verzichten auch bewusst auf große Abhängigkeiten - ist das unbekannte Neuland für einen Softwareentwickler so überschaubar, dass er es schnell erobern wird.

Bedarfsorientierter Verbrauch

Cloud und Microservices gehören einfach zusammen. Zur Auswahl stehen große Anbieter wie Amazon AWS, Microsoft Azure oder Google Cloud aber auch regionale Cloud-Anbieter haben gute Angebote im Programm. Wer lieber alles hinter seiner eigenen Firewall wissen will, der setzt mit OpenStack und Co. eine private Cloud auf eigener Hardware auf. Für welche Lösung man sich auch entscheidet, als Ergebnis steht eine flexible Server-Umgebung zur Verfügung, die es erlaubt Hardware-Ressourcen bedarfsorientiert einzusetzen. Erreicht wird das durch Microservices, die verteilt arbeiten, schnell auf andere Server deployed und bei Lastspitzen binnen kurzer Zeit vervielfacht werden können.

Voraussetzungen für Microservices

Kleine Services mit wenigen externen Abhängigkeiten sorgen für einen viel einfacheren Quellcode. Das ist gut für die Wartbarkeit, da Komplexität reduziert wird. Allerdings müssen auch Microservices zusammen eine Einheit bilden. Erzielt wird das über dezentrale APIs. Jeder Microservice bietet eine API an, um entweder seine Daten anderen Services bereitzustellen und/oder Aufgaben zu übernehmen, die von anderen Services oder Benutzern angestoßen werden.

Service Orchestration

Viele kleine Services wollen aufeinander abgestimmt werden. Man kann sich das vorstellen wie ein Rudel Schlittenhunde, das aufgeregt darauf wartet angespannt zu werden, um dann auf Go loszujagen. Verliert der Musher dabei die Kontrolle, flitzen die Hunde und der Schlitten ohne den Musher davon. Benötigt wird also Know-How, Erfahrung und die richtigen Werkzeuge für das Betreiben verteilter Microservices. Die Cloud spielt dabei eine zentrale Rolle. Tools wie Docker und Container-Orchestrierung mittels Kubernetes oder Docker Swarm sind ein Must-Have.

Agile Prozesse

Nicht nur die richtige Infrastruktur muss vorhanden sein, sondern auch die richtigen Prozesse. Flexibilität erzielt man in der Softwareentwicklung durch agiles Projektmanagement und speziell für Microservices sollte dieses auch komplett ausgereizt werden. Die Königsdisziplin agiler Softwareentwicklung nennt sich Continuous Delivery – für viele Unternehmen und auch viele Softwareentwickler ein schwer zu greifendes Thema. Continuous Delivery bedeutet vereinfacht: Jedes neu entwickelte Feature geht sofort und ohne Umwege in Produktion. Es gibt keine Sprints mehr, nach denen die entwickelten Features "abgenommen" und dann gesammelt und gesammelt werden, bis irgendwann am Tag X das gesamte Paket auf das Produktionssystem deployed wird. Nein, jeden Tag werden mehrmals Produktionsdeployments durchgeführt. Jedes Deployment ändert nur einen kleinen Teil am Gesamtsystem und automatisierte Tests stellen sicher, dass bestehende Funktionalität durch die Änderung nicht negativ beeinflusst wird.

Fazit

Microservices sind ein ausgezeichneter Ansatz, um die Effizienz einer Anwendungs- und Systemlandschaft zu steigern, ohne dabei die Kosten zu erhöhen. Sprechen wir von der Neuentwicklung einer Software, sind die Investitionskosten allerdings deutlich höher, da Spezialisten, sogenannte DevOps, mit nötigem Infrastuktur-Know-How erforderlich sind, die als Teil der Softwareentwicklungsteams die Komplexität der Service-Orchestrierung bewältigen und die Velocity (Entwicklungsgeschwindigkeit eines Teams) hoch halten. Im Long-Run wird sich diese Anfangsinvestition bezahlt machen, da eine gut eingerichtete Microservices Infrastruktur extrem flexibel ist, kontinuierlich veränderbar und stets bereit auf das nächste Level zu skalieren. Cloud-Anbieter, Open Source Projekte wie Docker und Kubernetes sowie eine bunte Landschaft an Microservices Frameworks sorgen für immer kleiner werdende Hürden für den Betrieb von Microservices. Auch wir von prooph software beteiligen uns mit den prooph components und prooph/micro am Siegeszug von Microservices gegen starre und aufgeblähte Software-Monolithen.

Microservices, Agile Development, Cloud Für eine Microservices Architektur braucht es Know-How und Erfahrung. Setzen Sie mit uns auf ein kompetentes Team, das mit Hands-On Mentalität Monolithen in skalierbare, ausfallsichere, moderne Anwendungen verwandelt. Die prooph software Gmbh ist spezialisiert auf verteilte und serviceorientierte Systeme in der Cloud.

Sie suchen einen Microservices Spezialisten für Ihr Projekt: Projektanfrage stellen

Blog Artikel mit ähnlichen Themen