die architektur, die man kann

107
ä Die Architektur, die man kann. Ich bin heute hier um etwas über Softwarearchitektur zu reden. Beibringen kann ich vermutlich den wenigsten Leuten hier was, aber ich kann immerhin die Dinge thematisieren, die bei Softwarearchitektur etwas komisch sind.

Upload: johann-peter-hartmann

Post on 26-Jan-2017

421 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Die Architektur, die man kann

ä

Die Architektur, die man kann.

Ich bin heute hier um etwas über Softwarearchitektur zu reden. Beibringen kann ich vermutlich den wenigsten Leuten hier was, aber ich kann immerhin die Dinge thematisieren, die bei Softwarearchitektur etwas komisch sind.

Page 2: Die Architektur, die man kann

Wer hat alles einmal einen Commodore 64 besessen?

Page 3: Die Architektur, die man kann

1997Wir sind die Generation, die irgendwann in den 90ern angefangen hat, iT zu machen. Bei mir war das 1997.

Page 4: Die Architektur, die man kann

ä

Und dort gab es einen klaren Ort für Architektur, der im Vorfeld stattfindet - bevor der tatsächliche Softwareentwurf stattfindet.

Page 5: Die Architektur, die man kann

CTO

Lead Architect Lead Architect Head of QA

Senior ArchitectSenior

DeveloperNetSec

Consultant

Developer DeveloperPerformance

Consultant

CEO

Vice President Product

Product Manager

Product Owner

Product Designer

Die Systemarchitektur wurde meistens strategische gemacht, und gerne auf maximal hoher Ebene. Meist gibt es ein Board, das dafür verantwortlich ist.

Page 6: Die Architektur, die man kann

ä

Und diese Art Diagramme kam da meist heraus. Je nach Vertrauen in die Kollegen konnte das mehrere Wände einnehmen.

Page 7: Die Architektur, die man kann

äThud-Factor:

How much noise does my architecture make when I drop

the documentation on your desk at the end of six weeks

Jerry Weinberg nennt das den Thud-Factor: Wenn ich keine Ahnung habe wie ich die Güte meiner Tätigkeit messen soll, dann substituiere ich die Messung mit etwas, das ich beurteilen kann. Also dem Lärm, die die Dokumentation macht, wenn ich sie nach 6 Wochen auf den Tisch werfe.Wer der hier anwesenden hat schon an 500-und-mehr-Seiten-Dokumenten lang implementieren dürfen?

Page 8: Die Architektur, die man kann

ä

Lieber mehr Details als wichtiges übersehen.

Es gab einen guten Grund damals, solche Planungsmonster zu fabrizieren - wir haben, sofern es irgend möglich war, lieber mehr analysiert und mehr Details berücksichtigt als wir es heute tun würden - schon aus Angst, wichtige Dinge zu übersehen.

Page 9: Die Architektur, die man kann

Zeit

Wert

Erwarteter Wert

Gel

iefe

rt

Und wenn ich nichts übersehen habe, dann liefere ich den erwarteten Wert, weil ich ja alles richtig geplant habe.

Page 10: Die Architektur, die man kann

ä

Wer kennt alles dieses Diagramm? Genau, inzwischen dürfte es überall angekommen sein. „Künewin“ ausgesprochen, auch gerne Cynefin bzw. Cynefin in der direkten Aussprache. Eigentlich kommt es aus Dave Snowden Forschung bei IBM, ist es heute ein typisches Knowledge-Management-Tool, das einem erlaubt, die eigene Projektwelt zu verstehen.

Page 11: Die Architektur, die man kann

ä

Typische größere Softwareprojekte, und auch die vollständige IT-Architektur eines Unternehmens, sind im Regelfall im Complex-Quadranten zu finden.

Page 12: Die Architektur, die man kann

äs

Unbekannte Unbekannte : wir können nicht wissen,

wonach wir fragen sollten.Der Komplexe Quadrant ist der Bereich der Unknown Unknowns, sprich: der Dinge, von denen wir nicht wissen, dass wir sie nicht wissen. Und wenn wir nicht wissen was uns fehlt, können wir auch nicht danach Fragen.

Page 13: Die Architektur, die man kann

ä

Es ist egal, wie gut die Architektur geplant wird.

Sie enthält nie die unbekannten Unbekannten.

Und da haben wir damals die erste Frustration erlebt. Völlig egal, wie viel Aufwand wir in Architektur gesteckt haben, es gab immer Dinge, die man im Zusammenspiel übersehen hat.

Page 14: Die Architektur, die man kann

ä

Der Bug im Netzwerktreiber.

Was der Nutzer eigentlich wollte.

Die „überraschende“ Verspätung der zugesagten Schnittstelle.

Und wir kennen das alle aus der Praxis. Der Bug im Netzwerktreiber, der uns auf eine andere Device wechseln lässt. Das undokumentierte Verhalten der API, das uns ein Proxy-Layer aufzwingt, um ein konsistentes Verhalten zu erzeugen. Die Überraschende Verspätung der zugesagten Schnittstelle, die zu einem Wechsel des SAAS-Anbieters kurz vor Launch führt.

Page 15: Die Architektur, die man kann

Zeit

Wert

Erwarteter Wert

Gel

iefe

rt

Fehl

end

Und wir allen kennen die Wirkung von unbekannten Unbekannten in der Praxis - nicht alle Dinge lassen sich so technisch realisieren wie wir es gerne hätten, und wir müssen faule Kompromisse eingehen. Also liefern wir etwas weniger als ursprünglich erwartet. Zeitgleich zeigt uns der Erstaufschlag beim Kunden, welche Fragen wir wirklich hätten stellen sollen - aber nicht wussten, dass wir danach fragen sollten.

Page 16: Die Architektur, die man kann

CHAOS REPORT KLASSISCH

29 %

57 %

14 %

SuccessfulChallengedFailed

Quelle: Standish Group Chaos Report 2012

Die größte Studie zum Thema Softwareprojekte ist der Standish Group Chaos Report, den es seit über 20 Jahren gibt. Und der dokumentiert die traurige Wahrheit, die uns Softwareleuten seit 20 Jahren Sorge macht und als „Softwarekrise“ quasi zu einem Dauerbrenner geworden ist. Nur 14% Prozent aller Projekt sind in Time & Budget. 57 % laufen aus dem Budget und / oder der Zeitline, und 29 % werden nie fertiggestellt.

Page 17: Die Architektur, die man kann

ä

Falsche Zeit …

Das V-Modell 97 ist nicht umsonst noch heute das empfohlene Vorgehen in der Bundesverwaltung, und dementsprechend kann das tatsächlich sehr lange dauern, bis zu Jahren. Gerade letzte Woche sprach ich mit einer Freundin, die in einem grossen Unternehmen arbeitet und dort bei einem IT-Projekt auf Anforderungsseite dabei ist - „Offiziell soll das schon immer 2017 fertig sein, aber jeder weiss, dass das vor 2019 nichts wird.“

Page 18: Die Architektur, die man kann

CTO

Lead Architect Lead Architect Head of QA

Senior ArchitectSenior

DeveloperQA Engineer

Developer Developer Operations Guy

CEO

Vice President Product

Product Manager

Product Owner

Product Designer

Falscher Ort …

Und nicht nur auf der Zeitlinie ist das ein Problem, auch der Ort stimmt nicht. Das stellen nämlich die falschen Leute fest - nicht die mit Architektur beauftragten Planer, sondern die operativ tätigen Leute.

Page 19: Die Architektur, die man kann

Meanwhile, your competitors…

Innovation Globalisierung Digitale Transformation

Und das hat die Telekoms, die Siemens und die Rocket Internets dieser Welt damals nervös gemacht. Denn parallel passierte die Globalisierung, die digitale Transformation begann - Siemens versuchte damals noch um VOIP herumzukommen - und viele technische Innovationen auf Basis des Internets.

Page 20: Die Architektur, die man kann

ä

Nutze die Unternehmensarchitektur.

Nutze die Unternehmensprozesse.

Nimm alle Änderungen mit auf.

Liefere schnell & günstig.

Also gab es einen kräftigen Druck vom Markt, und die Firmen mussten schnell liefern. Man soll die Systemarchitektur wie geplant umsetzen, sich an die Vereinbarungen und Pläne halten, muss aber gleichzeitig nicht nur mit Überraschungen umgehen, sondern auch schneller werden.

Page 21: Die Architektur, die man kann

ä

„Dilbert-Faktor“

Offizielle Vorgaben

RealitätDistanz

Ein Kunde von uns damals hat das ganze dann jeweils den Dilbert-Faktor genannt: Wie weit entfernt sich die Realität von den offiziellen Firmen-Anweisungen?

Page 22: Die Architektur, die man kann

äDrei Seiten einer Organisation

Ich mag da das Modell von Stefan Kühl von passenderweise der Uni Bielefeld. Der ist dort Professor für Soziologie, und forscht an Themen wie Organisationsentwicklung. Er schreibt auch Bücher dazu, zB „Wenn die Affen den Zoo regieren“, und dort führt er auch dieses Modell der Betrachtung von Unternehmen an. Einige hier kennen vermutlich die Vorderbühne/Hinterbühne-Unterscheidung von Gerhard Wohland, dieses Modell ist verwandt.

Page 23: Die Architektur, die man kann

Vorstands-Vorsitzender

Teamleiter A Teamleiter B

Vorstand B

Mitarbeiter 1

Mitarbeiter 2

Mitarbeiter 3

Mitarbeiter 4

Vorstand A

Teamleiter C

Mitarbeiter 6

Mitarbeiter 7

Mitarbeiter 5 Mitarbeiter 8

Formale Seite

Organigramm Stellenbeschreibungen Offizielle Prozesse

Die formale Seite ist die, die wir bislang behandelt haben - das offizielle Organigramm, die Positionen, die Prozesse, die Abteilungen und die Verantwortungsübergänge zwischen diesen. Diese Seite ist dokumentiert und gilt, wenn man sich nicht an sie hält muss man üblicherweise Rede & Antwort stehen. Faktisch muss man manchmal aber drumherum arbeiten, damit es funktioniert.

Page 24: Die Architektur, die man kann

Informale Seite

Denkweisen Wahrnehmungsformen Handlungserwartungen „Kultur“

Das ist dann die informale Seite der Organisation, die das beschreibt, was nicht dokumentiert ist, aber zur Arbeit in der Organisation gehört. Das sind die typischen Denkweisen, die Wahrnehmungen von Themen, die Handlungserwartungen, die nicht explizit gemacht wurden. Viele kennen vermutlich das Fake-Organigram, in dem die Freundin vom Chef, die Affäre, die persönliche Abneigung und Kinder an der gleichen Schule wirken.

Page 25: Die Architektur, die man kann

Schauseite

Attraktive Darstellung nach aussen Wertformulierungen geschönt

Die Schauseite wiederum ist die Seite, mit der man sich nach draussen darstellt - im eigenen Interesse. Unsere Branche ist da quasi der Grossmeister, dass ist schlicht der HR-Situation geschuldet. Die Showseite erzeugt immer lustige Dissonanzen, wenn Leute von innen mit Leuten von aussen über das Unternehmen diskutieren. „Flache Hierarchien“ ist so ein Klassiker der Showseite.

Page 26: Die Architektur, die man kann

Formale Seite Informale Seite

Professionelle Architektur von Enterprise ArchitectsUML & V-Modell

Die Fachabteilung versucht Kundennutzen

unterzumogeln

Bei einem hohen Dilbert-Faktor begannen die Kollegen damals zweigleisig zu fahren - zum einen hält man sich an die offizielle Dokumentation, eskaliert 1-2 mal um offensichtlichen Unsinn aufzuzeigen und bei Auseinandersetzungen waffenfähiges Material in der Hand zu halten, und parallel im Hintergrund und unter dem Radar nützliche Lösungen zu schaffen.

Page 27: Die Architektur, die man kann

ä

Informale Welt

Excelgetriebene Kernprozesse

Der nächste Schritt ist dann das explizite vollständige Abweichen von der Governance im Unternehmen. Man baut mit dem Tool, das man gerade kennt oder zur Hand hat, eine Lösung, die von jeglichen Standards abweicht - mit der Ausrede, dass das ja nur temporär ist.

Page 28: Die Architektur, die man kann

ä

„Temporäre Übergangslösungen“

1 Jahr geplant>10 Jahre im Einsatz

3 Versuche „richtige Architektur“

Eine der Lieblingslösungen in meiner Laufbahn ist eine Lösung, die mehr als 10 Jahre „temporär“ im Einsatz war - und dabei 2 Versuche überlebt hat, endlich durch eine professionelle Lösung abgelöst zu werden.

Page 29: Die Architektur, die man kann

U-Boot— Projekte

Bishin zum vollständigen U-Boot-Projekt der Fachabteilung, bei dem alles - von Konzept, Architektur, Implementierung bis zum Hosting - unter dem Radar der Technikstrategie des Unternehmens ablief.

Page 30: Die Architektur, die man kann

Hmm, die wollen die Methoden gar nicht,

die sie offiziell haben.

Und wir hatten uns irgendwann daran gewöhnt, dass die Kunden zwar offiziell das eine wollten, inoffiziell aber was anderes.

Page 31: Die Architektur, die man kann

Zeit

Wert

Erwarteter Wert

Gelief

ert

Was sie tatsächlich wollten waren die kleinen u-Boot-Projekte, die zwar wenig Dokumentation Dokumentation hatten, dafür aber schnell lieferten - und so deutlich mehr Wert generierten.

Page 32: Die Architektur, die man kann

ä

Eine gute Idee erkennt man am einfachsten daran, dass jemand

Schlaues sie schon vorher hatte.

Und wie immer gilt die goldene Regel: eine schlauere Idee lässt sich am einfachsten daran erkennen, dass jemand anderes sie schon vorher hatte :-)

Page 33: Die Architektur, die man kann

Hey, das geht ja ziemlich vielen Leuten so … 2001

Dann hat es leider noch bis 2005 gedauert, bis wir endlich gemerkt haben, worum es unseren Kunden wirklich ging. Die wollten eigentlich agil, hohe Kooperation, laufende Software, sie kennen das.

Page 34: Die Architektur, die man kann

ä

Liefere funktionierende Software regelmäßig innerhalb weniger Wochen oder Monate und

bevorzuge dabei die kürzere Zeitspanne.

Heiße Anforderungsänderungen selbst spät in der Entwicklung willkommen. Agile Prozesse nutzen Veränderungen zum Wettbewerbsvorteil desKunden.

Da stand schnell Software liefern, und Änderungen willkommen heissen. Genau, das wollten die.

Page 35: Die Architektur, die man kann

ä

„Die besten Architekturen, Anforderungen und Entwürfe entstehen durch selbstorganisierte Teams.“

Und auch zu Architektur hatten die was zu sagen. Die besten Architekturen, Anforderungen und Entwürfe entstehen durch selbstorganisierte Teams. Und wie gesagt, das ganze stammt von 2001.

Page 36: Die Architektur, die man kann

ä:_Design emerges. Architecture is a collaboration.

Build the simplest architecture that can possibly work

When in doubt, code, or model it out

They build it, they test it

There is no monopoly on innovation

SAFe

Heute, viele Jahre später, sieht das nicht grundlegend anders aus - nur etwas detaillierter. Sogar die dicken Kinder unter den agilen Methoden sind hier mit dabei.

Page 37: Die Architektur, die man kann

CTO

Lead Architect Lead Architect

Senior ArchitectSenior

Developer

Developer Developer

Da steht nicht „Lead Architect“.

Auch nicht „Architecture Board“

„Die besten Architekturen, Anforderungen und Entwürfe entstehen durch selbstorganisierte Teams.“

Und obwohl das so lange schon da steht, ist das oft nicht angekommen: Die besten Architekturen entstehen durch selbstorganisierte Teams.Wenn man sich den Text ganz genau anschaut, dann wird man feststellen, dass da nicht „Lead Architect“ steht. Und noch mal genauer: da steht auch nicht Architecture Board.

Page 38: Die Architektur, die man kann

CTO

Lead Architect Lead Architect

Senior Architect

Senior Developer

Developer Developer

Nach Senior Developer kommt Architekt.

Und das ist ein Problem in vielen funktionalen Organisationen. Dort gibt es schon im Rahmen des individuellen Karrierepfades hierarchische Funktionen, die eine personenbezogene Architekturverantwortung haben. Wer von den Anwesenden hat einen Karrierepfad im Unternehmen, bei dem nach Senior Developer oder -Consultant wahlweise Architektur oder disziplinarische Funktion folgt?

Page 39: Die Architektur, die man kann

CTO

Lead Architect Lead Architect

Senior Architect

Senior Developer

Developer Developer

„Aber ich mache es doch mit dem Team!“

HIghest Paid Persons Opinion

Bei uns lief das natürlich ganz ähnlich ab. Und weil wir agil arbeiten, haben die Kollegen natürlich Wert darauf gelegt, dass die Architektur vom ganzen Team kommt. Trotzdem wurde auf sie gehört, obwohl sie selbst gar nicht so viel Wert darauf gelegt hätten. Wer kennt den Begriff „HIPPO“? Genau, die highest Paid Persons Opinion, die auch dann - wie alle Hippos - ein anderes Gewicht hat, wenn der Hippo es gar nicht will.

Page 40: Die Architektur, die man kann

CTO

Lead Architect Lead Architect

Senior Architect

Senior Developer

Developer Developer

Head of Frontend Development Senior Manager BackEnd Development

Solution Architect Storage

Fazit für uns: das kann man schon so machen, aber es nicht nicht eben einfacher zu gemeinsamer Architektur zu kommen.

Page 41: Die Architektur, die man kann

ä

Rollen statt Positionen

Wir haben deshalb teamverteilte Rollen

statt fester Positionen.

Wir sind deshalb zu teamgewählten, emergenten Rollen - wie es etwa Holacracy macht - gewechselt, die nach Situation und Bedarf angepasst werden. Aber natürlich kann auch eine gewählte Rolle so viel implizite Macht haben, dass sie einen gemeinsamen, emergenten Architekturprozess stört.

Page 42: Die Architektur, die man kann

ä

Rollen statt Positionen

Viele Folgeschmerzen bei Karriere, Gehalt &

Weiterentwicklung

Und es gibt beliebig viele Folgeschmerzen, weil damit auch die meisten trivialen Wege zu Karriere, Gehalt und Weiterentwicklung verloren gehen, und man jetzt auf einmal mit etwas schlauen um die Ecke kommen muss.

Page 43: Die Architektur, die man kann

Informale Seite

Denkweisen Wahrnehmungsformen Handlungserwartungen „Kultur“

Page 44: Die Architektur, die man kann

ä

Hero-Culture

Freiwillige Überstunden! Retter des Projektes!

Das größte Commit(ment)! Kompetenzträger Nr. 1!

aka „Engpass mit Ohren“

Informale Seite

zB wenn man eine Hero-Culture hat. Wir haben das lange Jahre gemacht, schliesslich kommen wir vom OpenSource. Und vom Standpunkt des Vorgesetzten aus klingt das natürlich super. Diese Kollegen machen freiwillig Überstunden. Und nicht nur das - sie haben das Projekt schon mehrfach gerettet. Und natürlich kommen von Ihnen deutlich mehr Commits als von den anderen. Denn sie haben am meisten Kompetenz. So viel, dass sie oft die Kollegen darum bitten, bestimmte Code-Stellen nicht anzufassen, weil sie die einzigen sind, die das nötige Knowhow mitbringen.

Page 45: Die Architektur, die man kann

ä

Hero-Culture

Wer macht die Architektur, wenn nur einer das nötige Wissen hat?

Matthäus-Effekt: Zu Knowhow kommt mehr Knowhow

Informale Seite

Im Resultat macht der Hero auch oft die Architektur. Er sitzt auf dem Wissen, lässt andere nicht daran teilhaben.

Tribal Leadership nennt das Level 2, konkret „I am great, you are not“

Page 46: Die Architektur, die man kann

ä

Hero-Culture

Die Kompetenz der Kollegen fehlt - in den Architekturentscheidungen - bei der späteren Umsetzung

DDD weil eine Person es (fast) kennt.

Informale Seite

Das resultiert in gleich zwei Dysfunktionen. Zum einen können die Kollegen Ihre Kompetenzen nicht einbringen, zum anderen fehlt ihnen die Umsetzungskompetenz.Wir selbst haben es allen Ernstes fertiggebracht vor Jahren Domain Driven Design eingeführt, ohne dass sich auch nur ein anderer Kollege damit auskannte. Und die Business-Seite, die eigentlich das Domainwissen mitbringen sollte, hat davon nie erfahren. Sie können sich vorstellen, wie gut das funktioniert hat.

Page 47: Die Architektur, die man kann

ä

Software Architecture by Blog Reading

1. Ich habe einen Blogartikel dazu gelesen

2. Es klingt interessant. Ich würde es gerne mal probieren. Einarbeiten wäre mühsam.

3. Ich verargumentiere es bei nächster Gelegenheit als optimale Architektur.

Für Manager gibt es im Cunningham-Wiki die Bezeichnung „Management by Inflight-Magazine“. Das Pendant unter den Softwarearchitekten ist die Architecture by Blog Reading. Man liest einen Blog-Artikel, findet das Thema interessant, und würde es gerne mal in der Praxis probieren - ohne allerdings nennenswert Einarbeitungsaufwand in das Thema zu stecken. Also wird es bei nächster Gelegenheit als Architekturvorschlag verargumentiert.

Page 48: Die Architektur, die man kann

ä

DDD-LiteDDD-Lite is a means of picking and choosing

a subset of the DDD tactical patterns, but without giving full attention to discovering,

capturing, and enhancing the Ubiquitous Language."

Das klingt auf den ersten Blick albern, aber taucht erstaunlich oft in der Praxis auf. Ein Beispiel ist DDD-lite, die Einführung der Tactical Patterns von DDD, ohne dass gemeinsam mit den Nutzern eine Ubiquituous Language oder auch nur ein gemeinsames Domain Model etabliert wäre. Vielleicht liegt es an den vielen Kontakten in der PHP-Welt, aber ich wäre froh, wenn ich ab und zu auch mal ein CQRS und Event-Sourcing-Tupel sehen würde, von dessen Events der User auch wüsste.

Page 49: Die Architektur, die man kann

ä

MicroService-Envy

„MicroServices sind super!

Sie sind einfach! Ich verstehe es! Neue Entwickler müssen weniger lernen! Weniger Abhängigkeiten zu anderen!“

Im ThoughtWorks Technology Radar wird explizit vor MicroService-Envy gewarnt. Weil die eigene Softwarestruktur Probleme mit der Einarbeitung von neuen Personen hat, weil man nicht in der Lage ist ein gutes Continuous Deployment hinzubekommen, weil man seine Abhängigkeiten nicht im Griff hat- deshalb möchte man MicroServices einführen, denn sie versprechen, dass man diese Probleme gelöst bekommt. Dass diese Probleme andere Gründe in der Organisation haben, und oft gar nichts mit der Architektur zu tun haben, das wird dabei gerne übersehen.

Page 50: Die Architektur, die man kann

ä

Silver Bullet

Es gibt keine einzelne Entwicklung, weder als Technik noch als Managementmethode, die Produktivität, Verlässlichkeit oder Einfachheit um eine Größenordnung verbessert

Frederic P Brooks, 1986

Dieses Verhalten ist aber nicht eben neu - 1986 hat Frederic P Brooks ein Whitepaper über „Silver Bullets“ gemacht, mit dem passenden Titel „There are no silver bullets“. Er sagt: Es gibt keine einzelne Entwicklung, weder als Technik noch als Management, die Produktivität, Verlässlichkeit oder Einfachheit um eine Größenordnung verbessert. Trotzdem versuchen wir es immer wieder.

Page 51: Die Architektur, die man kann

ä

Silver Bullets- Functional Programming - Artificial Intelligence - NoSQL - Node.JS - React - Domain Driven Design - MicroServices - Docker

Typische Silver Bullet der letzten Jahre waren Dinge wie Funktional Programming, NoSQL, Node.JS, React, Domain Driven Design, MicroServices und Docker.

Page 52: Die Architektur, die man kann

ä

Silver Bullet

Known

Unknown Planungsfehlschluss / Planning Fallacy

Wenn man sich so ein Silver Bullet anschaut, dann verstehen wir den Nutzen sehr gut, und können uns viele Szenarien ausmalen, in denen wir uns einen Benefit vorstellen können. Was wir aber nicht sehen, und da sind wir wieder bei den unbekannten Unbekannten, sind die Probleme, die Folgekosten - sprich: die Accidental Complexity, die wir uns mit dieser Architektur eingekauft haben. Das geht natürlich nicht nur uns so, sondern allen Menschen, beim Kahneman heisst das als kognitive Verzerrung Planning Fallacy.

Page 53: Die Architektur, die man kann

äDesign emerges. Architecture is a collaboration.(Wissen & Folgenabschätzung vergrössern)

Build the simplest architecture that can possibly work (KISS & YAGNI)

When in doubt, code, or model it out(Architectural Spikes)

Silver Bullets vermeiden

Abhilfe für die Planning Fallacy bietet Kooperation. Um so mehr Kollegen beteiligt sind, um so eher erkenne ich zukünftige Obstacles, und um so mehr vergleichbares Erfahrungswissen kann ich einbringen. Das gleiche Ziel verfolgt die Bitte um die einfachste Architektur die funktioniert - daher kommen auch Ansätze wie KISS oder YAGNI. Und natürlich Architectural Spikes, einfach mal auszuprobieren und damit das fehlende Wissen vervollständigen.

Page 54: Die Architektur, die man kann

ä

Junior-Teams machen Dunning Kruger

Und um so offensichtlicher diese Regeln für den erfahrenen Entwickler sind, um so schwieriger wird ist es für Junior-Teams, damit umzugehen. Und damit meine ich nicht Teams aus Junior-Entwicklern - sondern Teams mit überschaubar viel Erfahrung aus selbst gewählten Architekturen. Gerne immer das gleiche Projekte oder noch nicht so lange aus der Uni.

Page 55: Die Architektur, die man kann

ä

Frontend-Guru

Backend-Architekt

Informale Seite

Und nicht nur da geht es auf der Informalen Seite schief. Das gleiche gilt für Kollegen mit deutlich unterschiedlichen Interessenschwerpunkten im agilen Team - zB JavaScript-Hipster und Backend-Engineers. Während der eine grade das vor einem Monat neu eingeführte Framework durch ein neueres, besseres ersetzt, baut der andere das Monitoring für den Mesos-Cluster um.

Page 56: Die Architektur, die man kann

äFrontend-Tribe

Backend-Tribe

Informale Seite

Und weil die Frontend-Jungs nicht nur gemeinsame Kompetenzen und Themen haben, sondern auch gleiche Interessen, verstehen sie sich gut. Die Backend-Guys sehen das ähnlich. Sie sind unter sich, und froh darüber. Immerhin muss man sich nicht mit Hipstern abgeben, sondern implementieren gerade SMACK

Page 57: Die Architektur, die man kann

äFrontend-Tribe

Backend-TribeWe are great.

You are not.

Backend- Stümper

Informale Seite

Und schwups hat man wieder ein Szenario aus Tribal Leadership. Weil man die eigenen Themen gut versteht und die eigenen Interessen wie Hintergründe kennt, verlässt man sich im Frontend aufeinander. Im Gegensatz dazu machen die Jungs im Backend Dinge, die man nicht versteht, und die offensichtlich auch wichtige Dinge nicht berücksichtigen.

Page 58: Die Architektur, die man kann

äFrontend-Team!

Backend-Team!

2 TeamsFormale Seite

Und weil man lieber mit den kompetenten Leuten zusammenarbeit, schlägt man vor, dass man das Team trennt. Uns ist das auch oft beim Wachstum von Teams passiert. Das kann auch implizit passieren. Wir hatten gerade letzte Woche den Fall, wo es eine längere Diskussion gab.

Page 59: Die Architektur, die man kann

2 TeamsFrontend-Layer

jQuery, AngularJS 1, AngularJS2

Backend-LayerjQuery, AngularJS 1, AngularJS2

REST/JSON

Und, quasi unvermeidlich, hat man einige Zeit später so eine Architektur.

Page 60: Die Architektur, die man kann

ä

„Organisationen, die Systeme entwerfen, sind auf Entwürfe festgelegt, welche die Kommunikationsstrukturen dieser Organisationen abbilden.“ Conways Law

Dieses Phänomen kennen wir natürlich alle - es handelt sich um Conways Law. Organisationen, die Systeme entwerfen, können nur Systeme erzeugen, die ein Abbild Ihrer Kommunikationsstruktur sind.

Page 61: Die Architektur, die man kann

äCTO

Lead Architect Lead Architect Head of QA

Senior Architect

Senior Developer QA Engineer

Developer DeveloperOperations

Guy

CEO

Vice President Product

Product Manager

Product Owner

Product Designer

Organisation Architektur

Conways Law

Aus der Kommunikation - oder, nach neueren Studien, aus der Organisationsstruktur selbst heraus ergibt sich also die Architektur.

Page 62: Die Architektur, die man kann

Architecture Board

Team 1 Team 2 Team 3

CTO

Enterprise Service Bus

Solution 1 Solution 2 Solution 3

Organisation

Architecture

Und das hat viele Varianten. zB das 2007 klassische SOA-Setup, das praktisch in der Mitte jeder Architektur-Tapete zu finden war.

Page 63: Die Architektur, die man kann

Incredibly Slow Changes

Fast Changes Slow Changes Slow Changes

Organisation

Architecture

Fix it!

Architecture Board

CTO

Und wenn man als Teil von Team 1 etwas ändern musste hatte alles 3 Geschwindigkeiten: Wenn ich es in Team 1 selbst machen konnte war es sehr schnell. Wenn ich dabei auf die Hilfe der anderen Teams angewiesen war ging es zwar langsamer, aber noch ok. Und wenn ich Änderungen im ServiceBus selbst brauchte konnte es beliebig lang dauern, je nachdem, wie viele Meetingtermine im Architecture Board benötigt werden.

Page 64: Die Architektur, die man kann

Customer-Facing Company

Company 2 Offshore-Company

Organisation

ArchitectureFrontend-Layer

Backend- Stack

Other Backend-

Stack

Eine andere Variante, die uns untergekommen ist: Hinter einem einzigen Portal stehen gleich 3 Firmen: eine ist Customer-Facing, eine ist als IT-Dienstleister vor Ort, und die dritte gehört zwar zur Familie, wohnt aber in einem anderen Land. Im Resultat gibt es zwei konkurrierende Backend-Stocks - und natürlich Politik darüber.

Page 65: Die Architektur, die man kann

ä

DevOps zitiert eine weitere Variante von Conways Law - funktional getrenntes Software-Development und Betrieb. Der eine Bereich muss zwar die Software des anderen laufen lassen, hat aber ganz andere Ziele. Und sie verstehen sich nicht.

Page 66: Die Architektur, die man kann

Der Lösungsansatz von DevOps ist deshalb eine Änderung der Arbeitsweise. An die Stelle von funktionaler Trennung tritt die direkte Zusammenarbeit.

Page 67: Die Architektur, die man kann

Dev Ops

QA

DevOps

Prozesse Werkzeuge

Leute Ziele

Verständnis

Deshalb fordert DevOps, dass hier die Kommunikation in der Organisation geändert wird. Und man deshalb bei den funktionalen Themen Development, QA und Ops in der Organisation zusammenarbeitet - in gemeinsamen Prozessen, mit gemeinsamen Werkzeugen, mit gemeinsamen Leuten, gemeinsamen Zielen - und, am Ende resultierend - gemeinsamen Verständnis.

Page 68: Die Architektur, die man kann

äIch

kann also nur die Architektur machen,

was meine Organisation

Hmm, da fragt man sich natürlich, ob man faktisch überhaupt eine Wahl hatte - oder ob die Organisation zwangsläufig das ergibt, was die Organisation eben erlaubt.

Page 69: Die Architektur, die man kann

ä

Inverse Conway Maneuver

The 'Inverse Conway Maneuver' recommends evolving your team and organizational structure to promote your desired architecture.

Die Jungs von Thoughworks haben deshalb das Inverse Conway Maneuver geschaffen - ich bewege meine Firma und mein Team dorthin, wo ich meine Architektur haben möchte.

Page 70: Die Architektur, die man kann

ä

Eine gute Idee erkennt man am einfachsten daran, dass jemand

Schlaues sie schon vorher hatte.

Und wie immer gilt die goldene Regel: eine schlauere Idee lässt sich am einfachsten daran erkennen, dass jemand anderes sie schon vorher hatte :-)

Page 71: Die Architektur, die man kann

Vice President Product

Vice President Development

Vice President Quality

Vice President Maintenance

Product Developer

Software Developer

Quality Assurance

Operator

Product OwnerFrontend

DeveloperTester

NetSecConsultant

Product Designer

BackendDeveloper

Test Infrastructure

Performance Consultant

CEO

Um das mal am Beispiel zu zeigen. Wie schon berichtet ist die Herkunft vieler Unternehmen eine funktionale Organisation, zT auch in der Erweiterung zur Matrix-Organisation.

Page 72: Die Architektur, die man kann

One Department

CTO

Senior Manager Senior Manager Product Owner Scrum Master

Manager Manager Developer Security Expert

Head of Something

Doing actual Work

Senior Developer QA Expert

CEO

Other Department

Software Island

Wenn die Unternehmen einen IT-Schwerpunkt haben agile Methoden da meist schon Bewegung reingebracht - und in den IT-Departments gelten andere Regeln. Da gibt es nicht nur Obst, Cola, informelle Kleidung und flexible Arbeitszeiten, sondern auch einen anderen Führungsstil.

Page 73: Die Architektur, die man kann

Vice President Product

Vice President Development

Vice President Quality

Vice President Maintenance

Product Developer

Software Developer

Quality Assurance

Operator

Product OwnerFrontend

DeveloperTester

NetSecConsultant

Product Designer

BackendDeveloper

Test Infrastructure

Performance Consultant

CEO

Selbstorganisiertes Team

You built it, you run it.

MicroServices

Microservices erlaben dank der DevOps-Methodenwelt dieses Thema weiter zu führen, denn das selbstorganisierte Team kann jetzt die komplette Strecke - von Produktentwicklung bis zum Betrieb - selbst abbilden. Und wie man sieht steht es damit quasi quer zur funktionalen Organisation.

Page 74: Die Architektur, die man kann

Infrastructure iOS ClientUserProfile

WebPayment Service

System EngineerProduct

DeveloperProduct

DeveloperProduct

Developer

Security Guy Developer Developer Developer

Data Scientist System Engineer System Engineer System Engineer

CEO

MicroService-Team

MicroService-Team

Infrastructure-Team

MicroService-Team

Die funktionale Organisation wurde also in eine Themenbezogene gekippt, geschnitten nach Business-Domains.

Page 75: Die Architektur, die man kann

Organisationsstruktur nach Deployment

+ Innovation statt Funktion

Und das hat einen ganz interessanten Effekt gebracht. Auf einmal ist nicht mehr die Spezialkompetenz die Schnittkante der Abteilungen, sondern das Deployment. Der altmodische Admin-Task ist auf einmal massgeblich dafür, wie die Firma selbst geschnitten ist.

Page 76: Die Architektur, die man kann

Damit ändert sich die Organisationsstruktur. Und es kommt etwas wie bei Spotify heraus. Ähnliche Modelle findet man auch bei Netflix, bei Valve und vielen anderen.Hier gibt es immerhin noch einen Tribe Lead, der sich jeweils schüchtern an die linke obere Ecke gestellt hat.

Page 77: Die Architektur, die man kann

MicroService-Team

Infrastructure- Team

In der deutschen Diskussion findet man oft das Pfirsichmodell von Unternehmen, dass von Gerhard Wohland definiert wurde und von Niels Pfläging - dem ich hier die Grafik gestohlen habe - popularisiert wurde. Die kleinen Kreise am Rand sind die selbstorganisierten, autonomen Teams, die direkt am Markt lang arbeiten und sich weiterentwickeln. Die Teams in der Mitte bieten diesen Teams Service, liefern zB Development- und andere gemeinsam genutzte Infrastruktur, die Core-Libraries etc.

Page 78: Die Architektur, die man kann

Eine der Organisationsformen mit einem sehr guten Marketing-Department ist Holacracy - hier in einem Screenshot eines Berichtes auf Aljazeera. Diese Form wird also wirklich ernst genommen. Holacracy - oder auf deutsch Holokratie - ist eine der Organisationsformen, die auf Basis von agiler Arbeit entstanden sind.

Page 79: Die Architektur, die man kann

ä

Inverse Conway Maneuver

Ok, dann machen wir das einfach mal?

Ok, und wie komme ich dahin?

Page 80: Die Architektur, die man kann

How to Become a Microservice-Company

in 5 Steps

1. Agile Methoden einführen & beherrschen 2. DevOps-Werkzeuge & -Kultur einführen 3. Agile Unternehmenskultur changemanagen 4. Unternehmen restrukturieren 5. Allen Code reengineeren

Der Nachteil an der Geschichte ist aber, dass man nur die formale Seite so frei definieren kann.

Page 81: Die Architektur, die man kann

ä

VersionOne Report 2016

95% praktizieren agil

1% sind gescheitert

Schauen wir uns doch mal an, was typischerweise in den Unternehmen passiert. Eine wenigstens aktuelle Quelle ist der VersionOne Anual State of Agile Report. Die Ergebnisse sind ein bisschen verfälscht, weil sie als Firma mit einem Tool für agile Unternehmen natürlich eher diese ansprechen.

Page 82: Die Architektur, die man kann

ä46 %

Unternehmensphilosophie oder -kultur widerspricht agilen Kernwerten

41 %Fehlende Erfahrung mit agilen Methoden

39 % Fehlende Managementunterstützung

38 %Fehlende Unterstützung beider kulturellen Transition

Kernursachen für das Scheitern agiler Projekte

10th State of Agile Report aus 2016.

Page 83: Die Architektur, die man kann

ä

83 % Tägliche Standups

82 % Priorisierter Backlog

59 % Teamschätzung

50 % Continuous Integration

27 % Continuous Deployment

Was machen die agilen 95%?

10th State of Agile Report aus 2016.

Page 84: Die Architektur, die man kann

ä

Wie lange dauert eine agile Transition?

?Wer befindet sich hier in einer digitalen Transition? Genau, wir machen das auch seit 2005, und haben mehr als 7 Jahre gebraucht, um die Teams wirklich brauchbar aufzustellen.

Page 85: Die Architektur, die man kann

ä

1. Agile Methoden einführen & beherrschen 2. DevOps-Kultur & -Werkzeuge einführen 3. Agile Unternehmenskultur changemanagen 4. Unternehmen restrukturieren 5. Allen Code reengineeren

SO YOU MEAN TO TELL MEYOU WANT TO DO

ALL 5 STEPS BUT YOU CAN’T DO

THE 1ST?

Und wir brauchen Jahre für den ersten Schritte, scheitern oft - und wollen mal alles schnell machen, weil unsere Wunscharchitektur das braucht?

Page 86: Die Architektur, die man kann

äAutonome Teams mit

dokumentierten Prozessen.

Selbstorganisierte Teams mit Architekturverantwortlichem.

MicroServices nach einem vorgegebenen Techset

„Business Domains“, die das Business nicht kennt

Und was, wenn ich es einfach trotzdem mache?

Agile MicroService-Teamsdie unnötige Features implementieren

Und was passiert, wenn ich es einfach trotzdem mache? Weil ich in einem Blogpost gelesen habe, dass MicroServices so etwas wie ein Silver Bullet sind?

Page 87: Die Architektur, die man kann

äOkay, ich muss

also agil, DevOps und die passenden Kultur

haben?

Hmm, da fragt man sich natürlich, ob man faktisch überhaupt eine Wahl hatte - oder ob die Organisation zwangsläufig das ergibt, was die Organisation eben erlaubt.

Page 88: Die Architektur, die man kann

Warum nicht schon 1980?!

Aber noch etwas anderes ist bei DevOps passiert. Hätte man denn nicht schon deutlich vorher auf DevOps kommen können? Warum ist Flickr da erst 2009 drauf gekommen?

Page 89: Die Architektur, die man kann

Schauen wir doch mal direkt in den Talk von 2009 hinein, der DevOps in die Popularität gespült hat.

Page 90: Die Architektur, die man kann

Und da ist was spanendes enthalten: sie reden vor allem über Technologie.

Page 91: Die Architektur, die man kann

Hey, das ist ja Architektur.

Diese Punkte sind Architektur. Das sind Technologiestacks, die dort eingeführt wurden. Und DevOps ist enstanden, weil jetzt diese Technologie zur Verfügung stand.

Page 92: Die Architektur, die man kann

ä

Development Q.A. Operations

Continous Integration

Infrastructure as Code

Shared Version Control

Die vorher schwierige Kooperation mit den nachträglich angesetzten Qualitätsverantwortlichen wurde durch eine gemeinsame kontinuierliche Integration zu kooperativer Arbeit. Regressionstests sind automatisch in die CI gefallen, und auf einmal brauchte sich die Q.A. nicht mehr um Wiederkehrerfehler kümmern, und man konnte die eigenen Tests in Code giessen und damit einen guten Stapel Donkey-Work abgeben. Mit Infrastructure as Code gab es eine gemeinsame Basis für Konfiguration, und weil es alles im gemeinsamen Versionsmanagement war, konnten auch die anderen unmittelbar damit arbeiten. Die Änderungen an Infrastruktur sind keine Frage von Produktions-Changes mehr, sondern ein Commit, der bei einer bestimmten Version einfach mit übernommen wird. Automatisiert getestet, versteht sich.

Page 93: Die Architektur, die man kann

„DevOps is just short for DevProductSupportNetSecBizOps.

Und da hört es nicht auf. Die DevOps-Community sagt nicht umsonst: DevOps ist just short for DevProductSupportNetSecBizOps.

Page 94: Die Architektur, die man kann

ä

Business Analytics

Product Development

Development Operations

Shared Metrics

Feature Toggles

Dabei spielen insbesondere zwei Dinge eine Rolle: gemeinsame Metriken über alles und Feature Toggles. Die Metriken werden im Regelfall hochtransparent für alle sichtbar gemacht. Resultat ist ein gemeinsames Bild von der Gesamtsituation des eigenen Produktes, und es erlaubt einem gezielt an diesem zu verbessern. Mit guten Metriken und Feature Toggles, also der Fähigkeit verschiedene Produktvarianten im Vergleich durchzumessen, kann auch der Business experimentieren - in Kooperation mit Development, QA, Operations und Business Analytics.

Page 95: Die Architektur, die man kann

Gemeinsam - von Business Development bis Operations

Bei uns ist das meist ein ELK-Stack, der alle möglichen Daten auf Vorrat sammelt und es einfach macht, schnell und testweise kleine Experimente durchzuführen.

Page 96: Die Architektur, die man kann

Und CTO

Lead Architect Lead Architect Head of QA

Senior Architect

Senior Developer QA Engineer

Developer DeveloperOperations

Guy

CEO

Vice President Product

Product Manager

Product Owner

Product Designer

Organisation Architektur

Architektur ist ein Enabler für Organisationsentwicklung.

Und damit hat sich genau die andere Richtung gezeigt. Ich kann meine Organisation ändern, indem ich per Architektur neue Optionen und greifbaren Benefit bereitstelle - zB durch schnellere Iterationen in Continuous Deployment, durch die Möglichkeit zur experimentellen Produktentwicklung per Feature Toggles, durch eine gemeinsame Datengetriebene Geschäftssicht über schlaue Metriken.

Page 97: Die Architektur, die man kann

Und

Die Organisation bestimmt die Architektur bestimmt die Organisation

CTO

Lead Architect Lead Architect Head of QA

Senior Architect

Senior Developer

QA Engineer

Developer DeveloperOperations

Guy

CEO

Vice President Product

Product Manager

Product Owner

Product Designer

Organisation Architektur

Und damit habe ich eine Rückkopplung: Wenn ich die Organisation ändere wirkt das auch auf die Architektur, wenn ich die Architektur ändere wirkt das auf die Organisation.

Page 98: Die Architektur, die man kann

Organisations- Entwicklung Architektur

Konvergenz von Architektur und Organisationsentwicklung

Im Resultat haben wir eine teilweise Konvergenz von Architektur und Organisationsentwicklung. Und auch davon hat Frederic Brooks natürlich schon geredet, und im Rahmen von MicroServices ist es akut geworden. Es gibt einen schönen (= kurzen) Artikel von Eberhard Wolff von innoQ dazu auf Heise: http://www.heise.de/developer/artikel/Microservices-Architektur-oder-Organisation-2671835.html

Page 99: Die Architektur, die man kann

ä

Also schnell MicroServices und die benötigte Organisationsstruktur parallel einführen?

… eher nicht.

1. Agile Methoden einführen & beherrschen 2. DevOps-Kultur & -Werkzeuge einführen 3. Agile Unternehmenskultur changemanagen 4. Unternehmen restrukturieren 5. Allen Code reengineeren

Das heisst aber nicht, dass ich eben beides gleichzeitig machen muss damit es funktioniert. Das kann nicht klappen, denn die Voraussetzungen für eine Architektur _und_ eine Organisation _und_ eine Kultur sind sportlich.

Page 100: Die Architektur, die man kann

ä

Die Unternehmen mit dem größten Leidensdruck

haben auch den weitesten Weg.

1. Agile Methoden einführen & beherrschen 2. DevOps-Kultur & -Werkzeuge einführen 3. Agile Unternehmenskultur changemanagen 4. Unternehmen restrukturieren 5. Allen Code reengineeren

Und da steckt noch eine Gemeinheit dahinter - denn genau die Unternehmen, bei denen weder die Architektur, noch die Organisationsform, noch die Kultur stimmt haben den größten Leidensdruck. Da macht die Neugründung oder der Kauf, wie er in einigen Fällen auch hier in Deutschland zu beobachten war, natürlich erheblich Sinn - vorausgesetzt, dass man sich selbst davor schützt, die gekaufte Kultur zu assimilieren - und damit wieder da ist, wo man vorher schon war.

Page 101: Die Architektur, die man kann

ä

EvolutionWenn meine Strategie weder Neugründung, noch Kauf oder mittelfristige Insolvenz ist habe ich eine Evolution vor mir, bei der ich jeden Schritt mitgehen muss, um den nächsten jenseits vom Cargo Cult zu erreichen. Und wie geht Evolution? Man probiert so lange Spezies durch, bis sich emergent etwas ergibt, was in meiner Umgebung am besten funktioniert. (Das Bild ist super, und ich habe viele Orte gefunden, an denen es genutzt wird - aber nicht den Ursprünglichen Ort.

Page 102: Die Architektur, die man kann

Prozesse Werkzeuge

Leute Ziele

Verständnis

Organisations- Entwicklung

Architektur

Agil

Und netterweise gibt es ein Methodenset, dass solche Dinge emergent entstehen lässt - die agilen Methoden. Ich würde also, frei nach DevOps, erwarten dass der spannende Ort dieser Evolution die gemeinsame Arbeit der agilen Teams, der Organisationsentwicklung und der Architektur ist.

Page 103: Die Architektur, die man kann

ä

Die Architektur, die man kann:

… ist eine gemeinsame Evolution von

• Architektur • Organisationsentwicklung • Team + Firmenkultur

Organisations- Entwicklung Architektur

Agil

Also, die Architektur, die man kann ist also heute die gemeinsame Evolution von Architektur, Organisationsentwicklung und der Team und Firmenkultur

Page 104: Die Architektur, die man kann

äAutonome Teams mit

dokumentierten Prozessen.

Selbstorganisierte Teams mit Architekturverantwortlichem.

MicroServices nach einem vorgegebenen Techset

„Business Domains“, die das Business nicht kennt

Agile MicroService-Teamsdie unnötige Features implementieren

Wenn ich das nicht gemeinsam mache lande ich in einer Dilbert-Welt, in der die formalen Strukturen und die informalen Strukturen kontinuierlich zu Dysfunktionen führen.

Page 105: Die Architektur, die man kann

How to Become a Microservice-Company

in 1 Step1. Technologie auf

MicroServices umstellen

1. Spotify-Modell einführen

Aber eins ist zumindest sicher - die Zeiten, in denen wir grosse Architekturen unabhängig von Teams und Organisation gemacht haben, sind vorbei.

Page 106: Die Architektur, die man kann

ä

„Jetzt MicroServices?! Wir haben doch nicht

mal Agil hinbekommen. Geschweige denn DevOps.“

Kritik & Fragen: @johannhartmann [email protected] Slides mit Tonspur: http://slideshare.net/johannhartmann

Vielen Dank für Ihr Durchhaltevermögen.Die Idee zu diesem Talk kam übrigens von dem Satz rechts oben, den ein befreundeter Entwickler in einem grösseren Unternehmen zu mir sagte :-)

Page 107: Die Architektur, die man kann

ä

Die Architektur, die man kann:

Wenn ich kein DevOps kann, kann ich keine MicroServices.

Wenn ich eine klassische Hierarchie in der Technik habe, bekomme ich keine autonomen Teams.

Wenn ich weder Daten noch Product Development mit im Team habe, kann ich keinen grossen Businessvalue mit MicroServices erzeugen.

Wenn ich agil nicht kann, kann ich keine MicroServices.

Also, die Architektur, die man kann: