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.

ontolux bei der Buzzwords 2022

Qi Wu von der KI-Agentur ontolux stellt Methoden zur Ressourceneinsparung von KI-Modellen mittels Knowledge Destillation in ihrem Vortrag bei der Buzzwords 2022 in Berlin vor. Die Buzzwords Berlin konzentriert sich auf Themen wie Open-Source-Softwareprojekte, Suche, Speicherung, Streaming und Verarbeitung von großen Datenmengen.

Header_Vortrag_Qi Wu_ontolux_pietro Jeng-n6B49lTx7NM-unsplash_06_21

ontolux bei der Mind Mastering Machines 2022

Die Minds Mastering Machines (M3) Konferenz wendet sich an Softwareentwickler, Data Scientists und Forschende, die Machine Learning und KI-Anwendungen entwickeln. Qi Wu von der KI-Agentur ontolux stellt Methoden zur Ressourceneinsparung von KI-Modellen mittels Knowledge Destillation in einem Vortrag vor.

KIFE_042022

KI und Forschung 04-2022

Die nächste Runde der großen Machine Learning-Modelle ist eingeleitet und GPT-3 und T5 sollen in Rente geschickt werden. In der ontolux „KI und Forschung“- Reihe gibt Dr. Till Plumbaum wieder Einblicke in aktuelle KI-Themen.

Rennfahrer

Wie es B2B Webseiten gelingt, mehr Service zu bieten

Ein durchdachtes UX-Design verwandelt B2B-Websites in ein effizientes Service-Instrument. In der Marconomy gibt UX-Experte Axel Hillebrand Tipps, worauf B2B-Marketer achten sollten.

Kind und Karriere – Vereinbarkeit von Familie und Beruf bei Neofonie

Vereinbarkeit von Familie und Beruf ist für viele Eltern eine Herausforderung und erfordert familienfreundliche Unternehmenskulturen. Wie familienfreundlich ist Neofonie ? Wir haben Khayrat Glende, Head of Quality Management dazu befragt.

Entity Linking mit Doccano und TXTWerk

Zum Labeling von Entitäten hat ontolux das Open Source-Annotationstool Doccano mit der Anbindung an das hauseigene Textanalyse-Framework TXTWerk in einem Fork eingebunden, um eigene Entity Linking Annotationen zu erstellen.

Mit UX-Design die Candidate Experience optimieren

Erfahren Sie die zehn Must-Knows für ein optimales Karriereportal oder lassen Sie unsere Experten von ION ONE einen Blick auf Ihre Karriereseite werfen, um Optimierungspotenziale zu identifizieren für mehr Bewerber.

KIFE_3_2022

KI & Forschung 03-2022

Google bekommt Konkurrenz, doch bringen neue KI-gestützte Suchmaschinen wirklich eine Besserung für Nutzer? In unserer „KI und Forschung“- Reihe gibt Dr. Till Plumbaum wieder Einblick in aktuelle KI-Themen.

Viele Generationen – ein Team – Neofonie

Wir haben Joachim Schneider und Philip Kramwinkel befragt: Was eint und unterscheidet ihre Generationen und wie bereichern sie sich aus ihrer Sicht in der Zusammenarbeit bei Neofonie?

Neofonie gibt Praxistipps beim IHK Digitalisierungsforum

Um die regionale Wirtschaft bei Digitalisierungsfragen zielgerichtet unterstützen zu können, treffen sich die 79 bundesweit vertretenen Industrie und Handelskammern holen beim IHK Digitalisierungsforum in Dortmund. Neofonie ist als Partner der IHK Digital vor Ort und gibt Einblicke in die Praxis.

Neofonie ist neuer Contentful Partner

Contentful hat sich zu einem wichtigen Akteur für digital orientierte Unternehmen entwickelt, die ihre Inhalte optimal nutzen wollen, um ihren Kunden das beste digitale Erlebnis zu bieten. Neofonie nimmt Contentful in sein Partnerportfolio auf und unterstützt Unternehmen bei der Entwicklung und Implementierung.

Natural Language Processing mit dem Wikidata Knowledge Graph

Im Rahmen der Wikidata Data Reuse Days 2022 stellen Bertram Sändig und Patricia Helmich von ontolux ihre Erfahrungen vor, die sie beim Natural Language Processing mit dem Wikidata Knowledge Graph machen.

Header_KI_Forschung_ontolux_christopher-burns-Kj2SaNHG-hg-unsplash_06_21

KI & Forschung 02-2022

Wenn über künstliche Intelligenz gesprochen wird, kommen schnell auch ethische Überlegungen ins Spiel. In unserer aktuellen „KI und Forschung“- Reihe stellt Dr. Till Plumbaum die neuesten Entwicklungen zu den Themen Ethik und Bias vor.

Agile Führung – Bedeutung und Herausforderungen für Führungskräfte

Was agile Führung konkret ausmacht und welche Anforderungen an eine agile Führungskraft gestellt werden, klären wir im Interview mit Holger Paetsch – Head of Project Management bei der Digitalagentur Neofonie.

Neofonie-Mitarbeiter schauen sich Design-Entwürfe an

Wie eine Webseite zum Verkaufsinstrument wird

Erst mit einem durchdachten UX-Design verwandelt sich eine Webseite zu einem effizienten Verkaufsinstrument. Axel Hillebrand gibt fünf wesentliche Tipps.

IntelligenteSuche_Staubsauger_News

Fun: Was intelligente Suche und Staubsauger gemein haben

Angeblich stehen beutellose Staubsauger und das Thema Intelligente Suche nicht unbedingt in einem klaren inhaltlichen Zusammenhang. Warum eigentlich nicht?

TOP Arbeitgeber für IT-Jobs

Neofonie ist Top Arbeitgeber für IT-Jobs 2022

Die Zeitschrift CHIP hat zum zweiten Mal die „Top Arbeitgeber für IT-Jobs“ gekürt. Von mehr als 2.500 untersuchten Arbeitgebern konnte Neofonie überzeugen und zählt in der Softwarebranche zu den attraktivsten Arbeitgebern.

Header_KI_Forschung_ontolux_christopher-burns-Kj2SaNHG-hg-unsplash_01_22

KI & Forschung 01-2022

Dr. Till Plumbaum stellt auch 2022 die neuesten Forschungsergebnisse rund um die Themen NLP und Künstliche Intelligenz vor. In der aktuellen Januar-Ausgabe von „KI und Forschung“ geht es um Datenqualität und um die neueste Version von Lucene.

Newsbox_WomeninTech

Women in Tech bei Neofonie

Der Frauenanteil in der Neofonie liegt derzeit bei 31 Prozent, davon sind rund 25 Prozent direkt im Projektgeschäft aktiv. Diana Neufeld haben wir zum Thema Women in Tech bei Neofonie befragt.

newsbox-GWA_Win

Neofonie zählt zu den besten Web- und Online Agenturen 2022

Neofonie ist offizieller Preisträger der German Web Awards. Der Award kürt die besten Web- und Online Agenturen und zählt zu einer der wichtigsten Auszeichnungen in der DACH-Region.

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