Softwareentwicklung mit Microservices: So profitieren Unternehmen
tarent Blog

Softwareentwicklung mit Microservices: So profitieren Unternehmen

02.08.2019 Posted 2 Wochen ago Tim Steffens

Die IT-Infrastruktur und die Qualität der eigenen Softwareentwicklung sind für viele Unternehmen ein wichtiger und entscheidender Wirtschaftsfaktor. Durch das richtige Arbeiten mit Microservices können Sie Kosten, Risiken und die sogenannte Time to Market senken. Doch trifft das auf alle Szenarien zu, in denen die IT-Landschaft mit Microservices gebaut wird? In diesem Artikel lernen Sie Situationen zu erkennen, in denen sich Microservice Architekturen lohnen und wo sie genau das nicht tun.

Was genau sind Microservices?

Zunächst lohnt ein Blick auf die Bedeutung. Wikipedia sagt hier recht klar, was Microservices sind. Dabei handelt es sich um „ein Architekturmuster der Informationstechnik, bei dem komplexe Anwendungssoftware aus unabhängigen Prozessen komponiert wird, die untereinander mit sprachunabhängigen Programmierschnittstellen kommunizieren. Die Dienste sind weitgehend entkoppelt und erledigen eine kleine Aufgabe. So ermöglichen sie einen modularen Aufbau von Anwendungssoftware.“

In der Regel handelt es sich also um „kleine“ Applikationen mit einem klar abgegrenzten fachlichen Fokus. „Klein“ heißt in diesem Kontext, dass ein Microservice einfach weggeworfen und innerhalb kurzer Zeit komplett neu geschrieben werden kann. Ein Microservice strebt maximale Unabhängigkeit an. Daher stößt man häufig auf eine eigene Codebase, eigene Datenhaltung und separate Deploy- und Skalierbarkeit. Zu empfehlen ist hier ein Artikel von Martin Fowler über Microservices, in dem eine sehr gute und detaillierte Beschreibung zu finden ist.

10 Vorteile, warum Microservices den wirtschaftlichen Erfolg steigern können

1. Ihre Entwicklungsteams können parallel an einem System arbeiten

Durch eine separate Codebase, unabhängige Deploybarkeit und klar definierte, unumgängliche Schnittstellen kann maximale Unabhängigkeit zwischen den Teams erreicht werden.

2. Sie erzielen eine kurze Time to Market und schnelle Feedbackzyklen

Wie ich in einem meiner Talks „Continuous Deployment mit Microservices erklärt habe, erleichtern Microservices Continuous Deployment enorm und mit Continuous Deployment lassen sich sehr kurze Feedbackzyklen erreichen.

3. Sie vermeiden Ausfälle des Gesamtsystems und somit starken Imageschaden und hohe Kosten

Mit einer geschickt gebauten Microservice Architektur kann man eine hohe Resilienz erreichen. Resilienz bezeichnet die Fähigkeit von technischen Systemen, bei Störungen bzw. Teil-Ausfällen nicht vollständig zu versagen, sondern wesentliche Systemdienstleistungen aufrechtzuerhalten und trotz massiver externer oder interner Störungen wieder in den Ausgangszustand zurückzukehren.

4. Sie können mit Lastspitzen und starken Schwankungen von Benutzerzahlen umgehen

Effiziente Werbemaßnahmen oder erfolgreiche Produkte können starke Schwankungen z. B. in Form von Lastspitzen verursachen. Durch den Einsatz von Microservices können Sie diese softwareseitig auffangen. Dadurch, dass Microservices u. a. wegen ihrer kleinen Größe sehr gut in Containern und somit in Cloudplatformen wie Kubernetes laufen, ist Skalierung sehr einfach umsetzbar. Wegen der geringen Startzeit eines Microservices und Autoscaling Features bei den gängigen Cloud-Anbietern kann eine Anpassung der benötigten Instanzen blitzschnell erfolgen. Zusätzlich ermöglicht ein guter fachlicher Schnitt sehr gezielt, genau die Services hochzuskalieren, die von der Last auch tatsächlich betroffen sind.

5. Sie garantieren eine stabile Wartbarkeit und Anpassung für Systeme mit langen Laufzeiten ohne Zeitverlust und Risiko

Durch ihre kleine Größe und fachliche Abgegrenztheit sind Microservices potentiell deutlich leichter verständlich als große, monolithische IT-Systeme. Das kann die Wartbarkeit massiv erhöhen. Zusätzlich lassen sich Microservice-Systeme häufig gut skalieren und neue Technologien können Service für Service ausgerollt werden. Anders sieht dies bei einem Monolithen innerhalb Ihrer Softwarelandschaft aus, wo es unter Umständen auf eine einzelne riesige und riskante Änderung hinausläuft. So lässt sich das System auch gut an zukünftige Erfordernisse anpassen.

6. Sie sichern sich gegen technologische Fehlentscheidungen ab

Da sich ein Microservice in der Regel in kurzer Zeit komplett neu schreiben lässt und seine Schnittstellentechnologien agnostisch sind, lassen sich technologische Fehlentscheidungen in Bezug auf Programmiersprachen, Bibliotheken und Frameworks mit überschaubarem Aufwand revidieren.

7. Sie erleichtern Innovation und den Wechsel zu moderneren Technologien

Die Software in einem monolithischen System auf den neuesten technologischen Stand zu bringen, kann sehr kostspielig und riskant sein. In einem System, das aus Microservices besteht, können Sie leichtgewichtig innovative Technologien und neue Services testen und bei Bedarf das System Stück für Stück umstellen – ohne dass das ganze hohe Kosten verursacht.

8. Sie ermöglichen einen unkomplizierten Einsatz unterschiedlicher Technologien in unterschiedlichen Systemen 

Es leuchtet ein, dass für einen Handwerker ein Hammer relativ wenig hilfreich ist, wenn er eine Schraube in die Wand schrauben möchte. Ähnlich verhält es sich in der Softwareentwicklung: nicht jede Sprache oder Technologie eignet sich gleich gut für jedes Problem. Für einen schnell zu entwickelnden Prototypen würde man evtl. auf Groovy setzen, für systemnahe Programmierung auf einem eingebetteten System vermutlich eher auf C/C++ oder Rust. Microservices ermöglichen für jedes Problem das richtige Werkzeug einzusetzen.

9. Sie gelangen zu schnellen, lokalen Entscheidungen anstatt lange mit globalen Entscheidungen zu kämpfen

Teams können technologische Entscheidungen für ihre eigenen Microservices treffen ohne andere damit zu beeinflussen. Somit ist eine Abstimmung mit anderen Teams nicht für jede technologische Entscheidung erforderlich. Natürlich macht es trotzdem Sinn, wichtige Entscheidungen auch initial mit anderen Teams und Entwicklern zu diskutieren.

10. Gute und motivierte Softwareentwickler gewinnen und halten

Mit Microservices zu arbeiten ist für Softwareentwickler heute spannend und lukrativ. Sie verbessern also Ihr Recruiting, indem Sie das Interesse für Ihr Unternehmen steigern und leichter gute Softwareentwickler als Mitarbeiter gewinnen.

In diesen Situationen kann sich ein monolithisches System lohnen

Im Umkehrschluss gibt es auch Szenarien, in denen Sie eventuell auf einen Microservice-Ansatz verzichten sollten. Denken Sie lieber über ein monolithisches System nach, wenn …

  • Sie nur mit einem Entwicklungsteam arbeiten,
  • das System so klein ist, dass sich Continuous Delivery trotzdem gut umsetzen lässt,
  • der Schaden durch Systemausfälle gering ist oder Resilienz sich anders gut gewährleisten lässt,
  • sich Benutzerzahlen und Auslastung frühzeitig prognostizieren lassen bzw. nur langsam ändern,
  • das System eine kurze, geplante Laufzeit hat,
  • Sie bzw. Ihre Entwickler zuversichtlich sind, dass die eingesetzten Basistechnologien für die Laufzeit des Systems modern genug bleiben oder ein Ersatz dieser Technologien trotzdem einfach möglich ist,
  • die Probleme, mit denen sich das System beschäftigt, eher homogen sind und sich mit der gleichen Technologie gut lösen lassen,
  • extrem niedrige Latenzen unerlässlich sind für ein Problem, das sich über mehrere Systemteile bzw. Domänen erstreckt. Der Grund: Microserviceses setzen in der Regel auf Protokolle, die deutlich langsamer sind als direkte Aufrufe innerhalb eines Monolithen.

Microservice oder Monolith? So entscheiden Sie sich richtig für Ihre Softwarelandschaft

Die Frage, ob eine Microservice-Architektur besser ist als ein monolithisches System, lässt sich nicht generell beantworten, da es immer auf das konkrete Szenario ankommt. Überprüfen Sie daher für jedes Projekt, welche Variante besser zu Ihren eigenen Zielen passt. Bedenken Sie dabei auch, dass jede Variante ihren Preis hat und vergessen Sie nicht: Sie senken in großen Softwaresystemen die Komplexität nicht durch den Einsatz von Microservices, sondern verlagern sie teilweise aus dem Code in die Architektur und Kommunikation.

Wenn Sie unsicher sind, welche Variante die Beste für Ihr Unternehmen, Ihren Bereich oder Ihr Projekt ist, lassen Sie sich beraten. Im ersten Schritt von Ihren Experten aus der Softwareentwicklung und darüber hinaus auch extern. Gute IT-Dienstleister betrachten Ihre Systeme ganzheitlich und können Ihnen Vor- und Nachteile für beide Seiten aufzeigen. Gegebenenfalls ist es bei einer Umstellung auch sinnvoll, dass Sie Ihre Mitarbeiter schulen lassen. 

Wir helfen Ihnen gerne weiter

Für alle diese Fragen stehen wir Ihnen von tarent gerne zur Verfügung. Wir übernehmen gerne die Rolle als Software-Dienstleister in der Beratung und/oder Umsetzung. Genauso bieten wir mit unserer Academy Schulungen und Trainings an, um Ihre Experten aus- oder weiterzubilden. Unsere Trainer kommen aus der Praxis und kennen die Herausforderungen im Projektgeschäft. 

Wir freuen uns auf Ihr Interesse. Melden Sie sich gerne telefonisch unter 0228 – 548810 oder per Mail an academy@tarent.de.

 

Möchten Sie mehr über den Einsatz von Microservices wissen oder sich bzw. Ihre Mitarbeiter*innen weiterbilden? Hier gibt’s ausführliche Informationen zur Schulung „Microservices entwickeln und betreiben“ mit Tim Steffens