Laufzeitsicht
Die Szenarien in diesem Kapitel sind aus den Pfeilen der Bausteinsicht (Board Seite 9) und dem technischen Kontext (Board Seite 3) abgeleitet. Eberhard Wolff beschreibt in den Videos keinen Ablauf Schritt für Schritt. Wo ein Schritt über die Pfeile hinausgeht, stützt er sich auf ein ADR; wo weder Board noch ADR etwas hergeben, steht eine offene Notiz. Die Reihenfolge der Aufrufe innerhalb eines Szenarios ist eine Lesart, keine Aussage des Boards. Die Pfeile auf dem Board bedeuten Informationsfluss, nicht Aufrufrichtung (Folge 112, 58:17); die Sequenzdiagramme zeigen deshalb eine mögliche Aufrufreihenfolge, keine festgelegte.
Jeder Baustein aus Kapitel 5 kommt in mindestens einem Szenario vor: Terminplanung in Szenario 1, Reparatur durchführen und Materialbeschaffung in Szenario 2, Bezahlung in Szenario 2 und 4. Das fünfte Szenario, der Netzausfall im Laden, betrifft alle Bausteine gleich und kommt ohne Diagramm aus.
Reparatur online beauftragen
Kund:innen beauftragen eine Reparatur über den Webshop. Der Login läuft über den Webshop (ADR-001), das Reparatur-System liegt unter /reparatur derselben Domain, damit das JWT-Cookie mitkommt (ADR-002).
- Schritte
-
-
Kund:in meldet sich im Webshop an. Der Webshop prüft das Konto in der Webshop User Database und stellt ein JWT als Cookie aus (ADR-001).
-
Kund:in ruft
/reparaturauf. Der Browser sendet das JWT-Cookie mit, weil Domain und Origin gleich bleiben (ADR-002). -
Der Webshop leitet
/reparaturan das Reparatur-System um. Auf dem Board endet der Pfeil bei Terminplanung, Reparatur durchführen und Bezahlung; für die Anmeldung ist Terminplanung der Einstieg. -
Terminplanung liest das JWT und holt Adresse und Zahlungsart über die REST-Schnittstelle des Webshops (ADR-001).
-
Terminplanung zeigt das Auftragsformular, vorbelegt mit den Daten aus dem Webshop.
-
Kund:in trägt Fahrrad und Problem ein und sendet ab (Story "Fahrrad zur Reparatur anmelden").
-
Terminplanung berechnet den Termin (Story "Reparaturtermin berechnen") und gibt "Termin" an Reparatur durchführen (Board Seite 9).
-
Kund:in sieht die Bestätigung mit dem Termin.
-
- Besonderheiten
-
Der Webshop hält keine Reparaturdaten. Den Status sieht die Kund:in später auf einer Seite, die das Reparatur-System selbst rendert (ADR-005). Das Usability-Ziel aus Kapitel 10 gilt für diesen Ablauf: 90 % der Benutzer:innen beauftragen eine Reparatur in zwei Minuten (Board Seite 5).
|
Note
|
Offen: Ob Schritt 4 (Adressabfrage) in Terminplanung oder in einem gemeinsamen Teil des Systems liegt, sagt das Board nicht. Das Format des Aufrufs "Termin" ist nicht festgelegt. Ob die Module sich synchron aufrufen oder Messages austauschen, hat Eberhard in Folge 112 ausdrücklich offen gelassen: "auf dieser Ebene noch nicht" (57:01, ADR-012). |
Reparatur durchführen, abrechnen, bezahlen
Die Werkstatt führt die Reparatur aus, das System rechnet ab und die Kund:in bezahlt bei der Abholung. Das Szenario verbindet vier Bausteine und vier externe Systeme. Die Bezahlung folgt ADR-004, die Benachrichtigung ADR-007.
- Schritte
-
-
Shop-Mitarbeiter:in nimmt das Fahrrad an (Story "Fahrrad zur Reparatur abgeben").
-
Mechaniker:in nimmt den Defekt auf: "Schaltung kaputt" (Board Seite 7). Reparatur durchführen berechnet die voraussichtlichen Kosten.
-
Mechaniker:in protokolliert jede Position mit Dauer und Preis. Beispiel vom Board: neues Schaltwerk gekauft 100 €; altes Schaltwerk ausgebaut 10 Minuten, 10 €; neues Schaltwerk eingebaut 10 Minuten, 10 €.
-
Braucht die Reparatur Teile, gibt Reparatur durchführen eine "Materialbestellung" an Materialbeschaffung. Materialbeschaffung bestellt beim Großhändler (ADR-006).
-
Nach Abschluss schickt Reparatur durchführen "Info über Updates" an das EMail System. Die Kund:in erhält eine E-Mail (ADR-007). SMS ist vorgesehen, nicht gebaut.
-
Reparatur durchführen meldet den "Preis" an Bezahlung und die "Rechnungselemente" an das Rechnungswesen (Board Seite 9).
-
Kund:in holt das Fahrrad ab und bezahlt. Im Laden kassiert die Shop-Mitarbeiter:in; Bezahlung tauscht den Zahlungsstatus mit der Kasse über REST aus. Online klickt die Kund:in den Bezahlen-Button, wird zum Online Payment Service umgeleitet und kommt zurück; Bezahlung fragt den Buchungsstatus per REST ab (ADR-004).
-
Shop-Mitarbeiter:in schließt die Abholung ab (Story "Repariertes Fahrrad abholen").
-
- Besonderheiten
-
Reparatur durchführen ist die Drehscheibe. Alle Pfeile nach außen außer Kasse und Payment Service gehen von ihm aus. Die gelbe Notiz "ggf. finanziellen Aspekt separieren?" (Kapitel 5) zielt auf die Schritte 6 und 7.
|
Note
|
Offen: Ob "Preis" und "Rechnungselemente" bei Abschluss, bei Abholung oder je Position fließen, ist nicht entschieden. Fest steht seit Folge 112, dass die Rechnungselemente aus Reparatur durchführen kommen, weil nur dieses Modul weiß, was repariert wurde; Bezahlung meldet nur "250 Euro bezahlt" (60:13 bis 61:36). Ob Bezahlung dem Rechnungswesen zusätzlich "Rechnung ist bezahlt" meldet, hat Eberhard offen gelassen: "Weiß ich nicht, könnte auch im Hintergrund laufen" (63:16, ADR-012). Ob die Materialbestellung vor oder während der Reparatur ausgelöst wird, zeigt das Board nicht. Welche Quelle gilt, wenn Kasse und Payment Service verschiedene Zahlungsstatus liefern (R-011), ist offen. |
Transkript Folge 112, 60:13 bis 61:36
wir mal schauen, dass wir die entsprechend da hin strukturieren. So und da würde ich jetzt irgendwie sagen, der SMS-Verband und die E-Mail-Systeme, die sind dazu da, dass ich Updates schicke über den Zustand der Reparatur. Das ist also etwas, was eben Reparatur-Durchführen benutzt. Dann habe ich die Kasse und das Online-Payment-System, die würde ich jetzt mal behaupten, offensichtlich genutzt werden von der Bezahlung. Und dann habe ich das Rechnungswesen und das würde ich jetzt sagen, dass ich hier, das würde ich hier auch dementsprechend anschließend an die Reparatur durchführen, weil ich hier ja eben die Informationen habe, was genau sich geändert hat oder was genau repariert worden ist und das will ich in der Rechnung drin haben. Ich will da drin stehen haben, ich habe einen Bremskorts reingebaut und was weiß ich. Und hier will ich halt nur sagen und ich habe irgendwie 250 Euro bezahlt. Deswegen sind das eben unterschiedliche Informationen
Fehlerszenario: Webshop nicht erreichbar
Der Webshop trägt Login und Nutzerdaten (ADR-001). Fällt er aus, scheitern Login und Adressabfrage. Das ist Risiko R-002 aus ADR-001 und trifft das Qualitätsziel Verfügbarkeit für Kund:innen: 99,9 % zwischen 7 und 24 Uhr (ADR-008).
- Was Board und ADRs hergeben
-
-
Die Umleitung von
/reparaturliegt vor dem Webshop (ADR-002, R-005). Antwortet der Webshop nicht, erreicht die Kund:in auch das Reparatur-System nicht, es sei denn, ein Reverse Proxy vor dem Webshop leitet weiter. -
Ohne Webshop gibt es kein JWT-Cookie und keine Adressabfrage. Das Reparatur-System kann die Kund:in nicht identifizieren (ADR-001).
-
Die Werkstatt im Laden ist nicht betroffen, sofern Mechaniker:innen sich nicht über den Webshop anmelden.
-
Das Board (Seite 6) setzt für den Wiederanlauf des Web-Systems keine Zeit, nur für das System im Shop (30 Minuten; die Karte "5 Minuten" ist im Video nicht belegt, Kapitel 10).
-
|
Note
|
Offen: Verhalten nicht entschieden. Weder Board noch ADRs sagen, ob das Reparatur-System eine Fehlermeldung zeigt, den Aufruf wiederholt (Retry) oder ein bereits ausgestelltes JWT weiter akzeptiert. Ob Mechaniker:innen einen Login über den Webshop brauchen, ist nicht entschieden. |
Fehlerszenario: Kasse aus der Cloud nicht erreichbar
Die Kasse steht im Laden. Läuft das Reparatur-System in der Cloud, muss Bezahlung die Kasse über das Netz des Ladens erreichen. Das Board fragt auf Seite 10 und 11: "Kann man aus der Cloud in die Kasse kommunizieren?". Das ist Risiko R-010 aus ADR-004. Folge 113 behandelt die Frage (24:38 bis 27:23), entscheidet sie nicht und stuft sie hoch ein: "ich habe potenziell etwas, was mir meinen Ansatz kaputt machen kann" (26:14), "das kann mir im Extremfall die Lösungsstrategie zerstören" (26:57).
Transkript Folge 113, 24:38 bis 27:23
Das heißt, das kriegt man halt auch irgendwie hin. Und was ich jetzt hier identifiziert habe als ein Thema, ist … … ich hätte hier eine Kommunikation aus der Cloud hin zu der Kasse, die bei mir im Laden steht. Und da wäre halt … ich benutze mal irgendwie gelb … … eine Frage, kann man aus der Cloud in das Rechnungswesen kommunizieren? Und die analoge Frage wäre jetzt bei der Kasse. Also da wäre halt dieselbe Frage, kann man aus der Cloud in die Kasse kommunizieren? Und ich will das gar nicht ausschließen. Also was ich ja konkret machen müsste, wäre … … der Mensch sitzt halt an meinem System, sagt, diese Rechnung, das Ding will ich jetzt irgendwie gerne bezahlen. Und daraufhin gibt es eine Kommunikation hin zur Kasse, die sagt, ich möchte jetzt gerne das 20 Euro kassiert werden … … und die das halt irgendwie auch vernünftig in die Buchhaltung bekommt und so weiter und so weiter. Und dazu müsste ich halt mit diesem Kassensystem reden, aus der Cloud. Und vielleicht ist das möglich. Also das wäre jetzt die Stelle, wo man es halt recherchieren müsste. Kassensysteme sind heutzutage im Prinzip auch PCs, sodass ich das nicht ausschließen möchte, dass das geht. Aber das wäre etwas, was wir diskutieren müssten. Und das ist jetzt tatsächlich etwas, was wir sozusagen gelernt haben. Also was ich persönlich auch bei der Vorbereitung gelernt habe, als ich eben dieses Diagramm ausgeführt habe. Das heißt, das hat mir jetzt tatsächlich etwas geholfen. Also ich habe jetzt herausgefunden, dass ich hier potenziell etwas habe, was mir meinen Ansatz kaputt machen kann. Und das ist, glaube ich, die spannendere Sache. Die würde jetzt hier unten an der Luke gelten. Also, Moment. Jetzt habe ich bedauerlicherweise die Bausteine sich dafür torpediert. Also das wäre hier eben bei dem Microservices genau das selbe Thema. Da müsste ich also exakt dieselbe Frage beantworten. Das heißt, ich kann diese beiden Post-its da auch mal rüber kopieren, weil das wäre hier auch ein Thema. Das heißt, ich habe jetzt ein Risiko identifiziert und das ist auf jeden Fall hilfreich. Das kann mir im Extremfall die Lösungsstrategie zerstören. Ich kann nicht mit der Kasse kommunizieren. Ich kann nicht mit dem Rechnungswesen kommunizieren. Dann habe ich halt irgendwie ein Problem und da muss ich vielleicht doch ein Server installieren. Oder irgendwas auf dem Kassensystem machen oder was auch immer. Das ist dann eben das, womit ich mich da beschäftigen muss.
- Was Board und ADRs hergeben
-
-
Das Qualitätsszenario "Das System im Shop fällt aus. Spätestens nach 2 Minuten kann man den Preis einer erfolgten Reparatur wieder ermitteln" (Board Seite 6) zeigt, dass der Preis auch bei Ausfall verfügbar sein muss. Für die Kasse selbst gibt es kein Szenario.
-
Eberhard nennt die Integration mit lokalen Systemen "vielleicht in der Cloud schwierig" (Folge 111, 59:46, zitiert in ADR-004).
-
Der zweite Bezahlweg über den Online Payment Service bleibt offen, wenn die Kasse nicht antwortet; Online Payment lässt sich "sicher aus der Cloud anschließen" (Folge 113, 24:10).
-
Folge 113 nennt vier Optionen für die Anbindung: direkt REST aus der Cloud, weil "Kassensysteme heutzutage im Prinzip auch PCs" sind (24:38); ein Kassenproxy im Laden, vorgeschlagen von Zuschauer Jan und für Eberhard "eine mögliche Lösung" (29:27); ein Server im Laden; eine Änderung am Kassensystem (27:07). Der Bezahlvorgang, den die Anbindung tragen muss: Mensch wählt die Rechnung, Kasse erhält "20 Euro kassieren", Buchhaltung folgt (25:21 bis 25:43). Die Frage gilt für Monolith und Microservices gleichermaßen (26:34 bis 26:50).
-
Transkript Folge 113, 25:21 bis 25:43
Also was ich ja konkret machen müsste, wäre … … der Mensch sitzt halt an meinem System, sagt, diese Rechnung, das Ding will ich jetzt irgendwie gerne bezahlen. Und daraufhin gibt es eine Kommunikation hin zur Kasse, die sagt, ich möchte jetzt gerne das 20 Euro kassiert werden … … und die das halt irgendwie auch vernünftig in die Buchhaltung bekommt und so weiter und so weiter.
Transkript Folge 113, 26:34 bis 26:50
Jetzt habe ich bedauerlicherweise die Bausteine sich dafür torpediert. Also das wäre hier eben bei dem Microservices genau das selbe Thema. Da müsste ich also exakt dieselbe Frage beantworten. Das heißt, ich kann diese beiden Post-its da auch mal rüber kopieren, weil das wäre hier auch ein Thema.
|
Note
|
Offen: Verhalten nicht entschieden. Ob Bezahlung den Aufruf wiederholt, den Betrag zwischenspeichert oder die Shop-Mitarbeiter:in an der Kasse ohne Systemeintrag kassieren lässt, sagt das Board nicht. Cloud ist seit Folge 113 entschieden (ADR-013); die Anbindung der Kasse aus der Cloud will Eberhard recherchieren (27:07), keine der vier Optionen ist gewählt (Kapitel 7, ADR-004). |
Fehlerszenario: Netzausfall im Laden
Zuschauer Jan fragt in Folge 113, was passiert, wenn der Router im Laden ausfällt und das System aus Kundensicht nicht erreichbar ist (08:24). Das Reparatur-System in der Cloud läuft weiter; Werkstatt und Kasse erreichen es nicht, bis das Netz im Laden wieder steht. Betroffen sind die Werkstattfunktionen und die Preisermittlung bei Abholung (QS-Z-02, QS-Z-03); Kund:innen im Web merken nichts. Das Szenario kommt ohne Diagramm aus, weil der Ablauf dem Kassen-Szenario gleicht, nur fehlt die Verbindung in beide Richtungen.
Eberhard liest das Szenario nicht als "nicht mein Problem", sondern als Erwartungshaltung des Kunden, die er mit Optionen und Preis zurückspielt (09:55, 12:32). Drei Optionen nennt er (08:24 bis 14:13): das Risiko akzeptieren; einen mobilen LTE/5G-Router mit automatischem Failover als Reserve, "kostet einen Router und Netzwerktricks, nicht wahnsinnig teuer" (12:52 bis 13:02); einen Cache-Server im Laden, der die Preise vorhält, verworfen, weil er Wartung braucht, innerhalb von 30 Minuten vor Ort sein müsste und "deutlich mehr Geld" kostet (13:10 bis 13:21). Erwartete Entscheidung: Risiko akzeptieren, "vielleicht noch einen mobilen Router als Fallback" (13:43; ADR-018). Anders läge der Fall bei der "Maschinensteuerung eines Atomkraftwerks" (13:47).
Transkript Folge 113, 08:24 bis 14:13
Und das ist also dort eben ein Thema. Der Jan fragt jetzt, wenn das System in der Cloud läuft und der Router im Laden ausfällt, ist das System aus Sicht des Kunden nicht erreichbar. Wie adressieren wir das? Genau, damit sind wir so zwei Schritte weiter. Also erstmal bedeutet das, meine Lösungsstrategie wäre halt irgendwie Cloud. Und das, was der Jan jetzt irgendwie sagt, ist ja nachvollziehbar. Das heißt also, wenn ich jetzt sage, ich habe exakt einen Router bei diesem Fahrradladen, dann würde das eben dafür sorgen, dass, wenn der Router ausfällt, eben das gesamte System ausfällt. Also das ist die Strategie, die mir jetzt eigentlich eingefallen ist. Es muss ja auch nicht nur eine Cloud-Strategie sein. Es könnte auch sein, dass wir am externen Rechenzentrum das machen. Ich glaube auf jeden Fall, also ich persönlich würde jedenfalls ableiten, dass wir einen Server in dem Laden selber ausschließen können. Das heißt, wir müssen dann in der Netzwerkverbindung kommen und dann kommen wir eben zu dem Thema, was der Jan dort zitiert hat. Und das ist jetzt tatsächlich, finde ich, eine spannende Sache. Eine mögliche Antwort darauf wäre, ich entwickle ja irgendwie Software. Dass es einen Router gibt, der mir dafür sorgt, dass mein System nicht erreichbar ist, ist nicht mein Problem, was soll’s. Das finde ich nicht wirklich hilfreich. Und das ist auch nicht die Art und Weise, wie ich denke, wie man diese Qualitätsszenarien interpretieren sollte. Also das Qualitätsszenario sagt er jetzt nicht. Also das Qualitätsszenario sagt, das ist die Erwartungshaltung, die ein Kunde hat. Die ist da jetzt irgendwie formuliert. Das heißt, die Erwartungshaltung ist in diesem speziellen Fall, das System fällt aus. Und spätestens nach zwei Minuten kann man den Preis einer erfolgten Reparatur wieder ermitteln. Und jetzt gibt es halt bestimmte Szenarien, also zum Beispiel Ausfall der Netzwerkinterfrastruktur. Also zum Beispiel Ausfall eines Routers, aber auch zum Beispiel Ausfall eines Internetproviders und so weiter. Die mir jetzt dort wahrscheinlich ein Problem bereiten. Und meine Strategie dagegen wäre eigentlich zu sagen, naja, wir können jetzt eine Lösung bauen, die erwartungsgemäß das üblicherweise auf die Reihe bekommt. Ich bin da vielleicht noch etwas auf der glücklichen Seite. Ich weiß nicht, wann ich hier das letzte Mal einen Internetausfall hatte. Und für den Notfall habe ich halt irgendwie noch einen mobilen Router. Sowas könnte ich ja jetzt in dem Fahrradshop irgendwie auch machen. Ich könnte also sagen, okay, es gibt einen mobilen Router, der über LTE oder über 5G oder sowas eben die Internetverbindung zur Not redundant hält. Und ich habe dann eben einen festen Router. Und ich gehe davon aus, dass das halt üblicherweise funktionieren sollte. Aber an bestimmten Stellen ist es dann eben einfach vorbei. Also wenn jetzt irgendwie beide Router ausfallen oder wenn irgendwo in dem Stadtteil das Internet insgesamt von einem Provider ausfällt, weil irgendwo ein Teil der Netzwerkinfrastruktur auf einer anderen Ebene kaputt geht. Dann habe ich halt irgendwie habe ich ein Problem. Und das wäre jetzt etwas, was ich diskutieren würde. Glaube ich, offen mit dem Kunden und würde sagen, okay, wir haben dann das Risiko eines Netzwerkausfalls und wir können das versuchen zu lösen. Also wir könnten jetzt ein Stück Software bauen, was wir bei dir installieren in deinem Server, den du nicht hast. Und was wir, was dann in der Lage ist, diese Preise der erfolgten Reparaturen zu cashen. Das führt zu einer bestimmten Menge an Aufwand und Geld, das wir investieren. Wollen wir das tun? Sondern das ist, finde ich, ein valides Feedback. Also meine Aufgabe ist es, technisch zu bewerten, wie ich das umsetzen kann. Und die variable Größe dabei ist Preis eigentlich. Das heißt also, ich kann jetzt eben durch entsprechende Entwicklungsmaßnahmen, Infrastrukturmaßnahmen versuchen, das noch unwahrscheinlicher zu machen. Auch auf der Ebene von Dingen, die außerhalb meines Einflussbereichs sitzen. Also ich kann jetzt sagen, okay, wir können noch einen mobilen Router daneben stellen. Wir können eine Netzwerkinfrastruktur machen, die automatisch auf den mobilen Router zurückfällt. Wir können, das kostet halt irgendwie einen Router und Netzwerktricks. Das ist also wahrscheinlich nicht so wahnsinnig teuer. Wir können bei dir einen Server installieren, der in Cash ist, mit den Preisen der erfolgten Reparatur. Das würde bedeuten, wir installieren einen Server. Das würde bedeuten, wir müssen den irgendwie warten. Das kriegen wir schwierig hin, weil wir müssen innerhalb von 30 Minuten da sein, sagst du. Das kostet also deutlich mehr Geld. Ich kann es nicht genau beziffern, aber es kostet halt deutlich mehr Geld. Und da kann man, glaube ich, dann in eine offene Diskussion gehen. Meine Erwartungshaltung wäre, dass wir halt über einen Fahrradshop gehen und wir wahrscheinlich irgendwie da landen, dass man sagt, okay, dieses Risiko, dass die Verbindung zur Cloud abbricht, ist irgendwie akzeptabel. Und vielleicht bauen wir dann einen mobilen Router als Fallback ein. Das wäre etwas anderes, wenn wir über die Maschinensteuerung eines Atomkraftwerks reden oder sowas. Oder über die Produktionssteuerung in einer Fabrik, wo irgendwie der Ausfall des IT-Systems dazu führt, dass wir halt massive Verluste haben. Und das wäre, glaube ich, das, was man da sozusagen als Feedback liefern kann.
Transkript Folge 113, 12:52 bis 13:02
Also ich kann jetzt sagen, okay, wir können noch einen mobilen Router daneben stellen. Wir können eine Netzwerkinfrastruktur machen, die automatisch auf den mobilen Router zurückfällt. Wir können, das kostet halt irgendwie einen Router und Netzwerktricks. Das ist also wahrscheinlich nicht so wahnsinnig teuer.
Transkript Folge 113, 13:10 bis 13:21
Wir können bei dir einen Server installieren, der in Cash ist, mit den Preisen der erfolgten Reparatur. Das würde bedeuten, wir installieren einen Server. Das würde bedeuten, wir müssen den irgendwie warten. Das kriegen wir schwierig hin, weil wir müssen innerhalb von 30 Minuten da sein, sagst du. Das kostet also deutlich mehr Geld.
Folge 111 auf software-architektur.tv und Video auf YouTube. Die Zeitmarken im Text springen im Player an die Stelle. Audio: software-architektur.tv (Eberhard Wolff, Ralf D. Müller), Lizenz CC BY 4.0; für genaues Springen mit konstanter Bitrate neu kodiert.
Folge 112 auf software-architektur.tv und Video auf YouTube. Die Zeitmarken im Text springen im Player an die Stelle. Audio: software-architektur.tv (Eberhard Wolff, Ralf D. Müller), Lizenz CC BY 4.0; für genaues Springen mit konstanter Bitrate neu kodiert.
Folge 113 auf software-architektur.tv und Video auf YouTube. Die Zeitmarken im Text springen im Player an die Stelle. Audio: software-architektur.tv (Eberhard Wolff, Ralf D. Müller), Lizenz CC BY 4.0; für genaues Springen mit konstanter Bitrate neu kodiert.
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.