{
 "id": 36986,
 "slug": "2020-03-03_monolithische-vs-microservices-softwarearchitektur",
 "url": "https://agents.willem.com/de/posts/2020-03-03_monolithische-vs-microservices-softwarearchitektur/",
 "source_url": "https://willem.com/de/2020-03-03_monolithische-vs-microservices-softwarearchitektur/",
 "language": "de",
 "date": "2020-03-03",
 "published": "2020-03-03T00:00:00+01:00",
 "created": "2025-06-26T22:10:03.931000+02:00",
 "updated": "2026-10-20T09:24:06.103000+02:00",
 "title": "Monolithische vs. Microservices-Softwarearchitektur",
 "subtitle": "Das richtige Design für die Entwicklung deiner App wählen",
 "summary": "Diese Woche bin ich nach Göteborg geflogen, um Leute einer großen internationalen Reederei zu treffen und über die Entwicklung von Unternehmenssoftware zu sprechen. Im Raum saßen mehrere Experten, und einer fragte mich, wie man die richtige Softwarearchitektur wählt (für große, komplexe Apps im Unternehmensumfeld). Eine sehr gute Frage, die einen Blogbeitrag wert ist.",
 "topics": [
  "cloud",
  "data",
  "design",
  "programming",
  "server",
  "work"
 ],
 "author": {
  "name": "Willem L. Middelkoop",
  "url": "https://willem.com"
 },
 "provenance": {
  "kind": "model",
  "method": "Gemini translation (2025), reviewed and corrected by Claude Sonnet (20 Oct 2026) against a glossary and hunspell",
  "date": "2026-10-20",
  "reviewed_by_native_reader": false,
  "language": "de",
  "source_language": "en"
 },
 "translations": [
  {
   "language": "en",
   "title": "Monolithic vs Microservices software architecture",
   "url": "https://agents.willem.com/en/posts/2020-03-03_monolithic-vs-microservices-software-architecture/",
   "source_url": "https://willem.com/en/2020-03-03_monolithic-vs-microservices-software-architecture/"
  },
  {
   "language": "nl",
   "title": "Monolithische versus Microservices softwarearchitectuur",
   "url": "https://agents.willem.com/nl/posts/2020-03-03_monolithische-versus-microservices-softwarearchitectuur/",
   "source_url": "https://willem.com/nl/2020-03-03_monolithische-versus-microservices-softwarearchitectuur/"
  },
  {
   "language": "es",
   "title": "Arquitectura de software monolítica vs. microservicios",
   "url": "https://agents.willem.com/es/posts/2020-03-03_arquitectura-de-software-monolitica-vs-microservicios/",
   "source_url": "https://willem.com/es/2020-03-03_arquitectura-de-software-monolitica-vs-microservicios/"
  },
  {
   "language": "fr",
   "title": "Architecture logicielle monolithique ou microservices",
   "url": "https://agents.willem.com/fr/posts/2020-03-03_architecture-logicielle-monolithique-ou-microservices/",
   "source_url": "https://willem.com/fr/2020-03-03_architecture-logicielle-monolithique-ou-microservices/"
  },
  {
   "language": "it",
   "title": "Architettura software monolitica contro microservizi",
   "url": "https://agents.willem.com/it/posts/2020-03-03_architettura-software-monolitica-contro-microservizi/",
   "source_url": "https://willem.com/it/2020-03-03_architettura-software-monolitica-contro-microservizi/"
  },
  {
   "language": "pt",
   "title": "Arquitetura de software monolítica vs microsserviços",
   "url": "https://agents.willem.com/pt/posts/2020-03-03_arquitetura-de-software-monolitica-vs-microsservicos/",
   "source_url": "https://willem.com/pt/2020-03-03_arquitetura-de-software-monolitica-vs-microsservicos/"
  },
  {
   "language": "pap",
   "title": "Arkitektura di software monolítiko versus microservices",
   "url": "https://agents.willem.com/pap/posts/2020-03-03_arkitektura-di-software-monolitiko-versus-microservices/",
   "source_url": "https://willem.com/pap/2020-03-03_arkitektura-di-software-monolitiko-versus-microservices/"
  },
  {
   "language": "fy",
   "title": "Monolityske tsjin microservices-softwarearsjitektuer",
   "url": "https://agents.willem.com/fy/posts/2020-03-03_monolityske-tsjin-microservices-softwarearsjitektuer/",
   "source_url": "https://willem.com/fy/2020-03-03_monolityske-tsjin-microservices-softwarearsjitektuer/"
  }
 ],
 "image": "https://willem.com/global/images/ac25803922f6.webp",
 "image_width": 2560,
 "images": [
  {
   "url": "https://willem.com/global/images/189c28c69d02.webp",
   "description": "Zu Besuch bei einer großen internationalen Reederei, um über Unternehmenssoftware zu sprechen",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_36986_images-1.jpg"
  },
  {
   "url": "https://willem.com/global/images/b73d8bf569bc.webp",
   "description": "Einfaches Beispiel für eine Softwarearchitektur: verschiedene Strukturen, die mit unterschiedlichen Beziehungen ein System bilden",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_36986_images-2.png"
  },
  {
   "url": "https://willem.com/global/images/df6c62e25d7d.webp",
   "description": "Die Komplexität wächst mit der Zahl der Strukturen (und ihrer Beziehungen)",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_36986_images-3.png"
  },
  {
   "url": "https://willem.com/global/images/875d62aa72f8.webp",
   "description": "Monolithische Softwarearchitektur",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_36986_images-4.png"
  },
  {
   "url": "https://willem.com/global/images/2705ce2c332c.webp",
   "description": "Microservices-Softwarearchitektur",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_36986_images-5.png"
  },
  {
   "url": "https://willem.com/global/images/e50e134c3fb7.webp",
   "description": "„Der Himmel ist die Grenze“, wenn du die gewählte Architektur beherrschst (ändere sie nur nicht mitten im Flug!)",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_36986_images-6.jpg"
  }
 ],
 "text": "Softwarearchitektur\nWenn du Apps entwirfst, geht es nicht nur um Aussehen und Bedienung. Gutes Design umfasst auch, wie alles zusammenarbeitet. Softwarearchitektur beschreibt die grundlegenden Strukturen eines Softwaresystems. Jede Struktur besteht aus Elementen, Beziehungen zwischen ihnen und Eigenschaften der Elemente wie auch der Beziehungen.\nDas ist vergleichbar mit der Architektur eines Gebäudes. Ist eine Architektur erst festgelegt und umgesetzt, wird es teuer, sie nachträglich zu ändern. Deshalb solltest du die richtige Softwarearchitektur wählen, bevor du anfängst zu bauen.\nBei einfachen Apps liegt die Architektur vielleicht auf der Hand. Wächst deine Anwendung aber an Umfang und Funktionen, kann die Zahl der Strukturen im System schnell steigen. Das passiert mit der Zeit, wenn die Wünsche deiner Kunden wachsen. Je mehr Strukturen, desto mehr Beziehungen zwischen ihnen, und desto komplexer wird es.\nMit komplexem Softwaredesign umgehen\nWenn deine Software viele verschiedene Dinge erledigen soll, bekommst du es wahrscheinlich mit Komplexität zu tun. Aus Sicht der Architektur gibt es verschiedene Ansätze, damit umzugehen.\nMonolithische Architektur\nDie monolithische Architektur beschreibt man am besten als \"einen großen Block\". Alles, was deine App tut, gehört zur selben Codebasis.\nIn einer \"monolithischen Architektur\" ist die Software oft in Schichten aufgebaut, und jede Schicht besteht aus anderen Arten von Komponenten:\n- Präsentationsschicht: zuständig für die Schnittstelle zu Benutzern und/oder Anwendungen (UI / API).\n- Geschäftslogik: Hier stehen die eigentlichen Geschäftsregeln. Sie ist der Kern der Anwendung und passt sehr eng zu den tatsächlichen Geschäftsprozessen.\n- Datenzugriffsschicht: bietet eine gemeinsame Schnittstelle zwischen der laufenden Anwendung und den dauerhaften Backend-Speichern.\n- Datenbank und Dateisystem: Hier liegen alle Daten und statischen Ressourcen (Dateien, Bilder usw.).\nJe größer die Anwendung wird, desto größer wird jede Schicht. Das macht es schwieriger, eine monolithische Architektur zu skalieren: Irgendwann wird einfach alles zu groß und zu komplex.\nBei jeder Änderung an der Anwendung ist die gesamte Codebasis betroffen. Bei (sehr) großen Anwendungen erschwert das die Wartung, denn du musst die ganze Anwendung verstehen.\nWeil die gesamte Anwendung voneinander abhängt, wirken sich Probleme in einem Teil oft stark auf das ganze System aus. Die Teile kommunizieren intern auf Codeebene miteinander. Das heißt, sie müssen in derselben (oder einer kompatiblen) Programmiersprache geschrieben sein. Das ist eine Hürde für neue Technologien (in Zukunft), denn die Programmiersprache eines einzelnen Teils lässt sich nicht einfach ändern.\nMicroservices-Architektur\nStatt eine große monolithische Anwendung zu bauen, kannst du deine Anwendung in kleinere, miteinander verbundene Dienste aufteilen. Jeder Microservice ist eine kleine eigene Anwendung, mit eigener (aber kleinerer und einfacherer) Architektur, eigener Geschäftslogik und eigenen Datenschichten.\nDie Dienste sprechen über APIs miteinander, die unabhängig von der eingesetzten Technologie definiert sind, oft in einer gemeinsamen \"API-Struktur\" wie REST, JSON, Redis und XML. So funktionieren die Microservices zusammen als \"ein System\".\nWenn du die \"Big-Block\"-Anwendung in kleinere Dienste zerlegst, werden die einzelnen Teile des Systems leichter verständlich. Auch die Wartung wird einfacher, weil sich jeder Microservice unabhängig entwickeln lässt. Außerdem sinkt die Hürde für neue Technologien: Du kannst für jeden Dienst die Technologie wählen, die am besten passt. Ein Teil des Systems darf in einer anderen Sprache programmiert sein als die übrigen. So können Teams mit ganz unterschiedlichem Know-how zusammenarbeiten.\nDie Kunst bei der Microservices-Architektur besteht darin, einen Microservice richtig abzugrenzen. Zu breit oder zu kleinteilig kann die Architektur zerstören. Zum Abgrenzen kannst du Geschäftsprozesse nehmen, eine hierarchische Trennung oder eine Trennung nach Fachdomänen.\nDie Herausforderung: Microservices machen das Gesamtsystem komplexer, weil sie einen verteilten Kommunikationsmechanismus brauchen. Die vielen APIs, die ineinandergreifen, können knifflig zu testen und zu debuggen sein. Und Änderungen, die mehrere Dienste betreffen, sind schwerer umzusetzen.\nDie APIs zwischen den Diensten zu definieren, zu entwerfen und umzusetzen erfordert eine Einigung über die ausgetauschten Daten. Das kann schwierig werden, wenn du umfangreiche und nicht universelle Datenstrukturen teilen willst.\nAuch Überwachung und Bereitstellung einer Microservices-Architektur können komplex werden, wenn die Zahl der Dienste wächst. Es gibt schlicht mehr zu verwalten, und das erfordert für jeden Dienst mehr Planung und Abstimmung.\nDie richtige Architektur wählen\nMein verstorbener Vater hat mir einmal gesagt, dass man \"am meisten mit den Dingen verdient, die man nicht tut\". Komplexe Anwendungen zu bauen ist von Natur aus schwer. Das Beste, was du tun kannst, ist, die Dinge einfacher zu machen, indem du nicht alles tust. Konzentrier dich auf das, was wirklich zählt, und mach es richtig.\nIst deine Anwendung einfach und schlank, ist eine monolithische Architektur der richtige Weg. Entwicklung, Bereitstellung, Wartung: Alles ist leichter, wenn die Dinge klein sind.\nKommst du an der Komplexität nicht vorbei, solltest du unbedingt die Microservices-Architektur in Betracht ziehen. Stell dir diese Fragen:\n- Kannst du eine \"gemeinsame Sprache\" zwischen deinen Microservices festlegen?\n- Gibt es klar getrennte Geschäftsprozesse?\n- Wie stark hängen diese Geschäftsprozesse voneinander ab?\n- Wie wird sich deine Anwendung im Lauf der Zeit entwickeln: Wird sie wachsen oder schrumpfen?\n- Wie viele verschiedene Programmiertechnologien willst du einsetzen? Wird sich das künftig ändern?\n- Wer baut und wartet die Software, und hat er Erfahrung mit einer solchen Architektur?\nFazit\nEine \"Patentlösung\" auf die Frage, welche Softwarearchitektur die richtige ist, gibt es nicht. Beide Ansätze haben Vor- und Nachteile.\nAm besten triffst du eine bewusste, gut durchdachte Entscheidung und setzt voll darauf!",
 "word_count": 848,
 "markdown_url": "https://agents.willem.com/de/posts/2020-03-03_monolithische-vs-microservices-softwarearchitektur/post.md"
}