zerstört Qualität ▪ Falsch! ▪ Testing, Deployment, CodeStyleCheck erzeugen Qualität UND Geschwindigkeit ▪ Automatisierung erzeugt Geschwindigkeit benötigt aber Qualität ▪ Automatisierte Qualität ist immer qualitativer als manuelle Qualität ▪ Paradox aber wahr ▪ Monitoring, Alarming, Operations, Infrastructure as Code, indirekte Dokumentation, Mitarbeiter Onboarding, Urlaubsübergaben, Wissensverteilung => Geschwindigkeit UND Qualität ▪ Basis Prinzip für alle Folgenden A circle has no end
Schreib möglichst viele Tests und hab 100% Testabdeckung ▪ TDD sorgt für gutes Design, nicht für viele Tests ▪ Schreibe ich zuerst einen Test, muss mein Code modular sein, damit ich ihn gut testen kann. ▪ Test getriebenes Design sorgt für hohe Kohäsion, geringe Kopplung & separation of Concern ▪ Modularität & Unabhängigkeit entsteht ▪ Gilt nicht nur für Applikation, auch für Infrastruktur ▪ Design for Testability sorgt ganz natürlich für Einhaltung nachfolgende Prinzipien This Is Not a Test
unmöglich. ▪ Grundlegende Entscheidungen haben massiven Einfluss auf Security. ▪ Geschwindigkeit wird massiv reduziert, wenn ich nachträglich auf Security überprüfe ▪ Security ist überall: IAM, Container Scanning, Dependency Scanning, OS Scanning, Network, Injections, Browser, Tokens/Passwörter, … ▪ Security wird vernachlässigt und tut richtig weh ▪ Shift Left - also zuerst machen: ▪ So viel wie möglich automatisieren ▪ Verschlüsselung ▪ TLS everywhere ▪ Alles ist public! (nicht hinter VPN in Sicherheit wiegen) ▪ Mit jeder User Story kommt eine Evil User Story Du kommst hier nicht rein
Kein Code ▪ Keine Menschen ▪ Keine Infrastruktur ▪ Kein Budget ▪ Kein Büro(!!!) ▪ Keine Synchronen APIs ▪ Kein gemeinsames Frontend ▪ Unabhängigkeit schafft Geschwindigkeit Mein Schatz, oh mein Schatz
End Frontend landing & content pages Database Queue (Kafka) Self Contained System find Back End Frontend product lists & search Database Queue (Kafka) Self Contained System products Back End Frontend pdp Database Queue (Kafka) Self Contained System availabilities Back End Frontend availability Database Queue (Kafka) Self Contained System baskets Back End Frontend baskets Database Queue (Kafka) Self Contained System order Back End Frontend checkout Database Queue (Kafka) Frontend Proxy (nginx) Server-Side-Includes customer / visitor
ohne manuellen Eingriff ▪ Es gibt nur den Trunk/Main-Branch ▪ Keine Merges. Alles wird sofort integriert. ▪ Feature Toggles ▪ Es wird IMMER deployed. Auch Freitag, kurz vor Feierabend. Auch Samstag. Auch Sonntag. Immer. ▪ Deployment darf keine Angst machen ▪ Automatisierung stellt alles sicher ▪ Pipelines laufen nicht länger als 15 Minuten ▪ Wenn ja, dann optimieren ▪ Es wird IMMER nach vorn gefixed und NIE zurück gerollt
Flexibilität bringt mir all das nichts ▪ Die Teams müssen Robustheit für stetige Veränderung entwickeln ▪ Im Mittelpunkt muss der Wert für den Kunden stehen ▪ Dieser Wert muss schnell geliefert werden ▪ Neue Erkenntnisse müssen Plan verändern ▪ Unternehmen, die nicht flexibel genug sind, sich auf ihre Kunden einzustellen scheitern ▪ Nicht die Geschäftsführung oder der Fachbereich hat Recht, sondern der Kunde ▪ Neue Technologien verändern alles. z.B. No/Low-Code vs. Hard-Code panta rhei