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

Micro Services - Die Verheißungen könnten eintr...

Micro Services - Die Verheißungen könnten eintreten.

Mit Micro Services wird es möglich, die SOLID Prinzipen auf die Architektur anzuwenden. Anwendungen werden in einzelne, collaborierende Services zerlegt.

Die Konzepte sind leicht zu erfassen und vieles davon ist bereits bekannt.

In der Umsetzungspraxis jedoch entstehen viele Fragen die beantwortet werden wollen:

Welche Technologie bietet sich an?
Wie können insb. IntegrationsTests gestaltet werden?
Was ändert sich an (Continuous) Deployment Pipelines, wenn plötzlich viele, im lifecycle unabhängige Services deployed werden müssen?

In diesem Vortrag werde ich vorstellen, welche Antworten wir auf diese Fragen gefunden haben. Am Ende wirst du in der Lage sein, innerhalb kürzester Zeit, eigene Micro Services Aufzusetzen, zu Testen und zu Deployen.

bed-con 2014
http://bed-con.org/2014/talks/Micro-Services---Die-Verheissungen-koennten-eintreten

Timmo Freudl-Gierke

April 04, 2014
Tweet

More Decks by Timmo Freudl-Gierke

Other Decks in Technology

Transcript

  1. © 2011 HYPOPORT AG Organisator der 
 MongoDB User Group

    Berlin Head Architekt EUROPACE 2 Plattform Timmo Freudl-Gierke twitter: @timmo_gierke
  2. !7

  3. !7

  4. !7

  5. MicroService (Architektur) ! • “Klein” • Exklusive Datenbank • Optimierter

    Tech-Stack • Unabhängig Deploybar • Unabhängig Skallierbar • Verantwortung eines Team !13
  6. MicroService (Architektur) ! • “Klein” • Exklusive Datenbank • Optimierter

    Tech-Stack • Unabhängig Deploybar • Unabhängig Skallierbar • Verantwortung eines Team !13
  7. – Bertrand Meyer / Robert C. Martin “Software Artefakte sollten

    offen für Erweiterungen und geschlossen für Änderungen sein.” !16
  8. Vorgangs Management Übersicht Partner Management Baufi Smart Kredit Smart Bauspar

    Smart Reporting Dokumenten Verwaltung Rechenkern 80 - 2k Class Files each 5 - 50 Maven Projects each > 5k Class Files 200 Maven Projects !17
  9. Vorgangs Management Übersicht Partner Management Baufi Smart Kredit Smart Bauspar

    Smart Reporting Dokumenten Verwaltung Rechenkern 80 - 2k Class Files each 5 - 50 Maven Projects each > 5k Class Files 200 Maven Projects 27 - 200 Class Files each 1 Maven / Gradle Project each !17
  10. Infrastructure • CI-Server (TeamCity Goals) • Database (MongoDB) • Host

    (ESX) / Co-location • Puppet template • Load balancer config • DNS • … Automate everything ! !20
  11. Continuous Integration Server (Random, free Network Port) Service Integration Test

    Suite Service Integration Test Suite Service Integration Test Suite !30
  12. try { ServerSocket s = new ServerSocket(0); int port =

    s.getLocalPort(); s.close(); return port; } catch (IOException e) {// …} service.properties Service Integration Test Suite !31
  13. !32

  14. Multi-Pipeline Dependencies Production Rollout Service Integration T. Consumer Driven Tests

    Service Specific Pipeline (part) Service Specific Pipeline (part) !34
  15. Consumer Driven Test Suites B A C CDTS! A->B CDTS!

    B->C Verantwortungsgrenze Provider Consumer Provider Consumer !36
  16. Consumer Driven Test Suites B A C CDTS! A->B CDTS!

    B->C Verantwortungsgrenze Provider Consumer Provider Consumer !36
  17. Rolling Update For each Host do 1. Remove from load

    balancer 2. Shutdown service 3. Copy new service artefact(s) 4. (Install new artefact) 5. Start service 6. Add to load balancer !38
  18. !39

  19. Logging Log Aggregator • Logstash & Kibana • (Splunk) log

    statement: • tracingId • service • user • use-case • entity !44
  20. Monitoring • Self monitoring • Mem • Cpu • DB

    Connection • Business Metrics • Metrics + Graphite • Aalarming • pushover.net GET /health !45
  21. Resilience n-tier headache Circuit Breaker Fail fast Fail silent Hysterix

    Load Shedder Totmannschalter Cache Fallback Strategy !46
  22. Multi-Team Entwicklung Cross functional teams • GWT • Spring •

    Mongo • Maven • AngularJS • SpringBoot • Gradle !48
  23. Multi-Team Entwicklung Cross functional teams • GWT • Spring •

    Mongo • Maven • AngularJS • SpringBoot • Gradle Share tools, ! don’t enforce standards !48
  24. Multi-Team Entwicklung Cross functional teams • GWT • Spring •

    Mongo • Maven • AngularJS • SpringBoot • Gradle Know-How Transfer Share tools, ! don’t enforce standards !48