Microservices in der Projektentwicklung: Zwischen Flexibilität und Komplexität

Microservices in der Projektentwicklung: Zwischen Flexibilität und Komplexität

„Sollte ich Microservices verwenden?” Diese Entscheidung beruht letztendlich darauf, welche Ressourcen dem Projekt zur Verfügung stehen. Die Ressourcen eines Projektes fallen meist in zwei allgemeine Kategorien: Verfügbare Rechnerkapazität und verfügbares technisches Know-how. In der Entscheidung, wie beide am besten genutzt werden, können Microservices – bei richtiger Verwendung – viel Flexibilität bieten. Justin Theiss, ehemaliger Senior Backend Java Entwickler von Neofonie Mobile, gibt uns einen Einblick.

Technisches Know-how wirksam einsetzen

Microservices verkapseln einzeln einsetzbare Code-Bausteine und Abhängigkeiten, die sie zum Betrieb benötigen. Allgemein haben Entwickler eine große Bandbreite an Auswahlmöglichkeiten bezüglich der Entscheidung, wie sie beispielsweise einen Webservice, eine Push-Benachrichtigungen oder einen asynchronen Service programmieren. Es ist möglich, mit Programmiersprachen wie Python (Flask) oder C++ einen „Hallo Welt”-Webservice in zwei oder drei Codezeilen zu schreiben. Unter den Java-basierten Frameworks wird derzeit vor allem Spring Boot bevorzugt, sodass Entwickler ein breites Spektrum an Programmiersprachen und effektive Frameworks zur Verfügung haben. Während andere Java-Frameworks wie Play (unterstützt Java und Scala) und Dropwizard Entwicklern zwar moderate Flexibilität in Technologie-Stack-Entscheidungen ermöglichen, hat Spring Boot es an die Spitze geschafft. Grund dafür ist, dass ein Java-Container angeboten wird, der es ermöglicht mithilfe der Bausysteme Grails oder Maven Ruby, Groovy, Kotlin und Node.js zu verkapseln. Zusätzlich zu Springs D.I-Container und den zahllosen Frameworks sind dies wichtige Pluspunkte.

Microservices ermöglichen es also Entwicklern, ihre eigene, bevorzugte Programmiersprache zu nutzen. Aber wenn der Service REST lesen und schreiben oder sich generisch mit einer gemeinsamen Datenquelle verbinden kann, warum sollte man sich über die verwendete Programmiersprache, Gedanken machen? Microservices bieten zwar Flexibilität, aber sie können die Komplexität auch deutlich steigern!

Erhöhte Komplexität bedeutet mehr Problemstellen und Herausforderungen. Die Verengung des Technologie-Stacks reduziert nicht nur die Komplexität, sondern kann auch ein Ramp-up für neue Mitarbeiter vereinfachen. Auch das Risiko in eine Wartungsfalle zu geraten wird weitestgehend minimiert. Das Gleichgewicht zwischen Entscheidungsmöglichkeiten des Entwicklers und einem ausgefeilten Technologie-Stack ist eine der wichtigsten architektonischen Entscheidungen, die in den frühen Phasen des Projekts getroffen werden müssen.

Implementierung: Verfügbare Computer-Ressourcen richtig nutzen

Microservices können Projektmanager und Entwickler von traditionellen „monolithischen” Webservern und Web-Containern befreien. Solche Services, vor allem wenn sie Java-basiert sind, verwenden eingebettete Container und Server (als Abhängigkeiten) in einer deployten JAR-Datei. Das bedeutet, dass große, monolithische Java-Container nicht mehr zwingend benötigt werden und der Einsatz von Komponenten deutlich vereinfacht wird.

Wenn man den Microservice-Einsatz abstrahiert darstellt, lässt sich sagen, dass er vier Haupteinheiten enthält:

  1. den Service an sich
  2. den Host (d.h. eine Bare-Metal-Maschine, Rack)
  3. eine VM (virtuelle Maschine) und
  4. einen Container (Technologien mit virtueller Kapazität, meist Docker).

Kosten und/oder die verfügbaren Ressourcen sind der Schlüssel, um zu entscheiden, welche Konfiguration den Bedürfnissen des Projektes am besten entspricht.  

Obwohl Microcontainer helfen, die Last von monolithischen Web-Containern und Servern abzubauen, dezentralisieren sie zudem auch einige Aspekte der Netzwerkkommunikation. Deswegen müssen Netzwerkentscheidungen früh angesprochen und evaluiert werden, um Vorteile daraus zu ziehen.

Während dies in gewisser Hinsicht ein Kompromiss sein mag, integrieren moderne Frameworks zur Virtualisierung auch einiges der Einsatzkomplexität in jede einzelne Komponente (Docker, AWS, zahlreiche andere). Dadurch kann für jede einzelne Komponente von vornherein zusätzliche Entwicklungszeit sowie weiterer Aufwand während der anfänglichen Planungs- und architektonischen Projektphasen generiert werden.

Komplexität durch Orchestrierung vereinfachen

Microservices – wenn sinnvoll eingesetzt – können die Komplexität innerhalb eines Entwicklerteams aufteilen. Somit ist ein Entwickler für einen Service verantwortlich.  Außerdem kann die Arbeitsaufteilung dabei helfen, während der Entwicklungszeit Komplexität einzudämmen und gleichzeitig Entwicklern Autonomie in ihren Technologie-Stack-Entscheidungen zu erlauben.

Natürlich ist es großartig, dass das Projekt nun in einzelne Komponenten heruntergebrochen wurde. Aber was passiert, wenn diese Teile wieder zusammengefügt werden müssen? Die Orchestrierung von Services in einem dezentralisierten Netzwerk ist zugegebenermaßen einer der komplexesten Aspekte der modernen Service-Entwicklung, da mit der Anzahl der Services auch die Komplexität in der Orchestrierung steigt. Es gibt heute Frameworks zur Orchestrierung (und weitere sind in Planung), die versuchen, den Orchestrierungsprozess zu abstrahieren, wie zum Beispiel Kubernetes und Docker Swarm.

Und obwohl ein modularer Ansatz zu Microservices die Komplexität erhöhen kann, kann er im gleichen Zug die Entwicklung und Testbemühungen vereinfachen. Um komplexe Systeme zu bewältigen, zeigt sich das Implementieren realistischer Dummy-Services, welche das „Henne-Ei”-Entwicklungsprobleme lösen können, als hilfreiche Taktik.  Dies können beispielsweise Abhängigkeiten von externen Services sein, die potentiell erst zu einem späten Zeitpunkt des Lebenszyklus eines Projekts verfügbar werden, oder besonders komplexe Komponenten, die zu Ressourcen-Engpässen führen könnten. Neben der Eindämmung von Komplexität kann Microservice-Architektur von Natur aus dabei helfen, Problemstellen in einem laufenden System zu isolieren. Was das Testen betrifft, ermöglichen die Vorteile von Container-basiertem Einsatz es den Entwicklern, realistische End-to-End Tests leichter durchzuführen.

Ein letzter wichtiger Punkt der Orchestrierung ist die Notwendigkeit von Service-Discovery, also der Zuweisung von IP-Adressen an einzelne Microservices innerhalb von Containern oder virtuellen Maschinen, in denen diese Adressen sich verändern können und sich auch verändern werden. Frameworks wie NGINX in Kombination mit Infrastrukturinstrumenten wie Consul (welches einen DNS-Service anbietet) können in der Sicherung der Kommunikation der Services untereinander und korrektem Routing zum Internet (ein und aus) sehr hilfreich sein.

Fazit

Planung und eine solide Architektur sind wesentlich für die Implementierung einer Microservices basierten Architektur. Entwickler erhalten dadurch eine größere Eigenständigkeit in Technologie-Stack-Entscheidungen, jedoch könnte ein heterogener Technologie-Stack potentiell die Komplexität erhöhen. Die Orchestrierung der wesentlichen Komponenten eines Netzwerks, in dem unklar ist, inwiefern der Projektbesitzer die Kontrolle innehat, ist einer der herausfordernden Aspekte von Microservice-Architekturen. Wenn man sich von monolithischen Anwendungen weg entfernt, sind Netzwerkkommunikation und Design ebenfalls wichtige Punkte.

Der gesamte Artikel ist auch in englischer Sprache auf jaxcenter.de erschienen: 
Microservices: Balancing flexibility and complexity in your project

Veröffentlicht am 22. Juni 2017, aktualisiert am 17. Oktober 2020

Bildquelle: shutterstock, Anatoli Styf

Teilen auf

Justin Theiss

Justin Theiss arbeitete bei Neofonie Mobile als Senior Backend Java Entwickler. An der US-amerikanischen Ostküste (New Jersey) geboren, lebt und arbeitet er seit 11 Jahren in Berlin. In seiner Freizeit ist er ein begeisterter Plattensammler und Amateur-Musikwissenschaftler.

Container wird hochgehoben

Docker-Container als ideales Software-Transportmittel

Webprojekte werden immer komplexer und die Halbwertszeit der Technologien, die dabei zum Einsatz kommen, werden immer kürzer. Für die Softwareentwicklung ist die Containertechnologie von Docker ein ideales Transportmittel.

Corona-Reise-Check auf Shortlist für Deutschen Digital Award

In der Kategorie „Digital for Goods“ ist der Corona-Reise-Check des Wort & Bild Verlages für den Deutschen Digital Award 2021 nominiert. Der Bundesverband Digitale Wirtschaft e.V. hat in einer Shortlist die Vorauswahl getroffen.

Corona-Reise-Check-Preview

Neofonie entwickelt Corona Reise-Check App

Die Covid-19 Pandemie verursacht u.a. im Bereich Reisen große Verunsicherung. Die Corona-Reise-Check-App begegnet der Unsicherheit mit Transparenz.

EHealth_news

Neofonie weitet Fokus auf E-Health-Bereich aus

Als neues Verbandsmitglied der VerDiGes setzt die Berliner Digitalagentur Neofonie einen neuen unternehmerisch-strategischen Schwerpunkt im E-Health Umfeld und positioniert sich damit noch klarer als Full-Service Technologiedienstleister im Gesundheitsmarkt.

ION ONE: UX-Workshop für Food-Branche

Die UX-Agentur ION ONE unterstützt Unternehmen aus der Lebensmittelbranche mit einem kostenfreien UX-Workshop dabei, ihre Produkte authentisch und emotionalisierend zu inszenieren, um Nutzer zu begeistern und zum Kauf anzuregen.

Textmining_ontolux_NER

Neue Legal NER Komponente in TXTWerk

Mithilfe von Legal NER können juristische Textbausteine, beispielsweise Paragrafen, erkannt und automatisiert extrahiert werden. So lassen sich Texte in den Bereichen Steuern, Finanzen und Recht strukturieren und für die maschinelle Weiterverarbeitung aufbereiten.

Berliner Wirtschaft: Per Klick zum Onlinehändler

Die „Berliner Wirtschaft“ betrachtet die Berliner Agenturlandschaft unter dem Aspekt der gestiegene Nachfrage an E-Commerce Lösungen in der Corona-Krise. Thomas Kitlitschko, Geschäftsführer von Neofonie, liefert Einblicke.

ontolux Logo

Neofonie gründet KI-Agentur ontolux

Neofonie verkündet den Start einer neuen KI-Agentur, die sich den Themen Text Mining, Suche und Natural Language Processing verschrieben hat. Die langjährige Forschungs- und Projektkompetenz wird ab sofort in der eigenständigen Marke ontolux gebündelt.

wir-liefern-org Screen

wir-liefern.org erhält intelligente Suche

Neofonie unterstützt wir-liefern.org mit der kostenfreien Bereitstellung des Textanalyse Frameworks TXTWerk. Das Tool verbessert die Suche zur Auffindbarkeit lokaler Geschäfte.

WorldUsabilityDay_Newsbox

World Usability Day: Suche als echtes Erlebnis

Der World Usability Day vereint Design, Usability, IT und AI in einem Event und präsentiert am 12. November 2020 neueste Trends einem bundesweiten Publikum. Cornelia Werk von Neofonie stellt eine intelligente Suche als echtes Erlebnis vor.

RV24_Vorschaubild

Relaunch der digitalen Versicherung R+V24

Für die Umsetzung von rv24.de wurde Neofonie beauftragte, die den Relaunch auf Basis des Content Management Systems Magnolia umgesetzt hat. Die Erstellung erfolgte just in time – und das mitten in der Corona-Pandemie.

2 Iphone - mit Bildschirm der "meinbezirk" App, weisser Hintergrund

Neofonie Mobile launcht „meinbezirk espresso“ App

Mit der neuen meinbezirk espresso-App baut der Verlag Regionalmedien Austria sein Portfolio aus und liefert ein modernes und innovatives App-Konzept per swipe für sein regionales News-Angebot.

SAP Silver Partner Logo

Neofonie setzt auf SAP Commerce Cloud

Als Spezialist für E-Commerce Lösung hat Neofonie die Partnerschaft mit SAP ausgeweitet und ist nun auch Implementierungspartner für die SAP Commerce Plattform.

Illustration von CRM-Systemen

Neofonie hilft mit CRM-Beratung zur 360° Kundensicht

Neofonie unterstützt Sie beim Aufbau eines erfolgreichen Customer Relation Managements.

SEO in bunten Buchstaben

Webinar: Relaunch und SEO – So machen Sie es richtig

Am 25.08. zeigt SEO-Experte Anton Littau, wie die richtige Strategie zum richtigen Zeitpunkt hilft.

SAP Silver Partner Logo

Neofonie ist SAP Silver Partner mit TXTWerk

Als SAP Silver Partner stellt Neofonie das Text Mining Framework TXTWerk im SAP App Center ab sofort bereit.

Ibexa-Logo

Neofonie und Ibexa sind Partner

Neofonie und Ibexa vereinbaren Partnerschaft, um Content und Commerce stärker miteinander zu verbinden.

Grant McGillivray

Neofonie startet eigenständige UX-Agentur

Das Geheimnis ist nun endgültig gelüftet: ION ONE nennt sich die neue UX-Agentur von Neofonie!

digital-ratgeber.de auf einen Macbook

Wort und Bild Verlag stellt Digital Ratgeber vor

Mit Neofonie als Partner bringt der Wort & Bild Verlag mit dem „Digital Ratgeber“ eine neue Informationsplattform für Apotheken und deren Kunden auf den Markt.

Stadtwerke Oranienburg News

Storytelling-Beratung für Stadtwerke Oranienburg

Neofonie unterstützt die Stadtwerke Oranienburg in einem kreativen Kommunikationsworkshop, um ihr Online-Ableseportal mit einem Kino-Werbespot zu promoten.

Unser Newsletter „Neo Report“ vermittelt konkretes Praxiswissen, Trends und Know-how für Ihr digitales Business – quartalsweise und kompakt. Jetzt anmelden.