Agile lehrt uns die wahre Bedeutung von Architektur

Bild

Was ist Architektur? Keine StĂ€dte oder GebĂ€ude, sondern eine Organisationsversion: Unternehmensarchitektur, Lösungsarchitektur, Anwendungsarchitektur, Softwarearchitektur, GeschĂ€ftsarchitektur, Infrastrukturarchitektur? Die Haare auf meinem Kopf beginnen sich zu bewegen, als wir Architekten uns diesem Thema von unserem nervigen Elfenbeinturm zuwenden, der zum Nachdenken geschaffen wurde und unseren Stolz amĂŒsiert. Aber dieses Mal muss ich auf dieses Thema eingehen, da es eine Voraussetzung fĂŒr die Betrachtung des Themas (architektonische, technische) Verschuldung und Architektur ist. Alles zusammen wird eine Geschichte aus drei Artikeln.

Agil und was er ĂŒber Architektur sagt


Architektur wird offiziell im Agilen Manifest erwÀhnt , das besagt, dass eines der Grundprinzipien lautet: "Die besten Architekturen, Anforderungen und Entwurfsentscheidungen werden in selbstorganisierenden Teams geboren."
Die besten Architekturen, Anforderungen und Designs entstehen aus selbstorganisierenden Teams.
(Aus: Die Prinzipien des Agilen Manifests )

Das Problem ist nicht nur, dass es keine Definition dessen gibt, was Architektur ist, sondern nur, woher sie kommt, sondern auch, dass sie eher naiv ist .

Agile hat nicht nur ernsthafte UnterstĂŒtzer (und ich betrachte mich als einen von ihnen), sondern auch einen fairen Anteil an Fanatikern, die dazu neigen zu glauben (und manchmal ihre FĂŒhrung zum Glauben zwingen), dass „Arbeiten an Agile“ Ihnen eine unendliche FĂ€higkeit gibt, sich zu verĂ€ndern und dass Sie alle Arten von Änderungen vornehmen können , einschließlich großer Conversions. Wir haben sogar ziemlich große Frameworks wie das Scaled Agile Framework (SAFe), das fĂŒr Änderungen angewendet werden kann, die auf flexiblen Prinzipien fĂŒr die höchsten strategischen Ebenen basieren.

Solche Frameworks haben etwas mit den zuvor erstellten umfassenden Frameworks (FEAF, MODAF, TOGAF usw.) gemeinsam. Niemand nutzt das Ganze wirklich. Der Umfang der Frameworks ist normalerweise nicht fĂŒr alle leicht verstĂ€ndlich, die in ihrem engen Kontext arbeiten. Es scheint mir, dass die Grundlagen der gegenwĂ€rtigen Arbeitspraktiken extrapoliert wurden, um einen vollstĂ€ndigen Rahmen zu schaffen. Obwohl der „FĂŒllstoff“ noch nie getestet wurde, wird alles vollstĂ€ndig als „Best Practice“ verkauft.

Schauen wir uns TOGAF und SAFe an, sie basieren fest auf der Welt der Anwendungsentwicklung. Dies wird deutlich, wenn TOGAF eine seiner beiden Architekturdefinitionen auf der Definition der ISO- Softwarearchitektur basiert .
– , , .
(: ISO/IEC/IEEE 42010:2011)

Oder wenn SAFe uns mitteilt, dass es Funktionen und Enabler gibt und einer der Enabler die „Infrastruktur“ ist (obwohl Sie dieses Konzept natĂŒrlich abstrahieren können). Frameworks sind oft etwas schwer in Definitionen und Details, sie versuchen umfassend zu sein. Daher wachsen sie oft im Laufe der Zeit, um immer mehr zu definieren und zu umarmen. Große Frameworks werden jedoch normalerweise nur teilweise verwendet, da das vollstĂ€ndige Framework in den meisten Situationen ein bĂŒrokratischer Überschuss ist. Was oft in der „Krankheit der Definition“ gesehen wird, ist der Wunsch, strenge Definitionen fĂŒr alles zu erstellen, auch fĂŒr Dinge, die solche Definitionen in der RealitĂ€t ignorieren ( Ludwig Wittgenstein ).

WĂ€hrend große Frameworks mit kritischem Blick betrachtet werden können, ist das Agile-Konzept selbst (wenn auch nicht neu) in der Tat eine sehr praktische Antwort (zumindest teilweise) auf KomplexitĂ€t und vor allem VariabilitĂ€t. AgilitĂ€t ist die Reaktion auf die meisten VerĂ€nderungen und Transformationen in den heutigen komplexen Organisationen. KomplexitĂ€t, weil IT komplex sein durfte . VariabilitĂ€t, da die IT im Vergleich zu Fabriken mit schwerem GerĂ€t ziemlich einfach zu Ă€ndern ist. Es ist immer noch Software und sogar Hardwarehat beispielsweise keine solche Lebensdauer wie die WĂ€nde eines GebĂ€udes. Komplexe Organisationen fĂŒhren heute zu autonomeren VerĂ€nderungen als die Papierorganisationen der Vergangenheit. Der Wasserfall mit Big Up-Front Design (BUFD) ist so unpraktisch geworden, dass er in der heutigen Welt mit einer IT-Belastung fast unmöglich geworden ist. Auf diese Weise erhalten wir in unseren Organisationen eine permanente massenparallele Entwicklung auf der Grundlage vieler (agiler) Teams, die parallel arbeiten.
, - . - , , , . - — , — .
( , )



Wie oben erwĂ€hnt, sind Diskussionen ĂŒber „Was ist Architektur?“ In der Regel eine Energieverschwendung. Es ist besser, sie fĂŒr die Entwicklung guter Designlösungen fĂŒr Ihr Unternehmen auszugeben. Es gibt viele Definitionen von Architektur, ich habe die am hĂ€ufigsten verwendeten oben angegeben. In Mastering ArchiMate gibt es eine andere Definition, und ich gebe zu, dass es mir teilweise gefĂ€llt: Bei der

Unternehmensarchitektur geht es darum, alle verschiedenen Elemente eines Unternehmens zu verstehen und wie diese Elemente miteinander verbunden sind.

Dies ist vom Institut fĂŒr Unternehmensarchitekturentwicklungen. Es ist nicht so, dass ich nicht mit allem einverstanden bin, was sie schreiben, aber dennoch sagt dieses "O" aus irgendeinem Grund nicht "Wie". Und „Verstehen“ ist ein ebenso schlĂŒpfriges Wort. Das alles hilft dir also nicht wirklich. Es gibt viele andere Definitionen vom MIT, der US-Regierung usw. Eine davon von der ArchiMate Foundation: „Eine vereinbarte Gesamtheit von Prinzipien, Methoden und Modellen, die beim Entwurf und der Implementierung der Organisationsstruktur eines Unternehmens, von GeschĂ€ftsprozessen, Informationssystemen und Infrastrukturen verwendet werden ".

Aber die Definition, die zu meinen eigenen GefĂŒhlen passt, war, dass Martin Fowler in seinem weithin bekannten Artikel von 2003: „ Wer braucht einen Architekten?“". Dort definiert er Architektur als „Dinge, die schwer zu Ă€ndern sind“. Dies unterscheidet sich nicht von der Definition von Grad Buch, der sagte:

Alle Architektur sind Entwurfsentscheidungen, aber nicht alle Entwurfsentscheidungen sind Architektur. Architektur stellt wichtige Entscheidungen dar, die ein System bilden, in dem die Wichtigkeit an den Kosten der VerÀnderung gemessen wird.

(Hinweis: Ein vollstĂ€ndigeres Zitat enthĂ€lt einen guten Punkt zu „Wissenschaft und Kunst“.) Ich bin auch der festen Überzeugung, dass Architektur schließlich nichts anderes als Entwurfsentscheidungen ist und dass der Wunsch, sie wirklich zu trennen, zum Teil von „[dem Wunsch] herrĂŒhrt, ĂŒber Entwurfsentscheidungen zu sprechen, sie aber so aufzublasen sie klangen wichtig “(Fowler). In unserer Welt der Architektur können wir also sagen:Architektur sind Entwurfsentscheidungen, die schwer zu Ă€ndern sind . NatĂŒrlich ist es wirklich schwierig, sie nur zu Ă€ndern, wenn sie implementiert wurden. Das Papier wird alles aushalten und Buchstaben werden sich leicht Ă€ndern (es sei denn, Sie befinden sich in einer 6 Monate alten höllischen Architekturdiskussion). Architektur als Maß fĂŒr die Wichtigkeit von Entwurfsentscheidungen ist jedoch eine gute Definition und viel besser als bei ISO, ArchiMate, TOGAF usw. Es

gibt jedoch eine SubtilitĂ€t mit der Eigenschaft „schwer zu Ă€ndern“.

Angenommen, Sie haben eine Entwurfslösung, die Ihren Entwicklern beschreibt, wie sie ihren Python-Code strukturieren sollen. Wenn Sie viel Code haben, ist viel Arbeit erforderlich, um den gesamten Code von einer Struktur in eine andere zu Ă€ndern. Mit anderen Worten, es ist schwer. Daher ist diese gewĂ€hlte Lösung "Architektur", in diesem Fall Softwarearchitektur. Ein Entwickler kann diese Entscheidung jedoch leicht ignorieren und Code schreiben, der die Dinge anders macht. Am Ende ist es einfach, Änderungen an der Software vorzunehmen. Obwohl es schwierig ist, die gesamte implementierte Architektur zu Ă€ndern, ist es oft einfach genug, nur einzelne Teile darin zu Ă€ndern (siehe Ralph Johnson oben). Architektur ist daher etwas "Schweres", das aus vielen "Licht" besteht. Sie sehen es zum Beispiel auf allen EbenenWenn Sie nur Oracle-Datenbanken verwenden möchten und plötzlich separate PostgreSQL-Datenbanken angezeigt werden, die relativ einfach einzurichten und daher leicht anzuzeigen sind (was Ihre Landschaft komplexer macht, wird dies normalerweise nicht genehmigt). Aber ersetzenAlle Oracle auf PostgreSQL in Ihrer Landschaft ist schwer (und dies ist möglicherweise nicht einmal vollstĂ€ndig machbar). Daher wird die folgende Definition gebildet:

Architektur - Entwurfsentscheidungen, die schwer vollstÀndig aus Implementierungen zu entfernen sind.

(Obwohl Fowlers Kontraktion in den meisten FĂ€llen „schwer zu Ă€ndern“ ist). Eine weitere Bemerkung zu „schwer zu Ă€ndernden“ ist, dass es aufgrund der AbhĂ€ngigkeit von anderen schwierig sein kann, sie zu entfernen. Daher ist die Bedeutung des Wortes „Implementierung“ weit gefasst und Ă€ndert beispielsweise sowohl Hersteller als auch Verbraucher des Dienstes. "Schwer" sollte immer aus der Sicht Ihres Unternehmens betrachtet werden. Dies ist ein gutes Beispiel dafĂŒr, warum der Bereich der Architektur normalerweise breiter ist als der Bereich einer Lösung, eines Projekts oder eines Produkts.
Hinweis: 1) Diese Definition ist nicht IT-abhĂ€ngig. 2) Es kann argumentiert werden, dass ich auf diese Weise die Bedeutung des Wortes "grundlegend" in der Definition von "Architektur" gemĂ€ĂŸ ISO offenbart habe.

AgilitĂ€t und Architektur, verschiedene Enden des gleichen Maßstabs


Es stellt sich eine sehr interessante Beziehung zwischen der Welt von Agile und der Welt der Architektur heraus. Agile wurde entwickelt, um Änderungen so weit wie möglich vorzunehmen, um Änderungen einfach (oder zumindest nicht schwierig ) zu machen. Und auf der anderen Seite: In der Architektur sind VerĂ€nderungen, wie wir bemerkt haben, schwierig . Mit anderen Worten, sie befinden sich am anderen Ende des Spektrums und sind ein grundlegender Schwung in Ihrer Organisation.

Ich unterstĂŒtze Agile und erklĂ€re, dass dies der beste Weg ist, um Änderungen an unseren IT-geladenen komplexen GeschĂ€ftslandschaften vorzunehmen. Das bedeutet jedoch, dass alles, was wir mit agilen AnsĂ€tzen nur schwer erreichen können, de facto die „Architektur“ ist. Agile lehrt uns also, was Architektur ist .

Hinweis: Es ist wichtig zu beachten, dass Agile viel von Lean ĂŒbernimmt, was auf Toyotas Ansatz fĂŒr physische Anlagen basiert. Toyota wollte die Produktion flexibler gestalten, um der KomplexitĂ€t gerecht zu werden. Es gibt jedoch viele Aspekte dieses Setups, die sich nicht leicht in die Feuersteinwelt der Software ĂŒbertragen lassen. Zum Beispiel unterstĂŒtzte Toyota eine sehr begrenzte VariabilitĂ€t, und die meisten Dinge konnten sich nicht Ă€ndern. In der Software kann sich alles Ă€ndern, und es ist per Definition nicht wahr, dass eine Methode, die den physischen Produktionsprozess (geringfĂŒgig, aber mit großer Wirkung) unteroptimiert, die Grundlage fĂŒr einen anderen Produktionsprozess sein kann.

Wo finden wir Architektur, wo gerÀt Agile in Schwierigkeiten? Es gibt mehrere offensichtliche Beispiele:

  1. feature/defect «», , . ( , , ESB ), . , . , , ( ), .
  2. Agile , , YAGNI (You Ain’t Gonna Need It) (just in time). SAFe Architectural Runway, features defects. SAFe , . SAFe « Runway», features «». YAGNI ( , «»). – , – . , , Agile , « , DevOps» (DRDC). , , Tomcat, JBoss, Session state storage , File sharing, Redis, MongoDB, MQ, IIS .. Lean ( ) YAGNI, , , «» («muda» « » Lean). , , , , ( «muru» «»). , , Runway , , .
  3. Agile , . , , , . , , Agile ( «muri» «»). , . Agile ( : ...) – .

Ich entschuldige mich fĂŒr die freie Verwendung japanischer Begriffe hier. Daher konzentriert sich Agile auf die Tatsache, dass Architektur ein Objekt ist, keine Praxis, aber der Verstand sagt Folgendes:

Architektur ist jede implementierte Entwurfsentscheidung, die Agile schwierig macht.

Die Wahl, was Sie in Ihren „Runway-Erweiterungsplan“ aufnehmen, hĂ€ngt davon ab, wie schwierig es sein wird, die Transformation durchzufĂŒhren: Dies ist die Wahl der Architektur. Und Sie können es nicht einfach den Produktbesitzern ĂŒberlassen, die unter dem Druck der Benutzer stehen. Die Wahl sollte auch unter Beteiligung von Architekturakteuren getroffen werden, damit es Gegenmaßnahmen gegen „Bunker“ und „kurzfristig“ gibt. Mehr ĂŒber Architektur (als Praxis) im zweiten Teil dieser Mini-Artikelserie.

Architektur als eine Kombination von „schweren Dingen“ zu definieren, ist nicht alles, was wir brauchen. Denn wir sind nicht nur „hart“, sondern brauchen auch einige Empfehlungen, wonach wir mit Architektur streben sollen. Es wird oft gesagt, dass die Idee der Architektur darin besteht, FlexibilitĂ€t zu schaffen, indem flexible Lösungen geschaffen werden. TatsĂ€chlich erklĂ€rte Fowler, dass die Aufgabe des Architekten darin bestehe, die Architektur zu entfernen. Aber es ist zu einfach. FlexibilitĂ€t ist normalerweise kostspielig und diese „Kosten“ (Zeit und Geld) können nicht unbegrenzt steigen (siehe Johnson oben). Jeder möchte, dass die Lösungen völlig flexibel sind, aber sie sind nicht billig (und niemand möchte die Rechnungen bezahlen), sie sind nicht schnell und nicht immer möglich. Manchmal ist die Situation einfach: Sie mĂŒssen Entscheidungen treffen, die schwer zu Ă€ndern sind, Sie können nichtUnterstĂŒtzen Sie alle Optionen (wenn Sie beispielsweise eine Plattform auswĂ€hlen, können Sie nicht alles unterstĂŒtzen). Wenn die Auswahl nicht sehr teuer ist, wĂ€hlen Sie natĂŒrlich flexible Lösungen oder verschieben Sie die Auswahl so lange wie möglich (wie SAFe vorschlĂ€gt: BeschrĂ€nken Sie Ihre Optionen nicht). In der Praxis muss man jedoch oft eine Wahl treffen. Eine Wahl, die schwer zu Ă€ndern sein wird, ist eine architektonische Wahl. Architektur versucht, unnötige InflexibilitĂ€t zu minimieren, weil es naiv ist zu glauben, dass es eine Welt geben wird, in der alle Änderungen einfach sind und es nichts Schwieriges gibt. Es gibt Dinge, die nicht weniger wichtig und oft sogar wichtiger sind als FlexibilitĂ€t. Ich denke, es gibt drei davon: ZuverlĂ€ssigkeit, Effizienz und FlexibilitĂ€t - Robustheit, Effizienz, FlexibilitĂ€t (REF).

Erfahren Sie mehr ĂŒber REF, Architekturpraxis und Schulden.Im zweiten Teil erinnerte ich mich jedoch an das Video „Warum Unternehmensarchitektur“, das wir vor vielen Jahren erstellt haben, als wir Architektur zur flexibelsten in der Welt von BUFD gemacht haben:


Hören Sie Ihrem Arzt und Anwalt zu


Zusammenfassend lĂ€sst sich sagen, dass Architektur (als Objekt) das ist, was „schwer“ ist, aber man kann auch sagen, dass „Architektur (als Praxis) schwer ist“. Sie sind eng miteinander verbunden, Architektur (als Praxis) ist schwierig, weil die heutige KomplexitĂ€t VerĂ€nderungen schwierig macht und die heutige UnbestĂ€ndigkeit VerĂ€nderungen mĂ€chtig macht. Deshalb muss man gute Megabyte-Architekten bezahlen . Nun, vielleicht auch nicht , aber Sie sollten auf jeden Fall guten Architekten zuhören und ihre RatschlĂ€ge sehr, sehr ernst nehmen. Es bleibt nur eine einfache Frage: Wie erkennt man einen guten Architekten?

All Articles