Software-Architektur: Zerschneide nicht den Elefanten – erschaffe lieber ein Paradies
Wenn jemand über Software-Architektur nachdenkt, bekommt er häufig die Empfehlung, den Elefanten in Scheiben zu schneiden (“slice the elephant”). Z.B. wenn Du einen kleinen, aber feinen Haustier-Shop entwerfen möchtest, musst Du ihn in einzelne Scheiben schneiden.
Aber für mich klingt „Schneide den Elefanten in Scheiben“ sehr fremd: Auch ein Elefant in Scheiben ist schwierig zu handhaben. Denn auch die Scheiben können sehr groß sein (selbst wenn sie wesentlich kleiner sind, als der ursprüngliche Elefant). Mehr noch: Die Scheiben gehören nur zu einem spezifischen Elefanten.
In diesem Moment denkst Du wahrscheinlich: Worüber redet die eigentlich? Ich rede über Software-Entwurf.Auch wenn Du den Elefanten in Scheiben schneidest und eine sogenannte n-tier Software entwirfst, bekommst Du einen Monolithen am Ende. Auch wenn Du Schnittstellen benutzt, funktionieren diese Schnittstellen nur in Deinem spezifischen Fall von Software. Andere Teile Deiner Infrastruktur können Deine Services nicht benutzen, da sie spezifisch für Deinen Entwurf sind. Das heißt, wenn Du nur Scheiben eines Elefanten hast und Du fügst sie zusammen, dann bekommst Du niemals eine Maus oder noch nicht einmal einen anderen Elefanten.
Wenn Du aber spezifische Funktionen Deines E-Commerce-Shops entwirfst, wie etwa Suche oder Detail-Ansichten, dann wirst Du wahrscheinlich in der Lage sein, sie nicht nur in Deinem Haustier-Shop, sondern z.B. auch in einem virtuellen Kunstmuseum zu verwenden.
Also, erschaffe ein Paradies mit unabhängigen Teilen – Bäume mit Früchten, Affen und Eseln, Blumen und Gras, Katzen und Mäuse, Schafe und Ziegen, der Schlange 🙂 und so weiter. Alle Pflanzen und Tiere können für sich selbst existieren, obwohl sie miteinander interagieren. Die Ziegen fressen das Gras oder die Affen die Früchte von den Bäumen. Aber es ist ein Paradies, daher fressen die Katzen die Mäuse nicht 🙂 . Wir wollen Services entwerfen, die unabhängig voneinander funktionieren, aber die miteinander arbeiten können.
Also: Schneide den Elefanten nicht in Scheiben, sondern erschaffe ein Paradies, in dem vielleicht auch der Elefant leben kann 🙂 .