Post on 26-Jan-2017
ä
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.
Wer hat alles einmal einen Commodore 64 besessen?
1997Wir sind die Generation, die irgendwann in den 90ern angefangen hat, iT zu machen. Bei mir war das 1997.
ä
Und dort gab es einen klaren Ort für Architektur, der im Vorfeld stattfindet - bevor der tatsächliche Softwareentwurf stattfindet.
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.
ä
Und diese Art Diagramme kam da meist heraus. Je nach Vertrauen in die Kollegen konnte das mehrere Wände einnehmen.
ä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?
ä
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.
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.
ä
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.
ä
Typische größere Softwareprojekte, und auch die vollständige IT-Architektur eines Unternehmens, sind im Regelfall im Complex-Quadranten zu finden.
ä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.
ä
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.
ä
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.
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.
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.
ä
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.“
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.
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.
ä
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.
ä
„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?
ä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.
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.
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.
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.
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.
ä
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.
ä
„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.
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.
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.
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.
ä
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 :-)
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.
ä
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.
ä
„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.
ä:_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.
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.
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?
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.
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.
ä
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.
ä
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.
Informale Seite
Denkweisen Wahrnehmungsformen Handlungserwartungen „Kultur“
ä
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.
ä
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“
ä
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.
ä
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.
ä
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.
ä
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.
ä
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.
ä
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.
ä
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.
ä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.
ä
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.
ä
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.
ä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
ä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.
ä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.
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.
ä
„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.
ä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.
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.
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.
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.
ä
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.
Der Lösungsansatz von DevOps ist deshalb eine Änderung der Arbeitsweise. An die Stelle von funktionaler Trennung tritt die direkte Zusammenarbeit.
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.
ä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.
ä
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.
ä
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 :-)
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.
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.
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.
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.
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.
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.
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.
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.
ä
Inverse Conway Maneuver
Ok, dann machen wir das einfach mal?
Ok, und wie komme ich dahin?
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.
ä
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.
ä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.
ä
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.
ä
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.
ä
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?
ä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?
ä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.
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?
Schauen wir doch mal direkt in den Talk von 2009 hinein, der DevOps in die Popularität gespült hat.
Und da ist was spanendes enthalten: sie reden vor allem über Technologie.
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.
ä
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.
„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.
ä
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.
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.
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.
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.
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
ä
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.
ä
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.
ä
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.
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.
ä
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
ä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.
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.
ä
„Jetzt MicroServices?! Wir haben doch nicht
mal Agil hinbekommen. Geschweige denn DevOps.“
Kritik & Fragen: @johannhartmann hartmann@mayflower.de 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 :-)
ä
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: