Microservices sind seit Jahren hype, aber nicht immer die beste Lösung. Was vor allem kleine und mittlere Unternehmen mit knappen Ressourcen oft übersehen: Microservice-Architekturen sind trotz aller Vorteile im laufenden Betrieb echte Ressourcenfresser. Erfahren Sie hier mehr über (oft totgesagte) Alternativen.

Um Missverständnissen vorzubeugen: Microservice-Architekturen sind für KMU nicht per se ungeeignet; sie haben jedoch einige Tücken, die man bedenken sollte. Um die Flexibilität, die Microservices ohne Zweifel bieten, voll auszuschöpfen müssen Unternehmen in der Lage sein, dezentrale Entwicklung und Pflege in ihrer IT-Organisation abzubilden. Das ist oft eine große Herausforderung.

Unternehmen, die nicht über ausgereifte Teams für die Software-Entwicklung und -pflege verfügen, sollten kritisch hinterfragen, ob sie sich Microservices wirklich leisten können.” – Igor Pshul, Solution Architect

Monolithische Architekturen werden oft als überkommenes Gegenmodell zu Microservices dargestellt. Sie sind jedoch nicht so schlecht wie ihr Ruf, vorausgesetzt sie werden handwerklich auf einem hohen Qualitätsniveau umgesetzt. In (oft ideologisch geführten) Debatten um Software-Architekturen werden die Vorteile von Monolithischen Architekturen nicht selten ignoriert.

Welcher Architekturstil im Einzelfall der richtige ist entscheidet sich nicht daran, was gerade technologisch en vogue ist. Entscheidend ist vielmehr, welcher Ansatz für ein Unternehmen realisierbar ist und sich besser eignet, Geschäftsziele zu erreichen. Deshalb unterstützen wir bei voltage IT unsere Kunden objektiv und mit klarem Blick auf den langfristigen Erfolg.

Die Herausforderung, vor dem jedes Unternehmen früher oder später steht: durch Erosion ihrer Architektur werden Software-Systeme nach und nach fehleranfälliger und ineffizienter. Schon kleinste Anpassungen können schließlich mit viel Angst und Schmerz verbunden sein. Wir wollen im Folgenden Hinweise geben, wie Sie mit der richtigen Architektur vorbeugen können.

Microservice-Architektur: Eigenschaften, Anforderungen, Pro & Contra

Microservices stehen für einen Architekturstil von Software-Anwendungen, die aus kleinen Dienste (Microservices) bestehen. Jeder einzelne Service wird in einem eigenen Prozess ausgeführt und kommuniziert über Schnittstellen (HTTP, REST API) mit anderen Services oder Systemen im Unternehmen. 

Services werden um Geschäftsfunktionen herum organisiert, weitestgehend dezentral verwaltet und können unabhängig voneinander und voll automatisiert bereitgestellt werden (automated deployment). Dabei können Microservices in verschiedenen Programmiersprachen entwickelt sein und unterschiedliche Technologien für die Datenspeicherung verwenden. Die Umsetzung erfolgt mithilfe von Containern, die mit Kybernetes orchestriert (bereitgestellt, skaliert und verwaltet) werden.

Vorteile von Microservice-Architekturen:

  • Flexibilität: durch Modularisierung leicht ersetzbar und erweiterbar
  • Nachhaltigkeit: Softwareentwicklung langfristig beherrschbar
  • Risiko: Änderungen am Gesamtsystem weniger riskant
  • Freiheit: unterschiedliche Technologien einsetzbar
  • Skalierbarkeit: granulare Erweiterung bei Bedarf

Herausforderungen:

  • Ressourcen: Verschiedene Teams für Pflege und Entwicklung nötig
  • Kommunikation: Steuerung unabhängiger Deployment-Einheiten
  • Performance: Latenzzeiten im Zusammenspiel von Services und Systemen
  • Infrastruktur: Redundanzen durch unabhängige Deployment-Prozesse
  • Sicherheit: Jede API ist potenzieller Angriffspunkt für Cyberkriminalität
  • Architektur: Dezentrale Service-Struktur erhalten (“Monolithisierung” vermeiden)

Fazit: Microservice-Architekturen sind per se flexibel in der Anpassung und Weiterentwicklung. Dafür müssen jedoch verteilte Teams bereitgestellt und koordiniert werden. Bei stark verteilten Systemen entwickeln Unternehmen einen Overhead für die Verwaltung und Kommunikation.

Monolithische Architektur: Eigenschaften, Anforderungen, Pro & Contra

Anders als verteilte Systeme auf Basis von Microservices verbinden Monolithische Software-Architekturen ihre funktionalen Elemente in einem einzigen homogenen Gebilde. Die Komponenten des Systems werden gemeinsam bereitgestellt (Deployment) und in einem gemeinsamen Prozess betrieben. Sie lassen sich dementsprechend nur als Ganzes skalieren.

Die Vorteile Monolithischer Architekturen entsprechen größtenteils den Nachteilen von Microservice-Architekturen und umgekehrt. 

Vorteile von Monolithischen Architekturen:

  • Entwicklung: “klassische” Umsetzung und einfacher Roll-out
  • Kommunikation: zentrale Steuerung einer Deployment-Einheit
  • Performance: “kurze” Kommunikationswege zwischen Komponenten

Herausforderungen:

  • Skalierbarkeit: „one size fits all“ stößt bei wachsender Komplexität an Grenzen
  • Nachhaltigkeit: Softwareentwicklung zunehmend mit Aufwand und Angst verbunden
  • Risiko: Änderungen am Gesamtsystem zunehmend riskant
  • Freiheit: beschränkt auf Technologien, die harmonieren
Fazit: Monolithische Architekturen lassen sich einfach entwickeln, ausrollen und mit schlanken Ressourcen betreiben. Sie sind häufig performanter als servicebasierte Architekturen. Jedoch neigen monolithische Systeme (insbesondere bei Schwächen in der Entwicklung) dazu, mit wachsender Komplexität schwerfälliger in der Anpassung und Erweiterung z.B. um Komponenten für KI oder Automatisierung zu werden.

Modulare Monolithen: Das Beste aus beiden Welten kombinieren

Was in der oft ideologisch geführten Debatte um Software-Architekturen nicht selten untergeht: Microservices und Monolithen schließen sich nicht gegenseitig aus. Das Optimum liegt wie so oft irgendwo in der Mitte. Smarte Programmierer vereinen das Beste aus beiden Welten und schaffen Systeme, die sich nicht dogmatisch an Architekturstilen orientieren. Entscheidend ist der Business Value, der aus der intelligenten Kombination verschiedener Ansätze resultiert.

Wir bei voltage IT verfolgen besonders für kleine und mittlere Unternehmen mit knappen Ressourcen eine strukturierte Software-Entwicklung, die monolithisch startet, jedoch bei Bedarf jederzeit die Vorteile von Microservices nutzen kann. Sinnvoll ist beispielsweise, im Monolithen eine klare vertikale Trennung nach Funktionalitäten vorzunehmen und nach höchsten Qualitätsstandards zu entwickeln: Domain Driven Design, Test Driven Development, Clean Code, um die Erosionen und die enge Kopplung der einzelnen Module zu vermeiden und für jedes Modul die Möglichkeit zur Extraktion zu einem Microservice zu erhalten.

Wir nennen das “vernünftiges” Software-Engineering – “vernünftig”, weil wir uns nicht vom Microservice-Hype leiten lassen, sondern strategisch die Basis für Systeme legen, die die tatsächlichen Anforderungen in den Mittelpunkt stellen und von Unternehmen bzw. deren Dienstleistern langfristig selbst gepflegt und flexibel weiterentwickelt werden können. 

Leseempfehlungen

Wir unterstützen Sie

Seit vielen Jahren kämpfen wir dafür, dass Unternehmen die richtigen IT-Entscheidungen treffen und Software-Systeme bekommen, von denen sie nachhaltig profitieren und die sie selbst beherrschen können. Unser Credo: Vernünftige Lösungen jenseits von Technologie-Hype.