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

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

A6cc76689f4b4e8f326b4613b5e2f98a?s=128

Timmo Freudl-Gierke

April 04, 2014
Tweet

Transcript

  1. Micro Services Die Verheißungen könnten eintreten. Timmo Freudl-Gierke @timmo_gierke !1

  2. © 2011 HYPOPORT AG Organisator der 
 MongoDB User Group

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

  4. James Lewis Robert C. Martin Stefan Tilkov !4

  5. Verheißungen Single Responsibility Principle Open Closed Principle Continuous Deployment Transparenz

    im Betrieb Multi-Team Entwicklung !5
  6. Verheißungen Single Responsibility Principle Open Closed Principle Continuous Deployment Transparenz

    im Betrieb Multi-Team Entwicklung !6
  7. !7

  8. !7

  9. !7

  10. Robert C. Martin “Für die Änderung einer Klasse sollte es

    nur genau einen Grund geben.” !8
  11. Single Responsibility in allen Ebenen der Modularität !9

  12. Monolithic Application Pattern One Big App - One Big Database

    !10
  13. Monolithic Application Pattern One Big App - One Big Database

    !10
  14. Monolithic Application Pattern One Big App - One Big Database

    !10
  15. Monolithic Application Pattern One Big App - One Big Database

    !11
  16. Teile Deine Anwendung in vertikale Domänen! !12

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

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

    Tech-Stack • Unabhängig Deploybar • Unabhängig Skallierbar • Verantwortung eines Team !13
  19. Makro Architektur ! • Wenige, übergreifende Standards • Kommunikationsprotokoll •

    Security !14
  20. Verheißungen Single Responsibility Principle Open Closed Principle Continuous Deployment Transparenz

    im Betrieb Multi-Team Entwicklung !15
  21. – Bertrand Meyer / Robert C. Martin “Software Artefakte sollten

    offen für Erweiterungen und geschlossen für Änderungen sein.” !16
  22. 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
  23. 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
  24. Schnell Fahrt aufnehmen ! !18

  25. Spring Boot > gradle build
 > java -jar hello.jar &


    > curl http://localhost:8080/ !19
  26. Infrastructure • CI-Server (TeamCity Goals) • Database (MongoDB) • Host

    (ESX) / Co-location • Puppet template • Load balancer config • DNS • … Automate everything ! !20
  27. Verheißungen Single Responsibility Principle Open Closed Principle Continuous Deployment Transparenz

    im Betrieb Multi-Team Entwicklung !21
  28. Deployment Pipeline !22

  29. Deployment Pipeline Vertrauen in Fehlerfreiheit !22

  30. Deployment Pipeline Vertrauen in Fehlerfreiheit Schnelles Feedback !22

  31. Deployment Pipeline Vertrauen in Fehlerfreiheit Schnelles Feedback Laufzeit (ca. 5

    min) !22
  32. Build 10 second build ! !23

  33. Test Pyramide !24

  34. Test Pyramide !24

  35. Test Pyramide !24

  36. Testklassen EUROPACE 2 Testpyramide (Sept. 2013) System-Integration Modul-Integration Unit 0,00

    500,00 1000,00 1500,00 2000,00 Test-Klassen !25
  37. Unit Tests 5 sec. TDD cycle !26

  38. Integration Tests !27

  39. Standalone Mode • Mocked Dependencies • Golden test data
 (apply

    on startup) • Spring Profiles !28
  40. MicroService in Isolation Test (Service Integration Test) Service Integration Test

    Suite !29
  41. Continuous Integration Server (Random, free Network Port) Service Integration Test

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

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

  44. Interoperability Tests !33

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

    Service Specific Pipeline (part) Service Specific Pipeline (part) !34
  46. B A C Laufzeitabhängigkeiten zwischen 3 Micro Services !35

  47. Consumer Driven Test Suites B A C Verantwortungsgrenze !36

  48. Consumer Driven Test Suites B A C Verantwortungsgrenze Provider Consumer

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

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

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

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

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

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

    B->C Verantwortungsgrenze Provider Consumer Provider Consumer !36
  55. Production Deployment !37

  56. 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
  57. !39

  58. Incident Manager Interface • service.sh restart • /etc/init.d/yourService (symlink) !40

  59. Wichtiger Baustein Starte so schlank wie möglich !41

  60. Verheißungen Single Responsibility Principle Open Closed Principle Continuous Deployment Transparenz

    im Betrieb Multi-Team Entwicklung !42
  61. Allgemeine Betriebsstrategie: ! Stabilität & Nachvollziehbarkeit !43

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

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

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

    Load Shedder Totmannschalter Cache Fallback Strategy !46
  65. Verheißungen Single Responsibility Principle Open Closed Principle Continuous Deployment Transparenz

    im Betrieb Multi-Team Entwicklung !47
  66. Multi-Team Entwicklung Cross functional teams • GWT • Spring •

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

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

    Mongo • Maven • AngularJS • SpringBoot • Gradle Know-How Transfer Share tools, ! don’t enforce standards !48
  69. Verheißungen Single Responsibility Principle Open Closed Principle Continuous Deployment Transparenz

    im Betrieb Multi-Team Entwicklung !49
  70. None
  71. Gute Ideen sind unter einem Dach vereint.

  72. Gute Ideen sind unter einem Dach vereint. Der erste Praxistest

    ist bestanden.
  73. Gute Ideen sind unter einem Dach vereint. Der erste Praxistest

    ist bestanden. Probiert es aus !
  74. Micro Services Die Verheißungen sind eingetreten ;-) Timmo Freudl-Gierke @timmo_gierke

    !51