DevOps kann man nicht kaufen, es ist etwas das man selber machen muss und auf seinen Kontext, seine Kultur und Technologie anpassen. Es gibt aber gewisse Faktoren, welche die Transformation zu DevOps begünstigen Auf zwei davon geht diese Präsentation näher ein: Die Architektur im Unternehmen und in Anwendungen, und der Automatisierungsgrad im gesamten DevOps-Zyklus
Make Developers Fly: Principles for Platform Engineering
Architektur und Automation als Enabler für DevOps
1. Architektur und Automatisierung
als Enabler für DevOps
1. DevOps Meetup Bern, 29. Mai 2017
Matthias Fritschi, Software Architect & Consultant, avega IT AG
2. Themen
■ Was haben Architektur & Automation mit DevOps zu tun?
■ Case Study I: Online- & Cross-Channel Systems Dev 🚧 Ops
■ Case Study II: Customer Information System Dev 💚 Ops
■ Fazit
4. „You Can‘t Buy DevOps“
... aber es gibt gewisse Enabler welche die Transformation begünstigen
Zusammenarbeit
Architektur
Automation
Kurze
Feedbackzyklen
Plattformen
SystemdenkenOrganisation
Gemeinsame
Verantwortung
Technologie Continuous
Everything
Kultur
Transparenz
5. „You Can‘t Buy DevOps“
... aber es gibt gewisse Enabler welche die Transformation begünstigen
Architektur Automation
6. Architektur
As I observed, large organizations using DevOps “have thousands of
developers, but their architecture and practices enable small teams
to still be incredibly productive, as if they were a startup“.
-- Randy Shoup, A Director Of Engineering At Google
[...] In this scenario, everyone feels productive - the architecture allows
small teams to work safely and architecturally decoupled from the
work of other teams, using self-service platforms that leverage the
collective experience of Operations and Information Security.
-- Gene Kim, „The DevOps Handbook“
7. Cloud-Native & 12-factor Apps
12 Factor Apps
• Eine versionierte Codebasis
• Explizite Deklaration von Abhängigkeiten
• Konfiguration als Teil der Umgebung
• Backends als Ressourcen behandeln
• Build, Release, Run - Separiert
• Prozesse sind Stateless
• Service-Exposition über Ports
• Skalierung übers Prozessmodell
• „Wegwerf“-Prozesse: Kurzer Startup/Shutdown
• Dev & Prod gleich aufgesetzt
• Logs als Event-Streams
• Admin-Tasks als einmal-Prozess
12. Automation
“Automate everything and make those parts
that can’t be automated a self-service”
-- Gregor Hohpe on how corporate IT can remain competive
19. Automation
■ Beschleunigung des Infrastruktur-Setups von Monaten zu Minuten
Projektdauer / Zeit bis Infastruktur produktiv
6 Monate
20. Automation
■ Beschleunigung des Infrastruktur-Setups von Monaten zu Minuten
Zeitdauer für Infrastruktur-Setup
Minuten
Projektdauer / Zeit bis Infastruktur produktiv
6 Monate
22. Lessons Learned
■ Viel schnellere Provisionierung von Infrastruktur und OS mit dynamischer
Infrastruktur & Container
■ Modularisierung bringt Flexibilität und Autonomie, aber Komplexität muss
gemanagt werden
■ Gemeinsame Tools, Prozesse führen zu gemeinsamer Verantwortung
24. Kontext
Deployment von neuen Features ohne Downtime
Speed: Beispiel Bugfix, innert 2 Stunden von Discovery bis in Produktion
Technologie:
Plattform-/Service-basiert
34. Automation
■ Standardisierte PaaS-Cloud-Infrastruktur ermöglichte den Aufbau der
automatisierten Deployment Pipeline
Für jedes Feature werden Integrations- und/oder Feature-Tests entwickelt
und laufen in jeder Pipeline-Instanz durch
36. Automation
■ Standardisierte PaaS-Cloud-Infrastruktur ermöglichte den Aufbau der
automatisierten Deployment Pipeline
Die Laufzeitumgebung ist als Docker-Container versioniert und erhält
die Umgebungskonfiguration zur Laufzeit (1:1 selber Container von
Test bis Produktion)
37. Automation
■ Standardisierte PaaS-Cloud-Infrastruktur ermöglichte den Aufbau der
automatisierten Deployment Pipeline
Rollendes Deployment der neuen Version automatisch & kontinuierlich
auf die Entwicklungsumgebung. Nach hochfahren des Containers wird
geprüft ob die Anwendung korrekt läuft, sonst wird das Deployment
abgebrochen. Die alte Version wird nach & nach heruntergefahren.
38. Automation
■ Standardisierte PaaS-Cloud-Infrastruktur ermöglichte den Aufbau der
automatisierten Deployment Pipeline
Deployment-Automatisierung auf Staging und Produktion gleich wie
auf Development. Je nach Bedarf manuelle Q/A-Checks auf Staging.
Trigger auf Staging und Prod noch manuell. Keine Downtime durch
rollendes Deployment, tagsüber jederzeit möglich.
39. Automation
■ Standardisierte PaaS-Cloud-Infrastruktur ermöglichte den Aufbau der
automatisierten Deployment Pipeline
Monitoring und Log-Aggregation als SaaS-Lösung bezogen.
Geringer Aufwand fürs Entwicklungsteam, trotzdem
gute UX für Dev & Ops.
40. Automation
■ Infrastructure as Code
Ops kann die Laufzeitumgebung mit Limiten, Verrechnung
etc. im Self-Service einrichten
41. Automation
■ Infrastructure as Code
Dev/Ops beschreiben nötige Endpoints, Skalierung,
Network, Konfiguration, Container-Builds als versionierte
Deklaration (OpenShift & Docker).
42. Automation
■ Infrastructure as Code
Infrastruktur-Setup automatisiert mittels Deklaration. Jede
Umgebung erhält ihre spezifische Konfiguration, das
restliche Setup ist identisch von Entwicklung bis Produktion.
43. Automation
■ Infrastructure as Code
Initiales Setup des gesamten Prozesses mit Lernkurve in 2
Tagen. Setup einer zusätzlichen Anwendung in 2 Stunden.
44. Lessons Learned
■ Architektur und Automatisierung machen schnelle, kleine Deployments
tagsüber ohne Downtime möglich
■ Monitoring/Logging als SaaS-Lösung eingesetzt und mit wenig Aufwand
integriert – gemeinsame Tools für Dev & Ops
■ Cloud-Plattform ermöglicht die Konzentration auf fachliche Entwicklung
und stellt Ops standardisierte Infrastruktur zur Verfügung
45. Fazit
■ Die Vorteile von DevOps lassen sich nur mit konsequenter Automatisierung
wirklich realisieren – Refactor your Processes
■ Die Architektur muss diese Automatisierung erlauben und unterstützen