# DevOps - Mehrere Kleinere sind besser als ein Grosser. - Regelmässig und oft ist besser als unregelmässig und selten. - Automatisiert und getestet ist besser als manuell und dokumentiert. - Selber und jetzt ist besser als jemand anderes und morgen. - Fehlertolerant ist besser als -ignorant. ## Mehere und Kleinere Systeme und Services mit einem definierten Scope sind schneller zu entwickeln und einfacher zu skalieren. Im Fehlerfall ist der Umfang des Schadens eingrenzbar. Mögliche Ansätze: - Verteilte Systeme / Clustering - Microservices-Architektur - Hyprid-Cloud/Multi-Cloud Ziele: - Entwicklungssteigerung - Schadensbegrenzung - Resilienz / Service-Stabilität ## Regelmässig und Oft Häufige, regelmässige Releases verkleinern den Umfang der Änderung und mindern das Risiko, fördern die Innovation durch schnelle Realisation. Probleme können schneller identifiziert und behoben werden. Mögliche Ansätze: - CI/CD und Build Promotion - Blue/Green Deployment - Canary Deployment - Feature Flags / Release Trains Ziele: - Steigerung Kundenzufriendenheit - Sichtbarere Entwicklung - Förderung Innovation - Kürzere "mean time to repair" ## Automatisiert und Getestet Durch den Ansatz, eine hohen Automatiserung anzustreben, wird die Entwicklung testbar, nachvollzier und reproduzierbar. Schafft Anzreiz zur Standartisierung und Homogenisierung. Mögliche Ansätze: - Infrastrucure as Code - Immutable Infrastructure - Integration Tests - CI/CD Ziele: - Nachvollziehbarkeit / Reproduzierbarkeit - Standardisierung / Homogenisierung ## Selber und Jetzt Entwicklungs-Teams sind inderdisziplinär und kompetent aufgestellt, entscheiden und handeln im definierten Rahmen eigenständig und tragen die "End2End"-Verantwortung über ihre Software, Systeme und Services. Mögliche Ansätze: - Agile-Methoden - Continuous Improvement Ziele: - Verwantwortung geben - Zufriedenheit steigern - Qualitätsbewustsein schaffen ## Fehlertolerant Software und Systeme werden mit der Erwartung gebaut, dass etwas bricht oder fehlschlägt. Auf produktiven Systemen wird dies kontrolliert herbeigeführt, um das erwartete Verhalten sicherzustellen. Dies schafft Vertrauen auch in turbulenten, unerwarteten Bedingungen zu bestehen. Mögliche Ansätze: - Chaos Engineering - Fuzzy Tests - Load Testing Ziel: - Vertrauen schaffen - Sicherstellen der UX - Challengen und Sicherstellen des SLA