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

Microservices Deployment Pipelines

Microservices Deployment Pipelines

Wir Entwickler mögen Microservices, weil wir bequem sind. Denn Microservice-Architekturen entfalten erst mit einem hohen Grad an Automatisierung ihre Stärken. Nachdem der Code geschrieben ist, läuft das Deployment optimalerweise komplett von alleine. Welche Tools und Prozesse dabei helfen, zeige ich in meiner Präsentation.

Max Jonas Werner, DevCamp 2017

Hermes Germany GmbH

November 25, 2017
Tweet

More Decks by Hermes Germany GmbH

Other Decks in Technology

Transcript

  1. Inhalt 00 Hermes 01 Wo kommen wir her? Die alte

    Welt 02 Microservices – die Neue Welt™ 03 Deployment Pipelines 04 Und sonst so?
  2. Ausrichtung auf digitale Geschäftsmodelle Hermes Germany ist ein Unternehmen im

    Wandel • Gegründet 1972 • Wir stellen derzeit etwa 400 Millionen Pakete pro Jahr zu • Wir stellen uns mit 200 IT- Spezialisten den Herausforderungen der Logistik • Wir sind Teil des Otto-Konzerns • Wir suchen Mitdenker, Mitgestalter und Möglichmacher
  3. Monolithische Software Updates der IT-Infrastruktur sind risikoreich und aufwändig Jedem

    Deployment geht ein langer Prozess an Freigaben voraus Updates müssen zwischen Abteilungen koordiniert werden (Die komplette IT wird aktualisiert). => „max. 4 Deployments pro Jahr“ Alle sind frustriert; Ergebnisse sind sehr langsam sichtbar; kein Feedback von Stakeholdern
  4. Service-orientierte Software Updates der IT-Infrastruktur sind risikolos und simpel Jedes

    Deployment ist ständig möglich Durchführung von Updates werden vom Team entschieden Ergebnisse sind sofort sichtbar; unmittelbares Feedback von Stakeholdern
  5. Conway's Law “Organizations which design systems [...] are constrained to

    produce designs which are copies of the communication structures of these organizations.” – Melvin E. Conway
  6. SCM Code Reviews Build Unit Tests Dev Deployment UI Testing

    UAT Production Deployment SCM Code Reviews Build Unit Tests Dev Deployment UI Testing UAT Production Deployment SCM Code Reviews Build Unit Tests Dev Deployment UI Testing UAT Production Deployment …
  7. Was wollen wir erreichen? Release early, release often (und zwar

    zum Kunden) => MVP Continuous Delivery Hohe Produktqualität Volle Automatisierung, keine manuellen Eingriffe Skalierung Zero Downtime Deployment Deployment unabhängig von der Microservice-Technologie
  8. Wie erreichen wir das? 1. Organisatorisch 2. Technisch • „Was

    deployen wir?“ • „Wo deployen wir?“ Unser Fokus heute
  9. Tarballs Einfach zu erstellen Einfach zu deployen Unabhängig vom Technologie-Stack

    Gut für Entwickler, gut für Betriebler ✓ ✕ ? ✕
  10. Stack-spezifisch (Pip, Jar, Gems, ...) Einfach zu erstellen Einfach zu

    deployen Unabhängig vom Technologie-Stack Gut für Entwickler, gut für Betriebler ✓ ? ✕ ✕
  11. OS-spezifisch (Deb, RPM, EXE) Einfach zu erstellen Einfach zu deployen

    Unabhängig vom Technologie-Stack Gut für Entwickler, gut für Betriebler ✕ ✓ ✓ ✕
  12. Container Images Einfach zu erstellen Einfach zu deployen Unabhängig vom

    Technologie-Stack Gut für Entwickler, gut für Betriebler ✓ ✓ ✓ ✓
  13. Pipeline Deep Dive SCM Code Reviews Build Unit Tests Dev

    Deployment UI Testing UAT Production Deployment Source Code Management (Git) Code Reviews (Bitbucket/Gerrit) Build (Jenkins) Unit Testing (Frontend & Backend!) (TestNG, Junit, Mocha, Jasmine) Quality Gates (z.B. code coverage) (Jenkins, SonarQube) Dev Deployment (Docker, OpenShift, Kubernetes) UI Testing (Selenium, Fitnesse, Geb) Integration Testing User Acceptance Tests (Quality Gate) => manuell! Production Deployment (Docker, OpenShift, Kubernetes) Monitoring
  14. Und sonst so? Datenbanken: Schema-Änderungen (Rolling update, Rollback, ...) Consumer-driven

    Contracts (PACT) Service Discovery Circuit Breakers: Hystrix
  15. SPA pro Microservice Eine SPA für alle Microservices HTML-Anwendungen Frontend-Server

    Rich Client Application Quelle: Eberhard Wolff: „Microservices“ Theoretische Ansätze Web UI mit Microservices