Das Buch „EvolutionĂ€re Architektur. UnterstĂŒtzung fĂŒr stĂ€ndigen Wandel "

Bild Es ist Zeit, einen neuen Blick auf die Postulate zu werfen, die ĂŒber die Jahre unverĂ€ndert geblieben sind. Eine sich dynamisch verĂ€ndernde Welt diktiert ihre eigenen Regeln, auch in der Computerarchitektur. Die VerĂ€nderungen, die stattfinden, erfordern neue AnsĂ€tze, die starre Systeme dazu zwingen, flexibel zu werden und sich an neue Bedingungen anzupassen. Ist eine langfristige Planung möglich, wenn sich alles stĂ€ndig Ă€ndert? Wie kann verhindert werden, dass sich die architektonische Lösung im Laufe der Zeit allmĂ€hlich verschlechtert? Hier finden Sie Antworten und Empfehlungen, die die wichtigsten Merkmale des Projekts im Kontext kontinuierlicher Änderungen schĂŒtzen. „Dieses Buch markiert einen wichtigen Meilenstein im aktuellen VerstĂ€ndnis des Problems. Wenn sich die Menschen der Rolle von Software im 21. Jahrhundert bewusst werden, werden Informationen darĂŒber, wie sie auf VerĂ€nderungen reagieren und gleichzeitig das Erreichte beibehalten können, zu einer wesentlichen FĂ€higkeit in der Softwareentwicklung. “ - Martin Fowler


Evolutionsarchitektur: Fallen und Antimuster


Wir haben viel Zeit damit verbracht, die richtigen KonnektivitÀtsebenen in der Architektur zu diskutieren. Wir leben jedoch auch in der realen Welt und beobachten viele ZusammenhÀnge, die die EntwicklungsfÀhigkeit des Projekts beeintrÀchtigen.

Es wurden zwei schlechte Entwurfspraktiken identifiziert, die in Softwareprojekten offensichtlich sind: Fallen und Antimuster. Viele Entwickler verwenden das Wort Antipattern als Slang-Begriff „schlecht“, aber seine wahre Bedeutung muss geklĂ€rt werden. Antipattern-Software besteht aus zwei Teilen. Erster Teil: Antipattern ist eine Praxis, die zunĂ€chst als gute Idee erscheint, sich aber in einen Fehler verwandelt. Zweiter Teil: FĂŒr die meisten Antimuster gibt es viele, viel bessere Alternativen. Architekturentwickler bemerken viele Antimuster nur im Nachhinein, daher ist es schwierig, sie zu vermeiden. Die Falle sieht auf den ersten Blick wie eine gute Idee aus, manifestiert sich aber sofort als schlechter Weg. In diesem Kapitel betrachten wir gemeinsam Fallen und Antimuster.

Technische Architektur


Dieser Abschnitt konzentriert sich auf die in der Industrie ĂŒbliche Praxis, die sich besonders nachteilig auf die FĂ€higkeit des Teams auswirkt, Architektur weiterzuentwickeln.

Antipattern: Vendor King

Einige große Unternehmen erwerben ERP-Software (Enterprise Resource Planning), um allgemeine GeschĂ€ftsaufgaben wie Buchhaltung, Bestandsverwaltung und andere RoutinevorgĂ€nge zu lösen. Dies funktioniert, wenn Unternehmen bereit sind, ihre GeschĂ€ftsprozesse und andere Lösungen zu biegen, um dieses Tool anzupassen, und kann strategisch eingesetzt werden, wenn Architekturentwickler die EinschrĂ€nkungen und Vorteile verstehen.

Viele Organisationen werden jedoch in Bezug auf Software dieser Kategorie zu ehrgeizig, was zu dem Gegenmuster des Anbieterkönigs fĂŒhrt, dessen Architektur vollstĂ€ndig auf den Produkten des Lieferanten basiert, was die Organisation pathologisch an dieses Tool bindet. Unternehmen, die Lieferanten-Software kaufen, planen, das Paket mit ihren Plug-Ins zu erweitern, um die GrundfunktionalitĂ€t zu erweitern und es an den Themenbereich des Unternehmens anzupassen. Lange Zeit kann das ERP-Tool jedoch nicht ausreichend konfiguriert werden, um die erforderlichen Anforderungen vollstĂ€ndig zu implementieren, und Entwickler sind aufgrund der EinschrĂ€nkungen des Tools und weil sie es zum Zentrum des Architekturuniversums gemacht haben, hilflos. Mit anderen Worten, die Architekturentwickler machten den Lieferanten zum König ihrer Architektur und diktierten zukĂŒnftige Entscheidungen.

Um Antimuster zu vermeiden, sollte man die Software einfach als einen weiteren Integrationspunkt betrachten, selbst wenn sie anfĂ€nglich ein breites Spektrum von Verantwortlichkeiten hatte. Unter der Annahme der Integration im Anfangsstadium ist es einfacher, nutzlose Eigenschaften durch andere Integrationspunkte zu Ă€ndern und den König vom Thron zu stĂŒrzen.

Durch die Platzierung eines externen Tools oder einer externen Plattform im Zentrum der Architektur haben Entwickler ihre FĂ€higkeit, sich in zwei Hauptrichtungen zu entwickeln, erheblich eingeschrĂ€nkt, und zwar technisch und aus Sicht des GeschĂ€ftsprozesses. Entwickler sind technisch begrenzt durch die Wahl des Anbieters in Bezug auf Speichersysteme, unterstĂŒtzte Infrastruktur und viele andere EinschrĂ€nkungen. Aus Sicht des Themenbereichs leidet ein großes Kapselungswerkzeug letztendlich unter dem Antimuster „Falle auf den letzten 10%“. Aus Sicht der GeschĂ€ftsprozesse kann dieses Tool keinen optimalen Workflow unterstĂŒtzen. Dies ist eine Nebenwirkung oder Falle in den letzten 10%. Die meisten Unternehmen werden geschlossen, indem sie sich an die Plattform wenden, Prozesse ersetzen und nicht versuchen, das Tool anzupassen. Je mehr Unternehmen dies tun, desto weniger Unterscheidungsmerkmale bestehen zwischen den Unternehmen, was groß ist, da der Unterschied kein Vorteil ist.

Das Prinzip, dass wir aufhören zu arbeiten und es Erfolg nennen, ist eines der Prinzipien , die Entwickler normalerweise berĂŒcksichtigen, wenn sie mit ERP-Paketen in der realen Welt arbeiten. Da sie erhebliche Zeit- und Geldinvestitionen erfordern, zögern Unternehmen, ihnen zuzustimmen, wenn sie nicht arbeiten. Keine technische Abteilung möchte den Verlust von Millionen von Dollar akzeptieren, und der Anbieter des Tools möchte keine schlechte mehrschichtige Implementierung akzeptieren. Daher ist jede der Parteien damit einverstanden, die Arbeit zu stoppen und sie als Erfolg mit den meisten unerfĂŒllten versprochenen Funktionen zu bezeichnen.

VerknĂŒpfen Sie Ihre Architektur nicht mit dem Lieferantenkönig.

Anstatt dem Gegenmuster des Lieferantenkönigs zum Opfer zu fallen, sollten Sie Lieferantenprodukte als einen weiteren Integrationspunkt betrachten. Entwicklungen können Änderungen im Werkzeug des Lieferanten von den Auswirkungen seiner Architektur isolieren, indem sie Schichten der WiderstandsfĂ€higkeit gegen Zerstörung zwischen Integrationspunkten aufbauen.

Falle: löchrige Abstraktion


Alle nicht trivialen Abstraktionen sind zum Teil voller Löcher.
- Joel Spolsky

Moderne Software basiert auf einem Turm von Abstraktionen: Betriebssystemen, Plattformen, AbhĂ€ngigkeiten usw. Als Entwickler erstellen wir Abstraktionen so, dass wir nicht in der Lage sind, auf den unteren Ebenen stĂ€ndig zu denken. Wenn die Entwickler die von den Festplatten kommenden BinĂ€rzahlen in den Text fĂŒr das Programm ĂŒbersetzen mĂŒssten, könnten sie niemals etwas tun! Einer der Triumphe moderner Software ist, wie gut wir effektive Abstraktionen erstellen können.

Aber Abstraktionen sind teuer, weil es keine perfekten Abstraktionen gibt, und wenn sie es wĂ€ren, wĂ€ren sie keine Abstraktionen, sondern etwas Reales. Laut Joel Spolsky haben alle nicht trivialen Abstraktionen ein Loch (Leck). Dies ist ein Problem fĂŒr Entwickler, da wir glauben, dass Abstraktionen immer korrekt sind, aber oft wunderbar zusammenbrechen.

Die zunehmende KomplexitÀt von Technologie-Stacks hat die Abstraktion in letzter Zeit zu einem verheerenden Problem gemacht. In Abb. 7.1 prÀsentiert einen typischen technologischen Stack aus dem Jahr 2005.

In diesem Stapel Àndert sich der Anbietername auf den Blöcken abhÀngig von den lokalen Bedingungen. Mit der Zeit wird unser Technologie-Stack mit zunehmender Spezialisierung der Software komplexer, wie in Abbildung 2 dargestellt. 7.2.

Bild

Wie in Abb. 7.2 hat sich jeder Teil des Software-Ökosystems erweitert und ist komplexer geworden. Da die Probleme, mit denen Entwickler konfrontiert sind, immer komplexer werden, werden auch ihre Lösungen immer komplexer.

Die anfĂ€ngliche löchrige Abstraktion , bei der destruktive Abstraktion auf niedriger Ebene zu unerwartetem Chaos fĂŒhrt, ist einer der Nebenwirkungen der Erhöhung der KomplexitĂ€t des technologischen Stapels. Was ist, wenn eine der Abstraktionen auf der untersten Ebene fehlschlĂ€gt, beispielsweise ein unerwarteter Nebeneffekt eines scheinbar harmlosen Datenbankaufrufs? Da es so viele Ebenen gibt, wird dieser Fehler an die Spitze dieses Stapels verschoben, was möglicherweise zu „Metastasen“ in seinem Pfad fĂŒhrt und sich in einer tief eingebetteten Fehlermeldung in der BenutzeroberflĂ€che manifestiert. Debugging und retrospektive Analyse werden umso schwieriger, je komplexer der technologische Stack ist.

Bild

Versuchen Sie, mindestens eine Abstraktionsebene unterhalb der Ebene, auf der Sie normalerweise arbeiten, vollstÀndig zu verstehen.
- Sages Software

Obwohl das Verstehen der folgenden Ebene ein guter Rat ist, wird es immer schwieriger, dem zu folgen, da sich die Software spezialisiert und komplexer wird.

Die Erhöhung der KomplexitĂ€t des technologischen Stapels ist ein Beispiel fĂŒr ein dynamisches Gleichgewichtsproblem. Das Ökosystem verĂ€ndert sich nicht nur, sondern seine Bestandteile werden im Laufe der Zeit komplexer und verwirrender. Der vorgeschlagene Mechanismus zum Schutz sich entwickelnder Änderungen, nĂ€mlich die Verwendung von Fitnessfunktionen, kann die fragilen Punkte von Architekturverbindungen schĂŒtzen. Architekten definieren Invarianten an wichtigen Integrationspunkten, z. B. Eignungsfunktionen, die als Teil der Bereitstellungspipeline fungieren, um sicherzustellen, dass die Abstraktion nicht auf unerwĂŒnschte Weise zu fließen beginnt.

»Weitere Informationen zum Buch finden Sie auf der Website des Herausgebers

FĂŒr habrozhitelami 20% Rabatt auf Gutschein - EvolutionĂ€re Architektur

Source: https://habr.com/ru/post/de428211/


All Articles