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

The Big Five for developing Software fast for a...

The Big Five for developing Software fast for a long time

Benedikt Stemmildt

January 20, 2025
Tweet

More Decks by Benedikt Stemmildt

Other Decks in Programming

Transcript

  1. What it takes to be fast: The Big Five for

    developing Software fast for a long time Benedikt Stemmildt CTO TalentFormation
  2. Assure Speed By Quality. ▪ Qualität zerstört Geschwindigkeit ▪ Geschwindigkeit

    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
  3. Design For Testability. ▪ Vorsicht: DESIGN for Testability. ▪ Nicht:

    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
  4. Shift Left On Security. ▪ Security nachträglich zu erzeugen ist

    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
  5. Share Nothing. ▪ Nichts wird geteilt. ▪ Keine Daten ▪

    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
  6. Share Nothing. DISCOVER DECIDE FULFILL Self Contained System inspire Back

    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
  7. Deploy Continuously. Ludicrous Speed ▪ Jeder Push geht in Produktion

    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
  8. Be Agile. ▪ Jeder Plan ist falsch ▪ Ohne organisatorische

    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
  9. The Big Five Assure Speed By Quality. Design For Testability.

    Shift Left On Security. Share Nothing. Deploy Continuously. Be Agile.