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

Agile Banking mit DevOps und AWS

Agile Banking mit DevOps und AWS

Innovation in der Finanzbranche ist technologiegetrieben und erfordert eine Time-To-Market von Stunden und nicht - wie bisher üblich - Jahren. DevOps und Cloud Computing bilden das Fundament, auf dem eine hohe Entwicklungsgeschwindigkeit bei gleichzeitig hoher Qualität und Sicherheit realisiert werden kann. Die Zauberworte dabei heißen automatischer Integrationstest, Infrastructure as Code und agile Testumgebungen. Dieser Vortrag beschreibt praxisnah die Transformation einer Wertpapierhandelsbank von On-Premise nach AWS (Amazon Web Services) und geht dabei auf technische Herausforderungen und den Wandel zu einer DevOps Kultur ein.

Michael Wittig

June 02, 2015
Tweet

More Decks by Michael Wittig

Other Decks in Programming

Transcript

  1. • Software Entwickler • widdix GmbH • AWS Cloud Architekt

    • tecRacer • IT Infrastruktur Migration der ersten deutschen Bank nach AWS • Hintergrund im algorithmischen Handel und der Zeitreihenanalyse Michael Wittig
  2. • 2 x im Jahr Release • hohes Risiko •

    viele Fehler werden erst in Testphase entdeckt • lange Testphasen • Code mehrere Wochen nicht funktionstüchtig • SVN wird als Code-Backup benutzt • eine große JavaEE Anwendung • Kernbanksystem Development
  3. Grenzen sind nicht zu denken ohne ein Dahinter, setzen also

    die Möglichkeit des Überschreitens voraus.
  4. • ist in der Lage ihren Betrieb zu überwachen und

    aufrecht zu erhalten. • muss nie komplett ausgeschaltet werden. • läuft verteilt an mindestens zwei Orten. • wird als sich änderndes System begriffen dessen Kommunikationsströme einer starken Schwankung unterliegen. • kann sprunghaftes Kundenwachstum verarbeiten. • Der aktuelle Zustand der Plattform (Status quo) wird bei der Konzeption nicht limitierend berücksichtigt. Die Plattform…
  5. • Git Workflow • privates (Maven / rpm / npm)

    Repo • Jenkins Workflow • You built it, you own it! • wöchentliches Release durch Entwickler • Micro-Services • Amazon Web Services 2x7 Einblicke
  6. • zwei Ansätze • aus master muss immer released werden

    können • Version := Tag • Feature := Branch • Feature-Branch kann via Jenkins auf Testsystem deployed werden • master -> early -> live • early wird automatisch auf Testsystem deployed • aus live muss immer released werden können • Version := Tag • Feature := Branch • Pull-Requests • Tool Git Workflow
  7. • Jedes Release hat eine unveränderliche Versionsnummer • Do One

    Thing and Do It Well • orchestrieren: ls -l | awk '{print $3}' | sort | uniq -c • Code auslagern in Bibliotheken • keine Breaking Changes… • ...aber @Deprecated muss nur 4 Wochen supportet werden privates (Maven / rpm / npm) Repo
  8. • bei Commit • bauen • analysieren • testen •

    zeitgesteuert • Integrationstest • manuell • Release • Integrationstest • Testumgebung provisionieren • automate it! Jenkins Workflow
  9. • Entwickler entscheiden, welche Technologien benutzt werden • mindestens zwei

    Experten • aktiv in Mailinglisten • Expertenwissen aufbauen • Aktualisierung bei neuen Version • Verantwortlich für Betrieb • Logging, Monitoring, Backup • Verantwortlich für Release • Packaging, Testing, Deployment • Standards vorhanden und können genutzt werden • Lose Kopplung zwischen Service, Technologie, Entwicklerteam You built it, you own it!
  10. • Ablauf • Dienstag Mittag: Release • Dienstag Mittag: Deployment

    auf staging Testumgebung • Dienstag Nachmittag: technische Tests (Abnahme) • Mittwoch: fachliche Tests (Abnahme) • Mittwoch Abend: Deployment auf Produktion • ermutigt Entwickler dazu, in kleinen Schritten zu entwickeln • reduziert Deployment Risiko • beugt endlosen Features vor • enge Feedback-Schleife wöchentliches Release durch Entwickler
  11. • ~ 20 Services • Hazelcast • ActiveMQ • versionierte,

    unveränderliche, JSON Messages • bei Änderung an JSON Struktur wird eine neue Version erzeugt • alte Version wird mindestens 4 Wochen parallel unterstützt • Entkoppelung • Deployment • Entwickler • Technologien • Hystrix Micro-Services
  12. • Verlagerung der gesamten Infrastruktur nach AWS • erste Bank

    in Deutschland • Herausforderung: Datenschutz + Regulierung • Infrastructure as Code • keine manuellen Infrastruktur-Änderungen • Methoden aus der SW Entwicklung • Erhöht Effizienz und Qualität • alles in Git • Peer-Review • Pull-Request • Changes werden durch Jenkins ausgeführt • CloudFormation Amazon Web Services
  13. • Immutable & Stateless Server • agile Testumgebungen • automatisierte

    Integrationstests • staging Testumgebung • Echtzeit Log-Analyse • Echtzeit Monitoring • Dashboard 2x7 Einblicke
  14. • Server werden entsorgt wenn sie nicht mehr benötigt werden

    • Keine Ansammlung von Müll auf einem Server • Elastizität • steigender Load: Server hinzufügen • sinkender Load: Server entfernen • Zustand gehört in eine „Datenbank“ • ermöglicht Ausfallsicherheit • Nutzt Pay-as-you-go Prinzip • Automatisierung • Installation • Configuration Immutable & Stateless Server
  15. • temporäre Testumgebungen für Entwickler • keine Kundendaten • wegwerfen

    nach Nutzung • AWS + Vagrant + Chef agile Testumgebungen
  16. • Vagrant + Chef • CentOS • Herausforderungen: Abhängigkeiten? •

    Wer weiß eigentlich welcher Service mit wem redet? • Code-Analyse • Dependency-Graph in Neo4j • Datenbanken • MongoDB, CouchDB, PostgreSQL, Redis • Plattformen • Java EE (JBoss), Java (Spring), Node.js • JUnit automatisierte Integrationstests
  17. • Restriktiver Zugang • Kundendaten • 1-zu-1 Kopie von Produktion

    • „Öffnungszeiten“ staging Testumgebung
  18. • Alerting direkt an verantwortlichen Entwickler • Verkürzung der Reaktionszeit

    auf Fehler • Durchsuchbare Logs Echtzeit Log-Analyse
  19. • Alerting direkt an verantwortlichen Entwickler • Verkürzung der Reaktionszeit

    auf Fehler • Historie • Änderung nach Release? • Auslastung der Server Echtzeit Monitoring
  20. • Unsichtbares sichtbar machen • Inhalt • Redmine-Metriken • offene

    Bugs, neue Bugs • Git-Metriken • aktive Branches, inaktive Branches • Server-Metriken • Kunden-Metriken • Registrierungen, Transaktionen, Logins • Uptime-Metriken • externe Überwachung Dashboard
  21. 1. A new system generates new problems, and these problems

    are bigger than the original problem. 2. Systems tend to grow. 3. Complex systems can not be predicted and produce unexpected outcomes. 4. The system does not do what it says it is doing. 5. Systems get abused. 6. A complex system can fail in an infinite number of ways. 7. Loose systems last longer and work better. avoid systems