Mit Docker haben sich Container als Auslieferungsformat (nicht nur) für Microservices zum Status Quo für Cloudanwendungen etabliert.
Zur Erstellung der Container-Images war lange Zeit Zugriff auf einen Docker-Daemon erforderlich.
Besonders in Umgebungen wie Kubernetes-Clustern oder Public-Clouds mit gemeinsam genutzter Infrastruktur soll auf privilegierte Container verzichtet werden.
Mit dem typischen Ansatz von Docker-in-Docker oder Docker-Outside-Docker erhält ein so ausgeführter Build nämlich relativ viele Rechte.
Dank der OCI Spezifikation für Image-Formate ist Docker mit einem Dockerfile jedoch nur noch eine Möglichkeit, zum auslieferbaren Image zu gelangen.
Ein weiterer Aspekt sind die oft schwer umzusetzenden Optimierungsmöglichkeiten für Docker Images:
Um vom Layer-Caching optimal zu profitieren und damit sowohl I/O-Operationen als auch Speicherplatz zu sparen, sollten die Daten, die sich weniger häufig ändern, in einem separaten Layer positioniert werden, als Daten, die sich regelmäßig ändern.
Bei einer Spring Boot Anwendung könnte man zum Beispiel zwischen allen Abhängigkeiten und den eigentlichen, zu der Anwendung selbst gehörenden Class-Dateien differenzieren:
Die Abhängigkeiten werden sich seltener ändern, als das Programm, das bei jedem Bugfix und jeder Erweiterung Änderungen erfährt.
Nur dieser geänderte Image-Layer muss dann verteilt werden.
Für beide Probleme soll das Google Projekt "Jib" eine Lösung liefert.
Am Beispiel einer Spring Boot Anwendung und Maven wird der Einsatz von Google Jib demonstriert.
Auf der Konferenz JavaLand stellten Stefan Reuter und Thomas Kruse das Thema "Self-Contained Systems" (SCS) im Kontext moderner Technologieentscheidungen vor.
Auf Basis von Erfahrungen in mehreren Projekten wurde der Weg von einer monolithischen Anwendungslandschaft zu einer Zielarchitektur auf Basis von Microservices und modernen Frontendtechnologien wie Angular skizziert.
Empfohlen wurde dabei die Nutzung von Domain-Driven Design für den Schnitt fachlicher Domänen und damit für die Identifikation möglicher SCS.
Dieser Artikel zeigt, wie sich mit wenigen Schritten eine komfortable und leicht zu wartende Umgebung für Entwicklung und lokale Tests von Java Spring-Boot und TypeScript Angular Anwendungen erstellen lässt.
Vorweg stellt sich die Frage: Warum sind neue Ansätze sinnvoll und was steckt hinter den eingesetzten Technologien?
Geschrieben von Thomas Kruse am 30. September 2016
Auf der diesjährigen JavaOne in San Francisco war die trion mit durch Speakern vertreten: Stefan Reuter, Karsten Sitterberg und Thomas Kruse.
Stefan und Karsten hatten den Schwerpunkt "reactive Programming", bei dem Architekturaspekte und Umsetzungsoptionen aufgezeigt wurden.
Stefan Reuter lieferte neben einer Einführung in RxJava auch Beispiele und Hinweise zur Implementierung reaktiver Backends mit Spring bzw. Spring Boot.
Karsten Sitterberg zeigte wie mit RxJS und dem Angular 2 JavaScript Framework reaktive Frontends implementiert werden können. Thomas Kruse befasste sich mit dem Thema Microservices, DevOps und Integration mit relationalen Datenbanken.