MicroProfile ist eine Vereinigung aus namhaften Open-Source-Projekten und Herstellern, die sich das Ziel gesetzt haben, Enterprise Java für Cloud Native und Microservice Architekturen zu optimieren. Dabei soll die Portierbarkeit der Anwendungen innerhalb der verschiedenen MicroProfile-Laufzeitumgebungen gewährleistet werden. Unter Verwendung konkreter Code-Beispiele wird der bereits existierenden Funktionsumfang aufgezeigt. Zum Abschluss wird auf das geplante MicroProfile-Backlog eingegangen und versucht, den angedachten Schulterschluss mit Java EE 8 und Java EE 9 herzustellen.
https://www.cncf.io/
z.B. Kubernetes, Docker, Opentracing
The CNCF Cloud Native Landscape Project:
a map through the previously uncharted terrain of cloud native technologies
This attempts to categorize many of the most popular projects and product offerings in the cloud native space.
There are many routes to deploying a cloud native application, with CNCF Projects representing a particularly well-traveled path.
https://raw.githubusercontent.com/cncf/landscape/master/landscape/CloudNativeLandscape_latest.jpg
Anwendungen müssen Cloud-Native sein
d.h. sie nutzen die Vorteile der Cloud (egal ob Public oder Private Cloud)
müssen aber auch die Voraussetzungen dazu erfüllen:
- schmaler Fussabdruck (da Bezahlung nach CPU oder Memory)
- kurze Startzeiten (für hohe Skalierbarkeit)
- kleine Services wg. schnellerem Deployment und Anpassbarkeit
https://12factor.net/
Wenn Config-Wert fehlt: Anwendung startet nicht (Liberty)
Timeout: TimeoutException nach Ablauf der Zeit
Timeout bei Asynchronous: mit Thread.interrupt() Thread wieder freigeben
Retry:
maximale Anzahl an Wiederholungen (maxRetries)
Verzögerung zwischen den Aufrufen (delay)
maximale Dauer der Aufrufversuche (maxDuration)
Zufallsvariation der Verzögerung der Aufrufe (jitter)
Angabe des Fehlers bei dem erneut versucht (retryOn)
Angabe des Fehlers bei dem abgebrochen wird (abortOn)
Fallback:
Auf Methoden oder Klassenebene möglich
CircuitBreaker:
Stromsicherung
Mehr als JSR 77 „J2EE Management“ von 2002: einheitliche Schnittstelle mit genormten Daten (JSON, Prometheus)
Base: für alle AppServer indentisch
Vendor: AppServer spezifisch
Application: eigene Anwendungs-Messwerte
2 Punkte im JWT
Base64 URL Encoded
Header Payload Signatur
JSON: Header und Payload
OpenTracing: Mitglied der CNCF
Einheitliche API für Trace-Ausgaben
Implementierung der API enthält den Code für Zugriff auf Trace-Server (z.B. Zipkin (http://zipkin.io)
http://istio.io