Evolutionary Architecture: Unterstützung des ständigen Wandels

Doch was wäre, wenn wir Architekturen mit Blick auf Veränderungen und Skalierbarkeit entwickeln würden? Eine evolutionary Architecture unterstützt schrittweise geführte Änderungen als erstes Prinzip über mehrere Dimensionen hinweg.

Es sind nicht die Stärksten, die überleben, sondern die, die am schnellsten auf Veränderungen reagieren. Das gilt auch für Software-Architekturen, da hier die Entscheidungen getroffen werden, die man am liebsten schon zu Beginn eines Projekts treffen würde. Bisher haben die Menschen ihre Software-Architektur als schwer veränderbar wahrgenommen.

Was treibt den Wandel an?

Alles verändert sich irgendwann. Wie Einstein bekanntlich sagte, ist dies die einzige Konstante. Einige Dinge können sich ändern, wenn wir als Unternehmen die Initiative ergreifen, andere Dinge müssen sich unwillkürlich ändern. Es gibt zwei Arten von Veränderungen, mit denen sich Ihr Unternehmen auseinandersetzen muss:

  • Geschäftsbedingter Wandel: Dazu gehören neue Umsatzmodelle, disruptive Wettbewerber, neue Kanäle, veränderte Kundenbedürfnisse, Marktregulierung und Produktinnovation. Dadurch ändern sich die Geschäftsanforderungen und Anwendungsfälle, die Sie mit Ihrer Architektur adressieren.
  • Veränderung des Ökosystems: Der technische Bereich verändert sich und entwickelt sich weiter, da sich Programmiersprachen, Bibliotheken, Framework-Tools und Betriebsumgebungen ändern. Docker zum Beispiel hat dazu beigetragen, die Containertechnologie der breiten Masse zugänglich zu machen. Dadurch wurde die Art und Weise, wie wir Computerressourcen nutzen, revolutioniert.

Veränderungen können sich aufgrund des sogenannten dynamischen Gleichgewichts sehr stark auswirken. Dieser Begriff, der normalerweise in der Chemie und anderen Naturwissenschaften verwendet wird, trifft auch auf die Softwarearchitektur zu. Dynamisches Gleichgewicht bedeutet, dass bei der Änderung eines fein austarierten Zustands ständige Anpassungen erforderlich sind, um einen stabilen Zustand zu erhalten. Genau wie Yin und Yang ist auch das Software-Universum eher dynamisch als statisch. Jeder Schnappschuss Ihrer Software-Architektur ist ständig im Fluss und unterscheidet sich je nach dem Moment, in dem er gemacht wird. Wie gehen Sie also mit Veränderungen um?

Umgang mit den unbekannten Unbekannten

Es liegt in der Natur der Sache, dass man die Architektur am wenigsten ändern möchte, da sie am schwierigsten und teuersten zu ändern ist. Aus diesem Grund können Veränderungen im Ökosystem echte Probleme für die Softwarearchitektur verursachen, insbesondere für Unternehmen. Je mehr sich die Dinge ändern, desto weniger ist eine langfristige Planung möglich.

Die Vorhersagbarkeit geht verloren. Wie können Sie einen Fünfjahresplan für Ihre Architektur aufstellen, wenn dieser durch eine unergründliche Innovation leicht verworfen werden kann? Oder wenn Sie als Early Adopter rechtzeitig vorausplanen, könnten Sie am Ende auf das falsche Pferd setzen. Denken Sie an gescheiterte Programmiersprachen wie D, Fortress, J# und Wasabi. Und dann denken Sie an neue Sprachen wie Scala, Typescript und Swift. Werden sie sich durchsetzen? Oder erleiden sie das gleiche Schicksal wie Ruby, das nach der Ankündigung von Twitter im Jahr 2011, sich von dieser Sprache zu trennen, seinen Schwung verlor. Man kann nicht vorhersagen, welche Sprache als Nächstes am beliebtesten sein wird. Aber wenn der Wechsel stattfindet, müssen Sie das gesamte Ökosystem planen, das darauffolgt.

Die einzige Lösung besteht darin, eine Architektur zu entwickeln, die Veränderungen und Entwicklungen auf kosteneffiziente Weise vorwegnimmt. Rebecca Parsons, Patrick Kua und Neal Ford von Thoughtworks nannten diese Idee die evolutionary Architecture. Mit dieser Architektur können Sie sich schnell an Veränderungen anpassen, ohne dass Sie die Zukunft vorhersagen müssen, um unsichere Investitionen zu tätigen. Vorhersagbarkeit macht Platz für Evolvierbarkeit.

Evolutionary Architecture vs. frühere Architekturen

Das Leitprinzip einer evolutionary Architecture ist die Unterstützung geführter, schrittweiser, nicht-brechender Veränderungen in mehreren Dimensionen. Um die Implikationen zu verstehen, gehen wir einen Schritt zurück und betrachten die früheren Architekturen. Die erste ist natürlich die große Matschkugel, ein Softwaresystem, das keine erkennbare Architektur hat. Es ist dicht und durch die hohe Kopplung seiner Bausteine identifizierbar. Eine Änderung erfordert viele Modifikationen, die die gesamte Anwendung gefährden können: Sie ist zerbrechlich.

Die zweite Architektur, mit der man sie vergleichen kann, ist die Schichten- oder Multitier-Architektur, die die Funktionen Präsentation, Anwendungsverarbeitung, Geschäftslogik und Datenverwaltung trennt. Sie bietet eine eindimensionale Evolvierbarkeit im strukturellen Sinne, da Sie die Dimensionen der Schichten getrennt angehen. In der Praxis jedoch wirken sich Änderungen an den Schnittstellen der unteren Ebenen auf die höheren Ebenen aus. Und wenn Sie neue Funktionen auf einer Ebene einführen, kann dies Änderungen auf jeder anderen Ebene erzwingen. Wenn Sie außerdem das Prinzip des Domain-Driven Design (DDD) berücksichtigen, bei dem die Geschäftsbereiche der Benutzer im Mittelpunkt stehen, werden Sie feststellen, dass ein Bereich wahrscheinlich über mehrere Schichten verstreut ist. Eine Änderung in der Geschäftsdomäne wirkt sich auf alle Schichten aus: Sie ist nicht entwicklungsfähig.

Betrachten wir nun eine evolutionary Architecture wie die der Microservices. Es gibt einen begrenzten Kontext, der operativ getrennt ist. Die Dienste sind entkoppelt und domänenorientiert, was bedeutet, dass die Änderung eines bestehenden Dienstes keine Auswirkungen auf andere Dienste hat. Es ist, als würde man Lego austauschen.

Die Prinzipien der Evolutionary Architecture

Der Grundgedanke ist, dass Architekturelemente später geändert werden können. Wenn Sie evolutionary Architecture in Ihre Architektur einbauen, werden Änderungen billiger und einfacher. Es gibt mehrere Konzepte, die die evolutionary Architecture umgeben:

  • API: Durch die Verwendung von APIs als Rahmen für die Interaktion mit den Anwendungen können die Daten und Funktionen leicht von anderen Anwendungen abgerufen werden.
  • Cloud: Insbesondere, wenn Sie Ihre Microservices in die Cloud verlagern, kann Ihre Architektur die typischen Cloud-Vorteile wie Skalierbarkeit, Ausfallsicherheit und Hochverfügbarkeit voll ausschöpfen.
  • Headless Commerce: Wenn Sie Microservices für den E-Commerce einsetzen, können Sie das CMS von der Präsentationsschicht entkoppeln, im sogenannten Headless Commerce.
  • Event-Driven Architecture (EDA): Dieser Ansatz konzentriert sich auf Geschäftsereignisse, auf die das Unternehmen einfach reagieren muss. Eine ereignisgesteuerte Architektur bedient ihre Kunden in Echtzeit und ermöglicht es, die Geschäftslogik als globale Logik zu definieren.

Während all diese Entwicklungen und Ansätze, die von Unternehmen heute angestrebte geschäftliche Agilität ermöglichen, bildet das Konzept der evolutionary Architecture das übergreifende Prinzip. Es geht dabei um die Anpassungsfähigkeit an Veränderungen. Die folgenden fünf Merkmale sind bei der Entwicklung einer evolutionary Architecture ausschlaggebend:

  1. Fitness Funktionen. Hier wird festgelegt, wie die Zielarchitektur aussehen soll, und das ist von Unternehmen zu Unternehmen sehr unterschiedlich. Einige Systeme erfordern ein hohes Maß an Sicherheit, andere eine hohe Verfügbarkeit oder ein bestimmtes Maß an Betriebszeit. Die Vorüberlegungen zu den Eignungsfunktionen dienen der Entscheidungsfindung und der Zeitplanung und helfen Ihnen, die wichtigsten Anforderungen bei der Weiterentwicklung des Systems zu berücksichtigen.
  2. Der letzte verantwortliche Moment. Traditionell trifft man Architekturentscheidungen, bevor man Code schreibt. In einer evolutionary Architecture warten Sie auf den letzten verantwortlichen Moment, um Entscheidungen zu treffen. Und warum? Nun, weil dann wahrscheinlich mehr detaillierte Informationen zur Verfügung stehen, die berücksichtigt werden müssen. Die Herausforderung besteht jedoch darin, festzustellen, welche Entscheidungen man aufschieben kann. Die Fitnessfunktionen sollten hier eine führende Rolle spielen.
  3. Bringen Sie den Schmerz nach vorne. Manche Dinge sind schwer zu tun und können Schmerzen verursachen. Wenn Sie diese Dinge früher und häufiger tun, werden Sie die Probleme, die sie verursachen, schneller erkennen. Wenn Sie besser darin werden, diese Probleme zu lösen, werden Sie ermutigt, die Schmerzen zu automatisieren.
  4. Kontinuierliche Bereitstellung. Dies ermöglicht es Ihnen, die breitere Praxis der evolutionary Architecture zu unterstützen, da sie zwei neue Architekturattribute einführt: Testbarkeit und Bereitstellbarkeit. In einer testbaren Architektur können Sie die meisten Fehler durch automatisierte Tests aufdecken. In einer einsatzfähigen Architektur können Sie einen bestimmten Dienst ohne nennenswerte Orchestrierung oder Ausfallzeiten einsetzen. Sie ermöglicht auch Experimente und A/B-Tests, z. B. das gleichzeitige Ausführen mehrerer Versionen derselben Version.
  5. Organisierte Geschäftsfähigkeiten. Beim bereichsorientierten Design wird die Modularität auf der Ebene des Bereichs und nicht entlang der technischen Schichten geschaffen. Dies erfordert die Einrichtung funktionsübergreifender Teams pro Geschäftsbereich und verändert den Schwerpunkt von einmaligen Projekten zu laufenden Projekten. Sie bauen es, Sie betreiben es. Dadurch wird die Durchführung von Änderungen entlang klar definierter Grenzen vereinfacht, ohne dass es zu Unterbrechungen kommt.

Timing ist alles

Die evolutionary Architecture verbessert die Zykluszeit für die Umsetzung einer einzigen Änderung in die Produktion erheblich, und zwar wiederholt und zuverlässig. Dies geschieht, indem langsame Rückkopplungszyklen, Kopplung und Kohäsion beseitigt werden: die Haupthindernisse für die Anpassung an Veränderungen. Jede Komponente der Architektur kann sich im Laufe der Zeit unabhängig von ihrer Umgebung weiterentwickeln. Die drastische Verkürzung der Markteinführungszeit und die neue Anpassungsfähigkeit bringen Ihrem Unternehmen echte Manövrierfähigkeit und geschäftliche Agilität. So können Sie sich effizient an Veränderungen anpassen, neue Funktionen zum richtigen Zeitpunkt einführen und Ihre Konkurrenz schlagen. Denn mit einer evolutionary Architecture sind Sie in der Lage, Ihr eigenes Tempo zu bestimmen.

Dies ist der erste Artikel in unserer Artikelserie über evolutionary Architecture. Die zugrundeliegenden Prinzipien wie Microservices, API, Cloud Commerce, Headless Commerce und Driven Commerce können Sie auf dieser Seite ausführlich kennenlernen.

Über SQLI & Commercetools

SQLI wurde in den 90er Jahren gegründet und ist eine der größten europäischen Dienstleistungsgruppen, die sich dem digitalen Geschäft widmet. Wir sind spezialisiert auf die Konzeption, die Implementierung, die globale Bereitstellung und den Betrieb von Omnichannel-Commerce-Lösungen. Viele unserer Kunden sind Marktführer. Unser Ziel ist es, sie bei der Weiterentwicklung ihres Geschäftsmodells zu unterstützen, damit sie sich in jedem Markt oder Kanal auszeichnen können. SQLI hilft Unternehmen, B2B- und B2C-Kunden mit einer nahtlosen Erfahrung in jedem Kanal zu erreichen, indem sie aktiv sind. Mit unserer Expertise in Evolutionary Architecture & Microservices können wir die richtigen Grundlagen für eine Omnichannel-Pressence schaffen. Das Ergebnis ist eine E-Commerce-Lösung, die ein umfassendes Markenerlebnis ermöglicht und den Umsatz steigert.

Dies ist der erste Artikel in unserer Artikelserie über evolutionary Architecture. Auf dieser Seite können Sie die zugrundeliegenden Prinzipien wie Microservices, API, Cloud Commerce, Headless Commerce und ereignisgesteuerte Architektur ausführlich kennenlernen.

Whitepaper

Microservices: a paradigm shift for fast growing e-commerce business


5 Schritte um heute mit Microservices zu beginnen

 

Kontakt

Setzen Sie sich mit uns in Verbindung, um zu besprechen, wie wir Ihren digitalen Erfolg vorantreiben können.

Kontaktieren Sie uns