Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Das tapfere Schneiderlein – Sieben Schnitte auf einen Streich

Das tapfere Schneiderlein – Sieben Schnitte auf einen Streich

Microservices und Modulithen sind trendige Software-Architekturstile, welche stark von dem Wundermittel der „Modularisierung“ Gebrauch machen. Hierfür muss das zu entwickelnde System einen passenden Schnitt haben. Aber was ist dieser „Schnitt“ überhaupt? Welche Arten von Schnitten gibt es mit welchen Konsequenzen?

In diesem Vortrag stellen wir sieben Schnitt-Heuristiken vor. Wir diskutieren mögliche Einflüsse, welche uns beim Schneiden von Systemen antreiben. Zudem gehen wir auf Vor- und Nachteile sowie Trade-offs verschiedener Varianten ein.

Markus Harrer

July 03, 2023
Tweet

More Decks by Markus Harrer

Other Decks in Technology

Transcript

  1. 1 O O P 2 0 2 3 | M

    Ü N C H E N | 0 3 . - 0 5 . J U L I 2 0 2 3 | 1 . 1 Das tapfere Schneiderlein Sieben Schnitte auf einen Streich Markus Harrer Manh Dung Pham
  2. Das tapfere Schneiderlein Motiv: Blechspielzeug "Tapferes Schneiderlein" Hagen / Domke

    | Urheberrecht: LWL-Freilichtmuseum Hagen 3 Sieben auf einen Streich
  3. Schnitt- muster in der Mode 4 Schnittmusterbogen, Leipzig, ca. 1900.

    Dieses Werk ist gemeinfrei, weil seine urheberrechtliche Schutzfrist abgelaufen ist.
  4. Warum überhaupt schneiden? 7 Punkte angelehnt an Nick Tune: „5

    Tugenden der Modularität in Systemen“ (https://www.youtube.com/watch?v=FUKagZXcpYs)
  5. Warum überhaupt schneiden? 8  Granulare Anpassbarkeit ✗ Falsche Wahrnehmung

    des Gesamtbildes Punkte angelehnt an Nick Tune: „5 Tugenden der Modularität in Systemen“ (https://www.youtube.com/watch?v=FUKagZXcpYs)
  6.  Reduzierung der kognitiven Belastung Warum überhaupt schneiden? 9 ✗

    Lokale Optimierungen Punkte angelehnt an Nick Tune: „5 Tugenden der Modularität in Systemen“ (https://www.youtube.com/watch?v=FUKagZXcpYs)
  7.  Feingranulare, wertorientierte Investitionen Warum überhaupt schneiden? 10 Punkte angelehnt

    an Nick Tune: „5 Tugenden der Modularität in Systemen“ (https://www.youtube.com/watch?v=FUKagZXcpYs) ✗ Doppelte Arbeit
  8.  Eingrenzung Warum überhaupt schneiden? 11 ✗ Politik Punkte angelehnt

    an Nick Tune: „5 Tugenden der Modularität in Systemen“ (https://www.youtube.com/watch?v=FUKagZXcpYs)
  9.  Teamautonomie Warum überhaupt schneiden? 12 ✗ Schlechtes Alignment Punkte

    angelehnt an Nick Tune: „5 Tugenden der Modularität in Systemen“ (https://www.youtube.com/watch?v=FUKagZXcpYs)
  10. Wirklich, wirklich ins Detail! Unsere 7 Schnittmuster* 15 1. Sprachliche

    Grenzen 2. Zeithorizonte 3. Prozessübergaben 4. Produktfeatures 5. Entitäten 6. UI / Sitemap 7. Größe Lösungsraum / Implementierungsseite Problemraum / Anforderungsseite im Detail *auch: Schnittheuristiken
  11. Die Blinden und der Elefant 17 Elephant icon by Delapouite

    under CC BY 3.0, game-icons.net Seil! Schlange Speer Baum! Segel
  12. Kontext: Online-Baumarkt Die Blinden und das Produkt 18 Lagerplatz, Stückzahl,

    Gewicht Bilder, Beschreibungen, Verkaufspreise Lieferanten, Mengenrabatte, Einkaufspreise
  13. Achtung, Doppelblindverfahren! 19 Software Wert! Info Textcontainer Daten! Item Lieferanten,

    Mengenrabatte, Einkaufspreise Bilder, Beschreibungen, Verkaufspreise Lagerplatz, Stückzahl, Gewicht
  14. Lagerhaltung Beschaffung Verkauf Erster Schritt: Klarheit schaffen! 20 Bilder, Beschreibungen,

    Verkaufspreise Lieferanten, Mengenrabatte, Einkaufspreise Lagerplatz, Stückzahl, Gewicht
  15. Schneiden nach Begriffswelten 22 BaumaSoft Lagerista ProduktMeta TheSourcer Lagerplatz, Stückzahl,

    Gewicht Bilder, Beschreibungen, Verkaufspreise Lieferanten, Mengenrabatte, Einkaufspreise Lager Einkauf Verkauf
  16. 24

  17. Aber Achtung bei Veränderungen! 25 Head of Elektro Head of

    Deko Digitalisierung! Value Streams! Re-Org! Baumarkt2000 Head of Schüttgut
  18. Yeah! 26 Head of Elektro Head of Deko Head of

    Schüttgut Neue Ideen! Einkauf Elektro Verkauf Elektro Lager Elektro Einkauf Deko Verkauf Deko Lager Deko Einkauf Schüttgut Verkauf Schüttgut Lager Schüttgut BaumaSoft
  19. Autsch! 27 ProduktMeta TheSourcerer Lagerista BaumaSoft Head of Elektro Head

    of Deko Head of Schüttgut Einkauf Elektro Verkauf Elektro Lager Elektro ? Einkauf Deko Verkauf Deko Lager Deko Einkauf Schüttgut Verkauf Schüttgut Lager Schüttgut
  20. 29 Der Kontext ändert sich im Laufe der Zeit, und

    was heute perfekt war, kann morgen schon völlig ungeeignet sein.“ - Erich Eichinger Tipp Nummer 1 https://opencredo.com/blogs/identify-service-boundary-heuristics/ Den perfekten, stabilen Schnitt gibt es nicht!
  21. Variierende Häufigkeiten von Ereignissen 31 Kontext: Bahnunternehmen Zugstrecke abgekündigt Zug

    im Bahnhof eingefahren Zug defekt Neue Zugstrecke geplant Fahrplan freigegeben Ersatzzug wurde bestellt
  22. 32 Kontext: Bahnunternehmen Zugstrecke abgekündigt Zug im Bahnhof eingefahren Zug

    defekt Neue Zugstrecke geplant Fahrplan freigegeben Ersatzzug wurde bestellt häufiger seltener Variierende Häufigkeiten von Ereignissen
  23. Zug defekt 33 Kontext: Bahnunternehmen häufiger seltener Variierende Häufigkeiten von

    Ereignissen Zugstrecke abgekündigt Neue Zugstrecke geplant Fahrplan freigegeben Ersatzzug bestellt Zug im Bahnhof eingefahren
  24. 34 Kontext: Bahnunternehmen häufiger Zugstrecke abgekündigt Zug im Bahnhof eingefahren

    Zug defekt Neue Zugstrecke geplant Fahrplan freigegeben Ersatzzug bestellt seltener Zugleitung Infrastrukturplanung Ressourcenplanung Steuerung Fahrgastinformation Fahrplanplanung Betriebsmanagement Betriebsplanung Variierende Häufigkeiten von Ereignissen
  25. 36 Wer Qualitäten nicht Rechnung trägt, hat die Kontrolle über

    sein Leben Softwaresystem verloren.“ - Karl Lagerfeld Tipp Nummer 2
  26. Nach abgeschlossenen Prozessteilen schneiden Prozessübergaben 39 Versand berechnet Mahnung geschickt

    Zu Inkasso übergeben Zahlung eingegangen Betrag vollständig gezahlt Rechnungs- summe geändert Ware zugefügt Rechnung erstellt 0 n
  27. Nach abgeschlossenen Prozessteilen schneiden Prozessübergaben 40 0 n Versand berechnet

    Mahnung geschickt Zu Inkasso übergeben Zahlung eingegangen Betrag vollständig gezahlt Rechnungs- summe geändert Ware zugefügt Rechnung erstellt
  28. Bestellung Nach abgeschlossenen Prozessteilen schneiden Mahnverfahren Bezahlung Prozessübergaben 41 Versand

    berechnet Mahnung geschickt Zu Inkasso übergeben Zahlung eingegangen Betrag vollständig gezahlt Rechnungs- summe geändert Ware zugefügt Rechnung erstellt Rechnung erstellt 0 n Abschließendes Ereignis
  29. 42 Start Ist der Outsourcing- Kandidat klein genug? Teile ihn

    auf! Wird der Outsourcing- Kandidat gut verstanden? Gibt es externe Dienstleister? Können es die Dienstleister besser als wir? Wird der Dienstleister auf unsere Kosten lernen? In-House- Entwicklung Outsourcing (agil) Neues Geschäftsfeld! Outsourcing nein ja nein vielleicht / ja nein nein ja ja nein ja Outsourcing-Überlegungen Simon Wardley, CC BY-SA 4.0 Lizenz Wird der Outsourcing- Kandidat gut verstanden? Gibt es externe Dienstleister? Können es die Dienstleister besser als wir? Wird der Dienstleister auf unsere Kosten lernen? In-House- Entwicklung Outsourcing (agil) Neues Geschäftsfeld! Outsourcing nein ja nein vielleicht / ja nein nein ja ja nein ja
  30. Schnitt nach Produktfeatures 44 Beispiel: Monzo Prepaid Credit Card Service

    Strong Authentication Service https://www.infoq.com/presentations/monzo-microservices/ Debit Card Service (Bildmaterial aus Präsentation, Beispiel eigene, vereinfachende Darstellung)
  31. Monzos Kontext 45 [1] https://monzo.com/blog/2023/03/28/what-we-learned-from-43-experiments-in-12-months … experimenting is at the

    heart of Monzo’s product development philosophy.“ - Shnay Chohan Senior Product Manager @ Monzo
  32. Unsere 7 Schnittmuster* 48 1. Sprachliche Grenzen 2. Zeithorizonte 3.

    Prozessübergaben 4. Produktfeatures 5. Entitäten 6. UI / Sitemap 7. Größe Lösungsraum / Implementierungsseite Problemraum / Anforderungsseite *auch: Schnittheuristiken Disclaimer: Jetzt wird es schmutzig Wir gehen zur Bestands- software!
  33. WIR HATTEN JA NÜSCHTS Vieles fällt nun hier drunter Teils

    unter „Anti- Patterns“ zu finden Teils immer noch hilfreich Wir sagen nur „gibt es“ (und ob ihr es nutzt, ist euer Ding!)
  34. Datenstrukturen nach fachlichen Abhängigkeiten trennen public class Kunde { Vorname

    Nachname Status … } Entity-basiertes Reverse Engineering 51 public class Produkt { Name Beschreibung Preis … } Quelle: https://particular.net/webinars/finding-your-service-boundaries-a-practical-guide • Vorname des Kunden • Nachname des Kunden • Kundenstatus • Produktpreis • Produktname • Produktbe- schreibung Schritt 1: „Wenn X sich ändert, hat das Auswirkungen auf Y?“ Kundenstammdaten Bepreisung Produktinformationen Schritt 2: Unabhängige, unbenannte Gruppen bilden Schritt 4: Gruppen benennen Schritt 3: Über noch unbenannte Gruppen diskutieren und evtl. anpassen
  35. Software nach Größe schneiden 55 Wenn gar nichts mehr geht,

    helfen selbst die (vermeintlich) bescheuertsten Ideen, um ein Softwaresystem etwas zu strukturieren . ├── grosses │ ├── Owner.java │ ├── Person.java │ ├── Pet.java │ ├── Specialty.java │ ├── Vet.java │ └── Visit.java ├── mittleres │ ├── OwnerRepository.java │ ├── PetRepository.java │ ├── VetController.java │ └── VisitRepository.java └── kleines ├── OwnerController.java ├── PetController.java ├── PetValidator.java ├── VetRepository.java └── VisitController.java
  36. Was ist der richtige Schnitt? 58 „Es kommt drauf an!“

    (= alles hängt vom Kontext ab*) Nach einer Visualisierung aus Michael Keelings Buch „Design It!“ Firma Spaß & Gewinn! Plattform Anwender verwenden wollen will Team hilft entwickelt Software entwickelt für läuft auf leitet an * der sich mit der Zeit auch ändert
  37. Was könnt ihr mitnehmen … 59 … für morgen? •

    überlegt, wie ihr aktuell eure Software geschnitten habt! … für nächste Woche? • tauscht euch im Team über mögliche Schnitte aus! … für nächsten Monat? • macht euch schlau, welche weiteren Schnitte euch helfen!
  38. Danke! Fragen? Kontakt & mehr. 60 [email protected] Senior Consultant [email protected]

    Consultant Markus Harrer Manh Dung Pham Das tapfere Schneiderlein Sieben Schnitte auf einen Streich https://leanpub.com/strategische-spielzuege Markus Harrer Strategische Spielzüge Softwaresysteme listig weiterentwickeln Alternative Möglichkeiten, ein Softwaresystem voranzubringen Folien auf speakerdeck.com/feststelltaste
  39. KLIENTEN Finance • Telko • Logistik • E-Commerce • Fortune

    500 • KMUs • Startups FAKTEN ~160 Mitarbeitende 1998 gegründet 9 Standorte in D & CH UNSER ANGEBOT Produktkonzeption & Design Software-Entwicklung & -Architektur Technologie-Beratung Infrastruktur & Betrieb Wissenstransfer, Coaching & Trainings FOKUS Webapplikationen SaaS IoT Produktentwicklung ML/AI Blockchain TECHNOLOGIEN (Auswahl) Java/Spring Ruby/Rails Scala AWS Kubernetes Azure JavaScript Python C# ML/AI Blockchain 61
  40. Schnittmustersammlungen Erich Eichinger: “Heuristics for Identifying Service Boundaries” 63 Prozessabläufe

    Domänen Prozessübergaben Datenlokalität Prozess- und Datenkriterien Dateneigentum Datenlebenszyklus Sitemap https://opencredo.com/blogs/identify-service-boundary-heuristics/ Operationelle Kriterien Querschnittsfunktionalität Externe Abhängigkeiten Größe Volatilität vs. Stabilität Service-Kommunikation Sicherheitsbeschränkungen Last Make-or-buy Organisatorische Grenzen Teams & Fähigkeiten Organisatorische Kriterien
  41. Schnittmustersammlungen Gregor Hohpe: “Hybrid Cloud: Slicing the Elephant” 64 https://architectelevator.com/cloud/hybrid-cloud/

    Typen Schicht Genera- tion Kritika- lität Daten- aktualität Daten- schutz- klasse Lebens- zyklus Betriebs- modus Arbeits- last Cloud Front- end Neu Unkri- tisch Backup Offen Entwick- lung Ausfall- situa- tionen Spitzen- last On Premise Backend Alt Kritisch Live Betrieb Vertrau- lich Produkt- ion Normal- betrieb Normal- last
  42. Schnittmustersammlungen Team Topologies: “Independent Service Heuristics” 65 1. Sinn-Check: Könnte

    es einen logischen Sinn ergeben, diese Sache "als Dienstleistung" anzubieten? 2. Marke: Könntest du dir vorstellen, diese Sache als öffentlichen Cloud-Dienst zu vermarkten (wie AvocadoOnline.com )? 3. Umsatz/Kunden: Könnte diese Sache im Hinblick auf Umsatz und Kunden als brauchbarer Cloud- Service verwaltet werden? 4. Kostenverfolgung: Kann das Unternehmen die Kosten und Investitionen in diese Sache getrennt von ähnlichen Dingen verfolgen? 5. Daten: Ist es möglich, die Inputdaten (aus anderen Quellen), die diese Funktion benötigt, klar zu definieren? https://github.com/TeamTopologies/Independent-Service-Heuristics 6. Benutzer: Könnte diese Sache eine kleine/gut definierte Gruppe von Nutzertypen oder Kunden (User Personas) haben? 7. Teams: Könnte ein Team oder eine Reihe von Teams einen auf dieser Sache basierenden Dienst effektiv aufbauen und betreiben? 8. Abhängigkeiten: Wäre das Team in der Lage, die meiste Zeit unabhängig von anderen Teams zu handeln, um seine Ziele zu erreichen? 9. Auswirkungen/Wert: Würde der Umfang dieser Aufgabe dem Team vor eine wirkungsvolle und ansprechende Herausforderung stellen? 10. Produktentscheidungen: Wäre das Team, das an dieser Sache arbeitet, in der Lage, seine eigene Produkt- Roadmap und die Produktrichtung zu bestimmen? “Could this thing be run as a cloud-hosted (SaaS) service or product?"
  43. Context Mapping 67 Context Maps liefern einen ganzheitlichen Überblick über

    die Abhängigkeitsbeziehungen zwischen fachlichen Bereichen. Beispiel von https://contextmapper.org, MIT Lizenz
  44. Context Map Patterns 68 Muster, um die Kommunikationsbeziehungen zwischen verschiedenen

    Bereichen genauer zu beschreiben https://github.com/ddd-crew/context-mapping CC-BY-4.0 license
  45. Context Map Talk-Tipp 69 Michael Plöd : Context Maps -

    a deep dive (KanDDDinsky 2019) https://www.youtube.com/watch?v=VjtMt689ql8