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

Entwicklung verteilter Systeme - Herausforderungen nicht nur für die Architektur, BedCon 2015

Oliver Wehrens
September 17, 2015

Entwicklung verteilter Systeme - Herausforderungen nicht nur für die Architektur, BedCon 2015

Jedes Platform wächst mit der Zeit. Mehr Entwickler mit noch mehr Ideen und Vorstellungen arbeiten alle gemeinsam an der Weiterentwicklung.

Das System wird grösser und wird auf viele Systeme verteilt. Häufig wird ein Technologie Stack vorgegeben um es vermeintlich wartbarer und stabiler zu machen. Zusätzlich wird die Software oft dabei von Entwicklung zu QA weitergereicht und am Schluss von Operations deployed und betrieben. Das Ergebnis davon sind lange Releasezyklen und das verschenkte Potenzial weil nicht die richtigen Tools genutzt werden konnten.

Dieser Vortrag erläutert unsere Leitplanken zur Entwicklung verteilter Systeme bei der E-POST. Wie erlauben wir es den 15 Teams mit 100 Personen 'The right tool for the right job' einzusetzen statt ein starres Korsett an Technologien vorzugeben? Welche Rahmenbedingungen müssen beachtet werden und wo kann ein Team autonom entscheiden wie eine Software zu entwickeln ist? Trotz wachsender Anzahl verteilter Systemen und steigender Komplexität wollen wir weiterhin eine stabile Platform zur Verfügung stellen. Es wird erklärt welche Anforderungen wir dabei in den Bereichen Architektur, Entwicklung, Testen, Deployment, Betrieb und Security vorgeben und was die Teams dabei beachten müssen.

Oliver Wehrens

September 17, 2015
Tweet

More Decks by Oliver Wehrens

Other Decks in Technology

Transcript

  1. Entwicklung verteilter
    Systeme
    Oliver Wehrens, @owehrens
    E-POST Development GmbH, DPDHL
    Herausforderungen nicht nur an die Architektur

    View full-size slide

  2. Produkte
    Cloud
    Brief
    Fax Mobile Apps
    API
    Grosskunden
    Einlieferung
    E-POST Ident
    E-POST Scan

    View full-size slide

  3. Historie
    2008: Start
    Entwicklung
    Prototyp mit agilem
    Vorgehen
    2009/2010: Aufbau
    E-POST Platform
    mit linearem
    Vorgehensmodell
    2011: Weiter-
    entwicklung mit
    agilem
    Vorgehensmodell
    2012: Aufbau EPD
    in Berlin
    2013: Transition
    neues
    Architekturkonzept
    2014: Produktionszugriff
    der Teams
    2015: Anpassung
    Organisations-
    struktur

    View full-size slide

  4. Zahlen, Daten,
    Fakten

    View full-size slide

  5. 100 Hosttypen
    70 Produktion
    30 Dev Infrastuktur

    View full-size slide

  6. ~2000 VMs
    ~25 Server ~200 VMs
    ~20 Server
    Entwicklung Produktion

    View full-size slide

  7. 2010/2011
    4 Deployment / Jahr
    Entwicklung QA Betrieb

    View full-size slide

  8. 2010/2011
    4 Deployment / Jahr
    Entwicklung QA Betrieb
    Business

    View full-size slide

  9. Herausforderungen
    Schnelles Rollout von neuen Features
    Schnelles Testen von Funktionalität am Markt
    Es muss einfach sein Fehler zu beheben
    Flexibilisierung des Technologie-Stacks bei
    gleichzeitiger Kontrolle

    View full-size slide

  10. –Arc Team @ EPD
    “Wir wollen eine Architektur in der wir Software
    jederzeit einfach an neue Bedürfnisse
    anpassen können.”

    View full-size slide

  11. Entwicklung
    Organisation
    Betrieb

    View full-size slide

  12. 3 Schichten Architektur
    UI
    Logik
    Datenbank

    View full-size slide

  13. Monolith
    UI
    Logik
    Datenbank

    View full-size slide

  14. … mit mehr Teams
    UI
    Brief Abrechnung
    Datenbank
    Kunde
    Team
    A
    Team
    B

    View full-size slide

  15. … wird schwierig
    UI
    Brief Abrechnung Kunde

    View full-size slide

  16. Ein Service bildet genau nur eine
    Fachlichkeit ab.

    View full-size slide

  17. UI
    Brief Abrechnung
    Datenbank
    UI
    Kunde
    Datenbank
    Team
    A
    Team
    B
    Bounded Context

    View full-size slide

  18. UI
    Brief Abrechnung
    Datenbank
    UI
    Kunde
    Datenbank
    UI Integration

    View full-size slide

  19. UI
    Brief Abrechnung
    Datenbank
    UI
    Kunde
    Datenbank
    Verteilter Monolith

    View full-size slide

  20. Was kostet Zeit?
    Kommunikation mit anderen Teams
    Einarbeitung/Abstimmung im Quellcode
    Warten auf Zuarbeiten von anderen Teams
    Warten auf Deployment von anderen Teams
    Warten auf gemeinsames Deployment
    Fester Technologiestack

    View full-size slide

  21. Unabhängigkeit.

    View full-size slide

  22. Unabhängigkeit befähigt die Teams
    Fachlichkeiten effizient und schnell
    umzusetzen.

    View full-size slide

  23. Datenbank Datenbank
    Abrechnung Kunde
    UI

    View full-size slide

  24. Datenbank Datenbank
    Abrechnung Kunde
    Stabile Schnittstelle
    UI

    View full-size slide

  25. Datenbank Schema
    Datenbank
    Schema
    Abrechnung Kunde
    E-POST DB Setup
    UI

    View full-size slide

  26. System Migration
    Abrechnung Kunde
    Alt Neu
    ~ 15 Komponenten ~ 55 Komponenten
    Deployment
    Architektur

    View full-size slide

  27. Unabhängigkeit … der Traum jedes
    Entwicklers.
    “Ich kann machen was ich will.”

    View full-size slide

  28. Abrechnung
    REST
    Kunde
    Thrift
    Brief Login …
    SOAP Avro My Own
    MANAGEMENT
    SAYS NO.

    View full-size slide

  29. Architektur
    Entwicklung
    Deployment
    Security
    Testen
    Betrieb
    Leitplanken
    Leitplanken

    View full-size slide

  30. Mikroarchitektur
    Abrechnung Kunde
    Brief
    Team
    A
    Team
    B
    Team
    C

    View full-size slide

  31. Mikroarchitektur
    Kunde
    Brief
    Team
    B
    Team
    C
    Team
    A
    Teamarchitekt
    Teamarchitekt
    Teamarchitekt

    View full-size slide

  32. Makroarchitektur
    Abrechnung Kunde
    Brief

    View full-size slide

  33. Zustandsfrei (Phönix Server)
    Status in Datenbank
    REST/HATEOAS
    API rückwärts kompatibel
    Resilience
    Makroarchitektur

    View full-size slide

  34. Entwicklung
    Jederzeit kritische Fehler beheben
    Automatisches Datenbank Setup
    Deklarierte Service Abhängigkeiten
    Keine geteilten Daten zwischen Services

    View full-size slide

  35. Deployment
    Installation mit RPM Paketen
    Automatisierte Auslieferung
    Provisionierung via Puppet
    Service Konfiguration mit Hiera

    View full-size slide

  36. Security
    Explizite Sicherheitsanforderungen
    Sichere Kommunikation und Authentifizierung

    View full-size slide

  37. Testen
    Smoke Test auf der Preview Stage für jede
    Komponente

    View full-size slide

  38. Betrieb
    Virtualisierung
    Standard OS Start/Stop
    Zentrales Logging und Monitoring
    Rollout in der Produktion

    View full-size slide

  39. Organisation

    View full-size slide

  40. Abteilungen aufbrechen
    Entwicklung QA Betrieb

    View full-size slide

  41. Abteilungen aufbrechen
    Entwicklung QA Betrieb

    View full-size slide

  42. Abteilungen aufbrechen
    Entwicklung QA Betrieb

    View full-size slide

  43. Abteilungen aufbrechen
    Entwicklung QA Betrieb

    View full-size slide

  44. Organisatorisch ändern
    Development
    Team
    Team
    Team
    Team
    Team
    Team
    Team
    Team
    Team
    Team
    Team
    Team

    View full-size slide

  45. Organisatorisch ändern
    Development Unit 1
    Development Unit 2
    Development Unit 3
    Team
    Team
    Team
    Team
    Team
    Team
    Team
    Team
    Team
    Team
    Team
    Team
    Lesen /
    Schreiben
    Cloud /
    Einlieferung
    Ident /
    User

    View full-size slide

  46. Organisatorisch ändern
    Development Unit 1
    Development Unit 2
    Development Unit 3
    Team
    Team
    Team
    Team
    Team
    Team
    Team
    Team
    Team
    Team
    Team
    Team
    Development Unit 4
    Team
    Team
    Team
    Team
    Lesen /
    Schreiben
    Cloud /
    Einlieferung
    Ident /
    User

    View full-size slide

  47. Anpassung Dev & Prod
    Eigne Virtualisierung
    CentOS und Debian
    Entwicklungs Puppet
    Eigenes Deployment
    Keine Virtualisierung
    Eigenes Puppet
    Betriebs Deployment
    RHEL
    Viele
    Fehlerquellen

    View full-size slide

  48. Anpassung Dev & Prod
    Open Nebula
    Ein Puppet
    Hiera
    Gleichen Deploymenttools
    CentOS
    RHEL &
    CentOS

    View full-size slide

  49. … und was ist draus
    geworden ?

    View full-size slide

  50. 2013 vs. 2015
    Deployments +567 %
    Stabilität +0.2 %
    Rufbereitschaft -40%
    Kritische Fehler Behebung -90%
    Fehlerbehebungsdauer -55%

    View full-size slide

  51. Zusammenfassung
    Architektur muss verteilte Systeme erlauben
    Entwicklung muss vollautomatisiert sein
    Einheitliche Tools Entwicklung/Betrieb
    Organisation muss DevOps erlauben
    Möglichst unabhängige Teams (Tech/Orga)

    View full-size slide

  52. Was hätte besser sein
    können ?
    Schnelles Rollout besser planen
    3 mal Orga Strukturen neu
    Früher Dev Produktionszugriff
    Leitplanken früher kommunizieren
    Mehr (Über)Kommunikation
    Mehr Austausch zwischen den Teams

    View full-size slide

  53. Zukunft
    Alte Komponenten entfernen
    Mehr Dashboards
    Mehr Automatisierung
    VMs? Container?
    Ungleichheiten Dev/Prod beseitigen

    View full-size slide

  54. Fragen
    @owehrens
    speakerdeck.com/owehrens
    Vielen Dank!

    View full-size slide