Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Microservices mit dem MicroProfile

78 views

Published on

Wer Microservices implementiert, wird schnell feststellen, dass ihn viele Herausforderungen erwarten, die er bis dahin nicht gekannt hat. Resilience, Service Discovery, verteilte Autenfizierung, Tracing und Health Checks sind Themen, die man als Entwickler nicht jedes Mal neu erfinden möchte. Aber zum Glück gibt es da etwas von der Eclipse-Foundation – das MicroProfile. Eine Spezifikation, die mit ihren verschiedenen Implementierungen den technischen Herausforderungen von Microservices eindrucksvoll begegnet. Egal ob Health Check, Metrics, Fault Tolerance, JWT Propagation, Configuration, Tracing oder Open API, das MicroProfile hat die passenden APIs im Gepäck. Mit viel Code und wenig Slides wirft dieser Workshop einen Blick auf die jeweiligen APIs, zeigt sie im Praxiseinsatz und stellt Vorteile und Probleme vor.

Published in: Software
  • Be the first to comment

  • Be the first to like this

Microservices mit dem MicroProfile

  1. 1. #WISSENTEILEN #WISSENTEILEN Arne Limburg | Enterprise Architect | open knowledge GmbH @_openKnowledge | @ArneLimburg Microservices mit dem Microprofile
  2. 2. #WISSENTEILEN ÜBER OPEN KNOWLEDGE Branchenneutrale Softwareentwicklung & IT-Beratung
  3. 3. #WISSENTEILEN ÜBER MICH • Enterprise Architect bei der open knowledge GmbH • Themen • Microservices • Domain Driven Design • APIs • Architektur • Coaching • Technologie (Java EE / Jakarta EE / Microprofile) Arne Limburg
  4. 4. #WISSENTEILEN Mein Freund der Microservice
  5. 5. #WISSENTEILEN
  6. 6. #WISSENTEILEN Das geht mit JEE?
  7. 7. #WISSENTEILEN Technologisch? Auf jeden Fall!
  8. 8. #WISSENTEILEN Management Monitoring Availability Security (* Java EE 7 APIs)
  9. 9. #WISSENTEILEN Ok, das geht mit JEE. Aber passt das auch?
  10. 10. #WISSENTEILEN „Max cohesion, min coupling“ • JEE Business Component • Boundary Entity Control Pattern • je Service ein eigenes WAR • Kommunikation via REST
  11. 11. #WISSENTEILEN
  12. 12. #WISSENTEILEN Unabhängig?
  13. 13. #WISSENTEILEN JEE
  14. 14. #WISSENTEILEN App Server?
  15. 15. #WISSENTEILEN
  16. 16. #WISSENTEILEN Ich will meinen Monolithen zurück!
  17. 17. #WISSENTEILEN Don‘t panic!
  18. 18. #WISSENTEILEN Folks, we must talk …
  19. 19. #WISSENTEILEN
  20. 20. #WISSENTEILEN „Just enough Server“ • Self-Contained Java Microservices (.jar) • Java EE Komponenten on demand • Embedded Servlet / Web Engine • more to come … Das geht mit Java EE? JEE
  21. 21. #WISSENTEILEN
  22. 22. #WISSENTEILEN
  23. 23. #WISSENTEILEN
  24. 24. #WISSENTEILEN „An open forum to optimize Enterprise Java for a microservices architecture by innovating across multiple implementations and collaborating on common areas of interest with a goal of standardization.“ Die Mission
  25. 25. #WISSENTEILEN Brücke zwischen Community und Standard • breite Kooperation von Herstellern • Portabel zwischen Implementierungen • Förderung von Experimentierfreudigkeit • Risikominimierung • zügige Innovationen Die Idee
  26. 26. #WISSENTEILEN Der Weg in die MicroProfile Zukunft: • Schritt 1: Den „Hebel“ Java EE nutzen • Schritt 2: Organische Innovationen • Schritt 3: Zusammenarbeit via Open Source Die Umsetzung (*aktuelle Planung: 2-4 Releases/Jahr)
  27. 27. #WISSENTEILEN Q4 2016 Move to (*MicroProfile 1.0: JAX-RS 2.0, CDI 1.2, JSON-P 1.0) Q3 2019 MP v. 3.0 Q4 2019 MP v. 2.2 Q2 2017 MP v. 1.1 Q1 2019 MP v. 3.1/3.2
  28. 28. #WISSENTEILEN
  29. 29. #WISSENTEILEN Hello World
  30. 30. #WISSENTEILEN Hello World
  31. 31. #WISSENTEILEN I am so NOT impressed!
  32. 32. #WISSENTEILEN Get ready for more …
  33. 33. #WISSENTEILEN Distributed Configuration
  34. 34. #WISSENTEILEN Wie kann ich auf einheitliche Art und Weise in meinen Services unterschiedlichste Konfigurationsmechanismen nutzen? • MicroProfile Config 1.3 Distributed Configuration
  35. 35. #WISSENTEILEN
  36. 36. #WISSENTEILEN
  37. 37. #WISSENTEILEN
  38. 38. #WISSENTEILEN MicroProfile Config 1.3 • Default ConfigSources* System Properties, Env Vars & Config File • Custom ConfigSources* z.B. DB oder ConfigServer • Startup vs. Laufzeit ConfigProperty vs Provider Distributed Configuration *inkl. ordinal
  39. 39. #WISSENTEILEN
  40. 40. #WISSENTEILEN
  41. 41. #WISSENTEILEN Configuration
  42. 42. #WISSENTEILEN Up & Running?
  43. 43. #WISSENTEILEN Wie kann ich auf einheitliche Art und Weise den Health Status und weitere Metriken meines Microservices abfragen? • MicroProfile HealthCheck 2.1 • MicroProfile Metrics 2.2 Up & Running
  44. 44. #WISSENTEILEN MicroProfile HealthCheck 2.1 • M2M, e.g Kuberentes Liveness & Readiness • terminate, shutdown, replace? • Single HC Endpoint pro MP Runtime (/health) • logisches UND (gesund, wenn alle gesund) • REST/HTTP (andere optional z.B. JMX) Up & Running
  45. 45. #WISSENTEILEN Health check for @Readiness of connection pool
  46. 46. #WISSENTEILEN *optional secured http://myhost.com:8080/health/[live|ready]*
  47. 47. #WISSENTEILEN
  48. 48. #WISSENTEILEN
  49. 49. #WISSENTEILEN
  50. 50. #WISSENTEILEN MicroProfile Metrics 2.2 • deutlich mehr als nur UP/DOWN Info für Scopes „base“, „vendor“, „application“ • Datentrends für Kapazitätsplanung • Auslastung für automatisches Scalling • proaktives Feststellen von Problemen* Up & Running (* z.B. Disk-Usage Anomalie)
  51. 51. #WISSENTEILEN MicroProfile Metrics 2.2 • Pflicht- und Optional-Metrics • Tags via Metric Description & Config API • Metadaten (unit, type, description, …) • Reusable Metrics (default ist false) • JSON & Prometheus Format (mehr geplant) Up & Running
  52. 52. #WISSENTEILEN
  53. 53. #WISSENTEILEN https://myhost.com:9443/metrics/application/... *A server SHOULD implement TLS encryption by default.
  54. 54. #WISSENTEILEN MicroProfile Metrics 2.2 • @ Timer • @ Counter • @ Gauge • @ Meter • @ Histogram Up & Running
  55. 55. #WISSENTEILEN Up & Running?
  56. 56. #WISSENTEILEN Resilience
  57. 57. #WISSENTEILEN Wie kann ich mein System so aufbauen, dass es auch bei temporäre Ausfällen und Problemsituation einzelner Microservices stabil läuft (a.k.a. Resilient)? • MicroProfile Fault Tolerance 2.0 Resilience
  58. 58. #WISSENTEILEN MicroProfile Fault Tolerance 2.0 • Business Logik um Fehlertoleranz erweitern • Trennung der Logik von deren Ausführung • Ausführung erlaubt Resilience Patterns • CDI Interceptor als Mittel zum Zweck • Hystrix/Failsafe als Vorbilder für Standard API Resilience
  59. 59. #WISSENTEILEN MicroProfile Fault Tolerance 2.0 • @Timeout • @ Retry • @ Fallback • @ CircuitBreaker • @ Bulkhead Resilience (Konfiguration via Config API möglich)
  60. 60. #WISSENTEILEN Fault Tolerance via @Retry
  61. 61. #WISSENTEILEN Fault Tolerance via @Timeout und @Fallback
  62. 62. #WISSENTEILEN Circuit Breaker
  63. 63. #WISSENTEILEN Circuit Breaker
  64. 64. #WISSENTEILEN Circuit Breaker
  65. 65. #WISSENTEILEN Fault Tolerance via @CircuitBreaker und @Fallback
  66. 66. #WISSENTEILEN Bulkheads
  67. 67. #WISSENTEILEN Bulkheads
  68. 68. #WISSENTEILEN Bulkheads
  69. 69. #WISSENTEILEN Fault Tolerance via @Bulkhead und @Fallback
  70. 70. #WISSENTEILEN Resilience
  71. 71. #WISSENTEILEN Typesafe REST Client
  72. 72. #WISSENTEILEN Typesafe Client
  73. 73. #WISSENTEILEN Security
  74. 74. #WISSENTEILEN Wie sichere ich meine Microservices gegen unbefugten Zugriff ab OHNE dass bei jedem Service eine neue Authentifizierung und Authorisierung stattfinden muss? • MicroProfile JWT Auth 1.1 Security
  75. 75. #WISSENTEILEN
  76. 76. #WISSENTEILEN
  77. 77. #WISSENTEILEN
  78. 78. #WISSENTEILEN
  79. 79. #WISSENTEILEN
  80. 80. #WISSENTEILEN
  81. 81. #WISSENTEILEN
  82. 82. #WISSENTEILEN MicroProfile JWT Auth 1.1 • Security Token aus Request extrahieren • Validierung des Tokens vornehmen • Claims aus Token extrahieren • (JEE) Security Context erzeugen Security
  83. 83. #WISSENTEILEN MicroProfile JWT Auth 1.1 • type, alg, kid (header) • iss, sub, exp, iat, jti, (payload IANA*) • upn, groups (payload mp jwt auth) • etliche optionale Claims Security (*Internet Assigend Number Authority)
  84. 84. #WISSENTEILEN JWT Auth Step 1: MS als „requires MP-JWT“ markieren
  85. 85. #WISSENTEILEN JWT Auth Step 2: Token / Claims injecten
  86. 86. #WISSENTEILEN JWT Auth Step 3: Role-based Access Control hinzufügen
  87. 87. #WISSENTEILEN Security
  88. 88. #WISSENTEILEN Distributed Tracing
  89. 89. #WISSENTEILEN Wie lässt sich ein Request-Flow über Servicegrenzen hinaus verfolgen? • MicroProfile Open Tracing 1.3 Tracing
  90. 90. #WISSENTEILEN
  91. 91. #WISSENTEILEN
  92. 92. #WISSENTEILEN MicroProfile Open Tracing 1.3 • verteiltes Tracing über Servicegrenzen hinweg • Correlation ID als gemeinsamer Nenner • OpenTracing Standard als Basis* • Achtung: KEIN eigener Tracing Service sondern lediglich dessen Support Tracing *https://opentracing.io
  93. 93. #WISSENTEILEN Tracing für JAX-RS Methoden aktivieren
  94. 94. #WISSENTEILEN Tracing für einzelne Methoden deaktivieren
  95. 95. #WISSENTEILEN
  96. 96. #WISSENTEILEN
  97. 97. #WISSENTEILEN Tracing
  98. 98. #WISSENTEILEN API Description
  99. 99. #WISSENTEILEN Wie kann ich meine Microservices APIs so dokumentieren, dass sie von anderen verstanden und genutzt werden können. • MicroProfile Open API 1.1 API Description
  100. 100. #WISSENTEILEN
  101. 101. #WISSENTEILEN MicroProfile Open API 1.1 • OpenAPI v3 Standard (abgeleitet von Swagger) • Scan- und Annotationen-basiert (fast 50 @s) • frei konfigurierbar (Scanpath etc.) • mit YAML, JSON kombinierbar (in META-INF) • Filter setzen via Config API API Description
  102. 102. #WISSENTEILEN
  103. 103. #WISSENTEILEN
  104. 104. #WISSENTEILEN
  105. 105. #WISSENTEILEN
  106. 106. #WISSENTEILEN API Description
  107. 107. #WISSENTEILEN What comes next?
  108. 108. #WISSENTEILEN
  109. 109. #WISSENTEILEN MicroProfile Configuration Fault Tolerance Health Check Metrics JWT Token Security Disributed Tracing OpenAPI CDI 2.0 JSON-P 1.1 JAX-RS 2.1 JSON-B 1.0 Distributed Logging Distributes TX / LRA Service Discovery Bean Validation …
  110. 110. #WISSENTEILEN MicroProfile WebSockets Concurrency Utilities Reactive Messaging Async/Reactive EJB Lite Servlets HTTP/2 Uber-jar Eventing Systems Big Data/NoSQL NetFlix OSS Integration jCache Java 9 Modularity ...
  111. 111. #WISSENTEILEN
  112. 112. #WISSENTEILEN
  113. 113. #WISSENTEILEN „Komplexität wird durch Microservices verlagert, nicht verringert! by Lars Röwekamp
  114. 114. #WISSENTEILEN
  115. 115. #WISSENTEILEN
  116. 116. #WISSENTEILEN ? ? ? @ArneLimburg @_openknowledge
  117. 117. #WISSENTEILEN Getting started ... . MicroProfile.io bit.ly/MicroProfileForum github.com/microprofile/microprofile-samples
  118. 118. #WISSENTEILEN KONTAKT ARNE LIMBURG ENTERPRISE ARCHITECT arne.limburg@openknowledge.de +49 (0)441 4082 – 0 @ArneLimburg @_openknowledge OFFENKUNDIGGUT
  119. 119. #WISSENTEILEN BILDNACHWEISE #01 FabrikaSimf – shutterstock.com #06, #17 © Andrew Rich – istockphoto.com #15 © Chris Munns – Amazon – CC Attribution License #30, #41, #55, #70, #72, #87, #97, #106 © print10 – istockphoto.com #112 ©MichaelJayBerlin - shutterstock.com All other pictures inside this presentation orginate from pixabay.com or were created by my own.

×