[MELDEN] Von der Vision zum Code: Ein Leitfaden zur Ausrichtung der Geschäftsstrategie auf die Ziele der Softwareentwicklung ist veröffentlicht!
HOL ES DIR HIER

Glauben Sie dem Hype nicht: Manchmal ist ein Monolith besser als Microservices [Fallstudie]

readtime
Last updated on
February 17, 2025

A QUICK SUMMARY – FOR THE BUSY ONES

Monolith gegen Microservices

Die Entscheidung zwischen Microservices und monolithischer Architektur hat großen Einfluss auf Komplexität und Entwicklungsgeschwindigkeit. Microservices bieten Skalierbarkeit, sind jedoch mit Komplexität und längeren Startzeiten verbunden. Die monolithische Architektur ist einfacher und eignet sich für kleinere Projekte.

Modularer Monolith

Für ein Projekt zur Verwaltung von Aufträgen und Urlauben wurde aufgrund des Projektumfangs ein modularer monolithischer Ansatz gewählt. Es ermöglichte eine logische Modultrennung und einen möglichen zukünftigen Übergang zu Microservices. Bei diesem Ansatz wurde der Bereitstellung von Meilensteinen Vorrang vor der Konfiguration eingeräumt. Projekte sollten ihre Bedürfnisse berücksichtigen und mit einem modularen, monolithischen Ansatz beginnen, falls sie später auf Microservices umsteigen könnten.

Lesen Sie weiter, um die Details zu erfahren.

TABLE OF CONTENTS

Glauben Sie dem Hype nicht: Manchmal ist ein Monolith besser als Microservices [Fallstudie]

Microservices können zu einer höheren Komplexität und einer langsameren Entwicklung führen

Die Backend-Architektur ist eine entscheidende Entscheidung für jedes Projekt. Die falsche Wahl bei der Verwendung von Microservices kann zu Folgendem führen:

  • Bedarf an einer komplexeren Hosting-Konfiguration
  • zusätzliche Komplexität im Bereitstellungsprozess
  • langsamere Entwicklungszyklen
  • Probleme mit der Produktleistung und Engpässe.

Bei der Entscheidung für die Architektur müssen Sie Faktoren wie Domänenkomplexität, Teamstruktur, CI- und Produktionsumgebungen, Traffic-Erwartungen und Skalierung berücksichtigen.

Bei der Entwicklung eines Produkts, das die Aufgaben von Personen zu Projekten, ihre Verfügbarkeit und Urlaube anzeigen sollte, sahen wir eine klare Trennung zwischen Modulen, die extrahiert werden konnten:

  • Verwaltung der Urlaubstage
  • Zuweisungen
  • Projekte
  • Benutzerinformationen und Zeitverfügbarkeit
  • Autorisierung

Da Teile der Domain logisch voneinander getrennt waren, die volle Kontrolle über die Umgebung herrschen und die neueste Version von.NET verwendet wurde, war es verlockend, die oben genannten Module als Microservices zu implementieren. Dafür gab es definitiv einige triftige Gründe. Wir entschieden uns jedoch, stattdessen mit einem monolithischen Ansatz zu beginnen, der sich als effizienter erwies und es uns ermöglichte, uns auf die Entwicklung von Funktionen und die schnelle Bereitstellung zu konzentrieren.

Microservices zeichnen sich durch Skalierbarkeit aus, aber Monolith macht kleine Projekte schnell

Bei der Betrachtung des monolithischen Ansatzes und des Microservices-Ansatzes haben wir die wichtigsten Merkmale beider analysiert:

<span class="colorbox1"><h4>Vorteile von <h3>Monolith</h3>: Es</h4> <li>ist <ul><li>einfacher, ein kleineres Projekt zu starten</li>, <li>einfache Client-Serverinfrastruktur (React App)</li> <li>(.NET-Backend)</li></ul>. <h4>Nachteile:</h4> <ul><li>einzelne, größere Bereitstellung, eingeschränkte Skalierungsmöglichkeiten</li></ul></li></span>

<span class="colorbox1"><h4>Vorteile von <h3>Microservices</h3>:</h4> <ul><li>unabhängige Bereitstellungen</li>, <li>bessere Skalierungsmöglichkeiten</li></ul>. <h4>Nachteile:</h4> Der <ul><li>Projektstart nimmt mehr Zeit in Anspruch</li>, <li>Komplexität</li></ul> der Lösung und Infrastruktur</span>

Monolith ist ein einfacherer Ansatz, hat jedoch seine Grenzen.

Um zu definieren, was Ihren Bedürfnissen entspricht, stellen Sie sich zwei Fragen:

  1. Wird Ihr Produkt von unabhängigen Bereitstellungen profitieren?
  2. Erwarten Sie exponentielles Wachstum und benötigen eine hohe Skalierbarkeit?

Wenn Sie zweimal mit JA geantwortet haben, wählen Sie eine Microservice-basierte Architektur. Monolith kann Sie verlangsamen.

Unsere eigenen Antworten lauteten wie folgt:

  1. Wird Ihr Produkt von unabhängigen Bereitstellungen profitieren? NEIN — es handelt sich um eine kleine Anwendung, und schnellere, modulare Bereitstellungen würden den Infrastrukturaufwand nicht rechtfertigen.
  2. Erwarten Sie exponentielles Wachstum und benötigen eine hohe Skalierbarkeit? NEIN — Die Nutzerbasis wird begrenzt sein und der erwartete Traffic wird relativ gering sein.

Modularer Monolith bietet das Beste aus beiden Welten

Obwohl wir entschieden haben, dass Microservices derzeit nicht der richtige Ansatz sind, könnte sich dies in Zukunft ändern. Wir wollten auf einen möglichen Übergang vorbereitet sein. In solchen Fällen könnte eine modulare Monolith-Architektur die beste Wahl sein.

Wenn das Entwicklungsteam einen Monolithen implementiert, sodass:

  • Module sind logisch getrennt
  • kein Modul wird direkt referenziert (Verweise erfolgen über einen Mediator)
  • externe Abhängigkeiten sind hinter Abstraktionen versteckt

Es ist möglich, von einer modularen Monolith-Architektur zu Microservices überzugehen, wie unten gezeigt.

Modulare Monolith-Architektur
Microservices-Architektur

Der modulare Monolith ermöglichte es uns, uns auf die Umsetzung von Meilensteinen zu konzentrieren, anstatt Zeit mit der Konfiguration zu verbringen.

Bei unserem Projekt ermöglichte uns die modulare Monolith-Architektur, uns darauf zu konzentrieren, das Produkt in die nächste Phase zu bringen, anstatt die Verbindungen zu optimieren und abzustimmen. Allerdings ist jedes Projekt anders und es gibt keine allgemeingültige Methode zur Strukturierung der Anwendung.

Einige Produkte, genau wie unsere, könnten davon profitieren, wenn das Backend nicht in Microservices aufgeteilt wird, bis absolut sicher ist, dass sie benötigt werden. Wenn Sie in diese Kategorie fallen, beginnen Sie mit einem modularen, monolithischen Ansatz, sodass Sie bei der Entscheidung, auf eine auf Microservices basierende Architektur umzusteigen, leicht umschwenken können.

Frequently Asked Questions

No items found.

Our promise

Every year, Brainhub helps 750,000+ founders, leaders and software engineers make smart tech decisions. We earn that trust by openly sharing our insights based on practical software engineering experience.

Authors

Tomasz Depta
github
.NET-Softwareentwickler

Full-Stack.NET-Ingenieur mit 9 Jahren Berufserfahrung. Microsoft-zertifiziert, Absolvent der Schlesischen Technischen Universität.

Jacek Kwapuliński
github
.NET-Softwareentwickler

Full-Stack.NET-Ingenieur mit 14 Jahren Berufserfahrung. Microsoft-zertifiziert, Absolvent der Schlesischen Technischen Universität.

Tomasz Depta
github
.NET-Softwareentwickler

Full-Stack.NET-Ingenieur mit 9 Jahren Berufserfahrung. Microsoft-zertifiziert, Absolvent der Schlesischen Technischen Universität.

Jacek Kwapuliński
github
.NET-Softwareentwickler

Full-Stack.NET-Ingenieur mit 14 Jahren Berufserfahrung. Microsoft-zertifiziert, Absolvent der Schlesischen Technischen Universität.

Read next

No items found...