<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Backendhance</title><link>https://backendhance.com/blog/category/software-architektur/</link><description>Recent content Backendhance</description><generator>Hugo -- gohugo.io</generator><language>de</language><lastBuildDate>Fri, 23 May 2025 07:58:54 +0200</lastBuildDate><atom:link href="https://backendhance.com/blog/category/software-architektur/index.xml" rel="self" type="application/rss+xml"/><item><title>Endlich eine gute Architekturdokumentation</title><link>https://backendhance.com/blog/2025/architecture-documentation/</link><pubDate>Fri, 23 May 2025 07:58:54 +0200</pubDate><author/><guid>https://backendhance.com/blog/2025/architecture-documentation/</guid><description>&lt;p>Bei der Entwicklung komplexer Softwaresysteme durchlaufen Teams häufig einen Dokumentationszyklus, der fast schon einem vorhersehbaren Muster folgt. Die anfängliche Euphorie ist geprägt von ambitionierten Zielen: Eine umfassende Dokumentation soll entstehen, die alle Aspekte des Systems beleuchtet und jede Entscheidung nachvollziehbar macht. Mit frischem Elan werden Werkzeuge evaluiert, Vorlagen erstellt und erste Dokumentationen verfasst.&lt;/p>
&lt;p>Doch mit fortschreitender Projektdauer schleicht sich die Vernachlässigung ein. Der Entwicklungsdruck steigt, Features haben Priorität und die Dokumentation wird zum &amp;ldquo;Nice-to-have&amp;rdquo;, das man &amp;ldquo;später&amp;rdquo; nachziehen will. Diese Phase markiert den kritischen Wendepunkt, an dem die Weichen für den langfristigen Erfolg oder Misserfolg der Dokumentationsstrategie gestellt werden. Dieser Artikel zeigt, wie sich ein sehr viel Zeit kostendender Misserfolg verhindern lässt.&lt;/p></description></item><item><title>Anti-Pattern: Die perfekte Softwarearchitektur</title><link>https://backendhance.com/blog/2024/the-perfect-softwarearchitecture/</link><pubDate>Wed, 21 Aug 2024 16:14:55 +0200</pubDate><author/><guid>https://backendhance.com/blog/2024/the-perfect-softwarearchitecture/</guid><description>&lt;p>Als junger Entwickler war ich naiv und ambitioniert. Ich suchte die perfekte Softwarearchitektur, einen Ansatz, den ich über alle Probleme stülpen könnte, unabhängig von der Branche, den Skalierungsanforderungen, den Sicherheitsmaßnahmen oder den Usern. Man müsste nur dieses eine Problem abstrakt lösen, dann könnte diese Architektur doch überall angewandt werden. Oder?&lt;/p>
&lt;div class="alert d-flex alert-info" role="alert">
&lt;i class="bx bx-info-circle lead me-3">&lt;/i>
&lt;div>
Dieser Artikel erschien erstmals im August 2024 als &lt;a href="https://www.golem.de/news/anti-pattern-die-perfekte-softwarearchitektur-2408-187665.html"target="_blank" rel="noopener noreferrer">Premiumartikel auf Golem.de&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
.
&lt;/div>
&lt;/div>
&lt;p>Dieser Artikel erklärt, warum die Suche nach der perfekten Softwarearchitektur eine Illusion ist. Aktuelle Trends und Moden diktieren oft universelle Lösungen, die jedoch die notwendige Flexibilität vermissen lassen, um im Markt zu bestehen. Das ist besonders relevant für technische Leiter und Entscheider im Mittelstand. Aber wie kann man eine Architektur gestalten, die flexibel genug ist, um sich an wechselnde Anforderungen anzupassen?&lt;/p></description></item><item><title>Surprising Architecture</title><link>https://backendhance.com/blog/2024/surprising-architecture/</link><pubDate>Thu, 20 Jun 2024 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2024/surprising-architecture/</guid><description>&lt;p>Hi,&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;RCoffee [ein internes Tool zur Content Produktion] greift per SSH auf die Testserver zu und stellt die Tomcat Logs dar&amp;rdquo;&lt;/p>&lt;/blockquote>
&lt;p>&lt;em>Wow.&lt;/em> Das kam überraschend.&lt;/p>
&lt;p>Seit einem Jahr arbeite ich mit diesem Kunden zusammen.&lt;/p>
&lt;p>Die Applikation ist Marktführer in ihrer Sparte und die aktuelle Version wurde vor über 10 Jahren entwickelt.&lt;/p>
&lt;p>Da hat sich natürlich einiges angesammelt. Und wenn ich beauftragt werde, dann ist die technische Schuld meist sehr groß.&lt;/p></description></item><item><title>Too Big, Too Small, Just Right</title><link>https://backendhance.com/blog/2024/too-big-too-small-just-right/</link><pubDate>Tue, 11 Jun 2024 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2024/too-big-too-small-just-right/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Ein alter Entwicklerwitz:&lt;/p>
&lt;blockquote>
&lt;p>There are 2 hard problems in computer science: cache invalidation, naming things, and off-by-1 errors. &amp;ndash; &lt;a href="https://twitter.com/secretGeek/status/7269997868"target="_blank" rel="noopener noreferrer">Leon Bambrick&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
&lt;/p>&lt;/blockquote>
&lt;p>Oder als Variante:&lt;/p>
&lt;blockquote>
&lt;p>There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery &amp;ndash; &lt;a href="https://twitter.com/mathiasverraes/status/632260618599403520"target="_blank" rel="noopener noreferrer">Mathias Verraes&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
&lt;/p>&lt;/blockquote>
&lt;p>Und es gibt etliche weitere:&lt;/p>
&lt;blockquote>
&lt;p>There are so many variations on the &amp;ldquo;there are only two hard problems in computer programming&amp;hellip;&amp;rdquo; joke that I&amp;rsquo;m starting to suspect that programming isn&amp;rsquo;t actually very easy. &amp;ndash; &lt;a href="https://twitter.com/natpryce/status/1396905452588474376"target="_blank" rel="noopener noreferrer">Nat Pryce&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
&lt;/p></description></item><item><title>Wie wird man Microservices wieder los?</title><link>https://backendhance.com/blog/2024/how-to-get-rid-of-microservices/</link><pubDate>Thu, 23 May 2024 11:05:12 +0200</pubDate><author/><guid>https://backendhance.com/blog/2024/how-to-get-rid-of-microservices/</guid><description>&lt;p>In den vergangenen Jahren haben etliche Unternehmen aus dem Mittelstand die viel gepriesenen
Microservices ausprobiert und mussten feststellen, dass diese weniger leichtgewichtig sind als der
Name vermuten lässt – &lt;a href="https://backendhance.com/blog/2024/overengineering-in-sme/">Microservices im Mittelstand sind oft Overengineering&lt;/a>
.
Jetzt müssen sie zurückgebaut und in eine pragmatischere Architektur
überführt werden. Wir erklären, wie das gelingt.&lt;/p>
&lt;div class="alert d-flex alert-info" role="alert">
&lt;i class="bx bx-info-circle lead me-3">&lt;/i>
&lt;div>
Dieser Artikel erschien erstmals im April 2024
als &lt;a href="https://www.golem.de/news/overengineering-wie-wird-man-microservices-wieder-los-2404-184487.html"target="_blank" rel="noopener noreferrer">Premiumartikel auf Golem.de&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
.
&lt;/div>
&lt;/div>
&lt;p>Keine Angst: &lt;strong>Der Rück- und Umbau der Architektur ist nicht nur aufwendig, sondern auch eine Chance&lt;/strong>.
Denn in der Softwareentwicklung gibt es keine One-Size-Fits-All-Lösung; die passende Architektur für
die eigene Software wird auf Basis der Anforderungen an die Software ausgewählt. Dafür werden die
Anforderungen aller Stakeholder zusammengetragen. In vielen Projekten wird das nicht ausreichend
gemacht. Bei einem Umbau der Architektur kann es nachgeholt und überprüft werden.&lt;/p></description></item><item><title>Mittelstand, Finger weg von Microservices!</title><link>https://backendhance.com/blog/2024/overengineering-in-sme/</link><pubDate>Mon, 15 Apr 2024 08:43:56 +0200</pubDate><author/><guid>https://backendhance.com/blog/2024/overengineering-in-sme/</guid><description>&lt;p>Seit mehr als zehn Jahren vergeht kaum eine Konferenz ohne das Thema Microservices. Fachmagazine publizieren eine hohe Anzahl von Artikeln zum Thema und externe Beratungsunternehmen verkaufen Workshops, beraten aktiv zum Wechsel zu einer Microservice-Architektur und preisen die Vorteile an. Für viele kleine und mittlere Unternehmen klingt das attraktiv – was bei den Großen so viel nützt, kann doch den kleineren nicht schaden? Ein folgenschwerer Trugschluss.&lt;/p>
&lt;div class="alert d-flex alert-info" role="alert">
&lt;i class="bx bx-info-circle lead me-3">&lt;/i>
&lt;div>
Dieser Artikel erschien erstmals im März 2024 als &lt;a href="https://www.golem.de/news/overengineering-mittelstand-finger-weg-von-microservices-2403-182712.html"target="_blank" rel="noopener noreferrer">Premiumartikel auf Golem.de&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
.
&lt;/div>
&lt;/div>
&lt;p>Denn &lt;strong>Overengineering&lt;/strong> – also der Einsatz unnötig komplexer Software – &lt;strong>kostet KMUs&lt;/strong> nicht nur &lt;strong>viel Geld und Zeit&lt;/strong>, es nimmt ihnen auch ihren wichtigsten Wettbewerbsvorteil gegenüber den Konzernen.&lt;/p></description></item><item><title>Was Accidental Complexity in der Entwicklung kostet</title><link>https://backendhance.com/blog/2024/accidental-complexity/</link><pubDate>Fri, 22 Mar 2024 14:00:00 +0100</pubDate><author/><guid>https://backendhance.com/blog/2024/accidental-complexity/</guid><description>&lt;p>Anfangs setzen IT-Teams schnell neue Features um, dann wird die Entwicklungszeit meist länger. Accidental Complexity ist häufig die Ursache – wir erklären, wie sie entsteht und was sich dagegen tun lässt.&lt;/p>
&lt;div class="alert d-flex alert-info" role="alert">
&lt;i class="bx bx-info-circle lead me-3">&lt;/i>
&lt;div>
Dieser Artikel erschien erstmals im Juni 2023 als &lt;a href="https://www.golem.de/news/technische-schulden-was-accidental-complexity-in-der-entwicklung-kostet-2306-174827.html"target="_blank" rel="noopener noreferrer">Premiumartikel auf Golem.de&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
.
&lt;/div>
&lt;/div>
&lt;p>Es ist kein Geheimnis, dass Systeme über die Zeit komplexer und damit die Entwicklungszeiten länger werden. &lt;strong>Das ist nicht zu vermeiden, wenn das Problem inhärent komplex ist, man spricht dann von Essential Complexity&lt;/strong>. In anderen Fällen wird die Umsetzung eines Features komplexer, als es sein müsste. Zwei Monate für ein eigentlich einfaches Feature? Ein klarer Fall von Accidental Complexity. Sie ist ärgerlich, kostet viel – und ist vermeidbar, wie wir an einigen praktischen Beispielen zeigen.&lt;/p></description></item><item><title>My War on Kubernetes</title><link>https://backendhance.com/blog/2024/my-war-on-kubernetes/</link><pubDate>Tue, 05 Mar 2024 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2024/my-war-on-kubernetes/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>&lt;strong>Ich muss direkt ein Geständnis machen: Ich bin auf Kriegsfuß mit Kubernetes.&lt;/strong>&lt;/p>
&lt;p>Dabei trifft Kubernetes gar keine Schuld. Meine Projekte sind es. Beziehungsweise die Teams, in denen ich mich bewege.&lt;/p>
&lt;p>Es sind Teams mit maximal 30 Software-Entwicklern, noch ein paar Business-Menschen und Designer oben drauf. Aber es sind nicht soooo viele Entwickler.&lt;/p>
&lt;p>&lt;strong>Diese Teams brauchen kein Kubernetes!&lt;/strong>&lt;/p>
&lt;p>Nein. Noch deutlicher: Diese Teams können kein Kubernetes halten!&lt;/p>
&lt;p>&amp;ldquo;Aber Marcus. Das ist doch kein Problem. Ich habe das doch schon bei XY gemacht, und es war so einfach, wenn man sich an YX hält und das ZY-Prinzip einhält.&amp;rdquo;&lt;/p></description></item><item><title>Another Microservice Desaster</title><link>https://backendhance.com/blog/2023/another-microservice-desaster/</link><pubDate>Thu, 07 Dec 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2023/another-microservice-desaster/</guid><description>&lt;p>Hi,&lt;/p>
&lt;h1 id="microservice-architektur">
&lt;a href="#microservice-architektur" class="anchor">Microservice Architektur&lt;/a>
&lt;/h1>
&lt;p>Dieses Buzzword, ist für mich inzwischen ein Trigger geworden. Darüber habe ich schon oft geschrieben.&lt;/p>
&lt;p>Anfang des Jahres trendete mein Artikel &lt;a href="https://backendhance.com/blog/2022/microservices/">Microservices are a Big Ball of Mud&lt;/a>
auf &lt;a href="https://news.ycombinator.com/item?id=34329656"target="_blank" rel="noopener noreferrer">Hacker News&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
&lt;/p>
&lt;p>In den 343 Kommentaren zu meinem Artikel kann man gut sehen, wie sehr das Thema die Gemüter erhitzt 😉 Natürlich ist der rationale Blick darauf ein anderer, als ich in dem Artikel dargestellt habe. Es kommt IMMER auf den Kontext an. &lt;a href="https://www.appcontinuum.io/"target="_blank" rel="noopener noreferrer">AppContinuum&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
ist ein hervorragendes Paper zu einem reflektierten Blick auf die Thematik.&lt;/p></description></item><item><title>The Microwave With Feature Creep</title><link>https://backendhance.com/blog/2023/the-microwave-with-feature-creep/</link><pubDate>Thu, 31 Aug 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2023/the-microwave-with-feature-creep/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>&lt;a href="https://backendhance.com/blog/2023/what-sound-does-your-microwave/">Meine Mikrowelle war kaputt.&lt;/a>
&lt;/p>
&lt;p>Also: Eine neue muss her.&lt;/p>
&lt;p>Ich habe hier aber einen kleinen Tick. Das betrifft alles unvergängliche das ich kaufe. Ich will einen Fehlkauf vermeiden. &lt;strong>Lieber einmal mehr Geld ausgeben, als in zwei Jahren wieder neu kaufen.&lt;/strong>&lt;/p>
&lt;p>Hier muss ich aufpassen nicht in einer Rabbit-Hole zu landen. Ich kann Stunden in das Lesen von Reviews versenken.&lt;/p>
&lt;p>Aber was will ich überhaupt vergleichen?&lt;/p>
&lt;h2 id="als-erstes-kommt-die-anforderungsanalyse">
&lt;a href="#als-erstes-kommt-die-anforderungsanalyse" class="anchor">Als erstes Kommt die Anforderungsanalyse&lt;/a>
&lt;/h2>
&lt;p>Bevor ich überhaupt zwischen Modellen vergleichen kann, muss ich mir klar werden was ich eigentlich brauche.&lt;/p></description></item><item><title>State Is the Root of All Evil</title><link>https://backendhance.com/blog/2023/state-is-the-root-of-all-evil/</link><pubDate>Thu, 17 Aug 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2023/state-is-the-root-of-all-evil/</guid><description>&lt;p>Hi,&lt;/p>
&lt;h2 id="was-unterscheidet-eine-anwendung-von-einer-mathematischen-funktion">
&lt;a href="#was-unterscheidet-eine-anwendung-von-einer-mathematischen-funktion" class="anchor">Was unterscheidet eine Anwendung von einer (mathematischen) Funktion?&lt;/a>
&lt;/h2>
&lt;p>Eine Funktion nimmt einen Input &lt;code>x&lt;/code> und transformiert ihn zu einem Output. Wenn gilt &lt;code>f(x) = 2 * x&lt;/code>, dann ist das Ergebnis dieser Funktion bei der Eingabe von jedem x immer gleich.&lt;/p>
&lt;p>Es gibt keine Seiteneffekte. Wir nennen dieses Verhalten &lt;em>stateless.&lt;/em>&lt;/p>
&lt;p>Aber was hat das mit der Frage vom Anfang zutun? Eine Anwendung geht darüber hinaus. (Fast) jede Anwendung muss mit State arbeiten. Sobald wir I/O Operations in unserem System haben, haben wir inhärent State. Und häufig kann ein methodenaufruf, mit dem gleichen Input, zu unterschiedlichen Zeiten, unterschiedliche Resultate liefern. Und das ist auch nicht vermeidbar und liegt in der Natur der Aufgabe, die wir lösen wollen.&lt;/p></description></item><item><title>Sliced Onion Architecture</title><link>https://backendhance.com/blog/2023/sliced-onion-architecture/</link><pubDate>Thu, 03 Aug 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2023/sliced-onion-architecture/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Vor einer Woche hat &lt;a href="https://twitter.com/odrotbohm/"target="_blank" rel="noopener noreferrer">Oliver Drotbohm&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
eine erweiterte Idee der Onion Architecture publiziert: &lt;a href="http://www.odrotbohm.de/2023/07/sliced-onion-architecture/"target="_blank" rel="noopener noreferrer">The Sliced Onion Architecture&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
.&lt;/p>
&lt;p>&lt;a href="https://alistair.cockburn.us/hexagonal-architecture/"target="_blank" rel="noopener noreferrer">Hexagonal Architecture&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
und deren Erweiterung &lt;a href="https://jeffreypalermo.com/2008/07/the-onion-architecture-part-1/"target="_blank" rel="noopener noreferrer">die Onion Architecture&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
sind den meisten Softwareentwicklern bekannt. Die Idee (vereinfacht): Man decoupled seinen Businesscode mithilfe von Adaptern von Infrastrukturcode.&lt;/p>
&lt;p>Damit ist es weniger wahrscheinlich den &lt;a href="https://de.wikipedia.org/wiki/Big_Ball_of_Mud"target="_blank" rel="noopener noreferrer">&amp;ldquo;Big Ball of Mud&amp;rdquo;&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
zu erschaffen.&lt;/p>
&lt;p>Was sehe ich in der Praxis?&lt;/p>
&lt;p>Die meisten Entwickler haben verstanden, dass es eine gute Idee den Businesscode nicht mit Infrastrukturcode zu vermischen.&lt;/p></description></item><item><title>Double-Entry Bookkeeping</title><link>https://backendhance.com/blog/2023/double-entry-bookkeeping/</link><pubDate>Thu, 13 Jul 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2023/double-entry-bookkeeping/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Ein Fehler in der Buchhaltung kann teuer sein. Gerade in großen Unternehmen, in denen es sehr viele Transaktionen gibt, ist es leicht eine zu übersehen.&lt;/p>
&lt;p>Und wenn das passiert, dann merke ich es noch nicht einmal. Vielleicht steht das Unternehmen viel besser da, als es die Bücher hergeben? Oder vielleicht ist es eigentlich unprofitabel?&lt;/p>
&lt;p>Die Kaufleute haben im 13 Jahrhundert das Problem erkannt. Es musste ein System gefunden werden, dass Fehler unwahrscheinlicher macht. Es wurde die doppelte Buchhaltung erfunden.&lt;/p></description></item><item><title>Microservices are a Big Ball of Mud</title><link>https://backendhance.com/blog/2022/microservices/</link><pubDate>Thu, 28 Jul 2022 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2022/microservices/</guid><description>&lt;p>Over the past years I attended hundreds of interviews. Many candidates proudly told tales on how they develop their projects with a microservice architecture. Often &lt;em>(I don&amp;rsquo;t want to say &amp;ldquo;always&amp;rdquo;, but from my memory I think it actually is &amp;ldquo;always&amp;rdquo;)&lt;/em> it does not require many questions to see that they used a rocket launcher to kill a mouse. &lt;strong>Microservices are hard&lt;/strong>. Everyone who experienced the pain of operating such an architecture can relate to it. The complexity kills you at one point or the other. You already had to do multiple refactorings of your architecture - because your domains didn&amp;rsquo;t work out. I wonder - why is this architecture so appealing to developers? And then I remember why I found them appealing 10 years ago.&lt;/p></description></item></channel></rss>