Die 2016 gegründete und inzwischen in der Eclipse Foundation beheimatete Initiative MicroProfile ist angetreten, die Lücke zwischen dem Enterprise-Java-Standard (Java EE a.k.a. Jakarta EE) und den Praxisanforderungen Microservices-basierter Architekturen zu schließen. Das bestehende Momentum der Java-EE-Community als Hebel nutzen und organisch um den Bedarf der Microservices-Community ergänzen, so lautet der Plan. Und dieser scheint aufzugehen. In nur wenigen Monaten ist es gelungen, eine Reihe sinnvoller Microservices-relevanter APIs mit bestehenden Java EE 7/8 APIs zu kombinieren und diese in regelmäßigen MicroProfile-Releases zu veröffentlichen. Egal ob Health Check, Metrics, Fault Tolerance, JWT Propagation, Configuration, Tracing oder Open API, MicroProfile scheint die richtigen Antworten – sprich APIs – im Gepäck zu haben. Die Session zeigt den aktuellen Stand von MicroProfile und demonstriert dessen Mehrwert anhand praktischer Beispiele.
Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“
Java EE meets Microservices: MicroProfile 2.x to the Rescue
1. #WISSENTEILEN
Java EE meets Microservices
Microprofile 2.x to the Rescue
Lars Röwekamp
CIO New Technologies
@mobileLarson
@_openknowledge
#WISSENTEILEN
3. #WISSENTEILEN
ÜBER MICH
Wer bin ich - und wenn ja, wie viele?
• CIO New Technologies
• Enterprise & Mobile
• Autor, Speaker, Coach & Mentor
• Snowboard & MTB Enthusiast (a.k.a. “stets bemüht“)
Lars Röwekamp (a.k.a. @mobileLarson)
10. #WISSENTEILEN
„Max cohesion, min coupling.“
JEE Business Component
Boundary Entity Control Pattern
je Service ein eigenes WAR
Kommunikation via REST
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
22. #WISSENTEILEN
Die Mission:
„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.“
MicroProfile
23. #WISSENTEILEN
Brücke zwischen Community und Standard
• breite Kooperation von Herstellern
• Portabel zwischen Implementierungen
• Förderung von Experimentierfreudigkeit
• Risikominimierung
• zügige Innovationen
MicroProfile
24. #WISSENTEILEN
Der Weg in die MicroProfile Zukunft:
• Schritt 1: Den „Hebel“ Java EE nutzen
• Schritt 2: Organische Innovationen
• Schritt 3: Zusammenarbeit via Open Source
MicroProfile
(*aktuelle Planung: 2-4 Releases/Jahr)
29. #WISSENTEILEN
Was brauche ich mindestens um einen
Microservice auf Basis von Java EE APIs
implementieren zu können?
• JAX-RS 2.1
• CDI 2.0
• JSON-P 1.1
MicroProfile
32. #WISSENTEILEN
Wie kann ich auf einheitliche Art und Weise
in meinen Services unterschiedlichste
Konfigurationsmechanismen nutzen?
• MicroProfile Config 1.3
MicroProfile
36. #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
MicroProfile
*inkl. ordinal
40. #WISSENTEILEN
Wie kann ich auf einheitliche Art und Weise
den Health Status und weitere Metriken
meines Microservices abfragen?
• MicroProfile HealthCheck 1.0
• MicroProfile Metrics 1.1
MicroProfile
41. #WISSENTEILEN
MicroProfile HealthCheck 1.0
• 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)
MicroProfile
47. #WISSENTEILEN
MicroProfile Metrics 1.1
• 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*
MicroProfile
(z.B. Disk-Usage Anomalie)
48. #WISSENTEILEN
MicroProfile Metrics 1.1
• Pflicht- und Optional-Metrics
• Tags via Metric Description & Config API
• Metadaten (unit, type, description, …)
• Reusable Metrics (default ist false)
• JSON & Prometheus Format (mehr geplant)
MicroProfile
53. #WISSENTEILEN
Wie kann ich mein System so aufbauen,
dass es auch bei temporäre Ausfälle und
Problemsituation einzelner Microservices
stabil läuft (a.k.a. Resilient)?
• MicroProfile Fault Tolerance 2.0
MicroProfile
54. #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
MicroProfile
68. #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
MicroProfile
85. #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
MicroProfile
91. #WISSENTEILEN
Wie kann ich meine Microservices APIs
so dokumentieren, dass sie von anderen
verstanden und genutzt werden können.
• MicroProfile Open API 1.1
MicroProfile
93. #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
MicroProfile