Geschrieben von Thomas Kruse
am 28. Januar 2020
Bei der PHP Usergroup Münster stellte Thomas Kruse vor, welche Optionen gRPC für die Entwicklung und Integration von Microservices bietet.
Geschrieben von Thomas Kruse
am 16. Januar 2020
Wie können moderne APIs unter Berücksichtigung von Web Anwendungen definiert und implementiert werden?
Diese Frage stellt sich vor allem bei Microservice Architekturen, wenn viele unterschiedliche Dienste miteinander integriert werden.
Als eine Option stellte Thomas Kruse bei dem Meetup "Frontend Freunde" vor, wie dies auf Basis von gRPC umgesetzt werden kann und welche Implikationen sich ergeben.
Geschrieben von Thomas Kruse
am 6. November 2019
Im Backend hat sich der Architekturstil "Microservices" für viele Anwendungsbereiche durchgesetzt.
Dabei stellt sich relativ schnell die Frage: Wie geht man mit dem Thema Frontend um?
In dem Vortrag "Frontend Architektur für Microservices" gab Thomas Kruse auf der W-JAX 2019 in München einen Überblick zu verschiedenen Herangehensweisen.
Der Vortrag zeigt die speziellen Herausforderungen, die sich aus einer guten Benutzbarkeit von Frontends für Microservices ergeben.
Durch aktuelle Entwicklungen im Bereich von WebComponents und modularer SPA Frameworks ergeben sich zusätzliche Architekturoptionen, die in dem Vortrag bewertet wurden.
Geschrieben von Thomas Kruse
am 30. Oktober 2019
Bei dem Meetup Digital Innovation Ruhr behandelte Thomas Kruse in seinem Vortrag "Frontend Architektur für Microservices" verschiedene Architektur Optionen, um mit den Herausforderungen des Frontends bei einer Microservice Architektur umzugehen.
Für den Vortrag wurden die Erfahrungen aus verschiedenen Projekten in einem zeitlichen und technologischen Kontext eingeordnet und liefern damit Entscheidungshilfen für Architekten, die sich mit dem Thema Frontend im Microservice Kontext befassen.
Ein besonderes Augenmerk wurde dabei auf den Systemschnitt aus der Perspektive des Frontends und des Nutzers gelegt, der in der Regel eine integrierte Oberfläche ohne Brüche im Prozess erwartet.
Dank aktueller Entwicklungen eignen sich inzwischen Webcomponents für bestimmte Aufgabenstellungen und wurden mit einem Beispiel auf Basis von Angular Elements praktisch demonstriert.
Geschrieben von Thomas Kruse
am 8. Mai 2019
Karsten Sitterberg stellte auf der Jax 2019 in Mainz in seinem Vortrag "Effektives Testen von Browseranwendungen" Technologien und Frameworks vor.
Der Überblick wurde dabei durch Tipps und Best-Practices für die Erstellung von wartbaren Tests ergänzt.
Geschrieben von Thomas Kruse
am 8. Mai 2019
Frontend Architektur im Kontext von Microservices behandelt Thomas Kruse in seinem Vortrag auf der Jax 2019.
Der Vortrag zeigt die speziellen Herausforderungen, die sich aus einer guten Benutzbarkeit von Frontends für Microservices, ergeben.
Für den Vortrag wurden die Erfahrungen aus verschiedenen Projekten in einem zeitlichen und technologischen Kontext eingeordnet und liefern damit Entscheidungshilfen für Architekten, die sich mit dem Thema Frontend im Microservice Kontext befassen.
Dank aktueller Entwicklungen eignen sich inzwischen Webcomponents für bestimmte Aufgabenstellungen und wurden mit einem Beispiel auf Basis von Angular Elements praktisch demonstriert.
Geschrieben von Thomas Kruse
am 21. März 2019
Bei der Java User Group Münster stellte Karsten Sitterberg Technologien und Frameworks zum Testen von Browser-Anwendungen vor.
Der Überblick wurde dabei durch Tipps und Best-Practices für die Erstellung von wartbaren Tests ergänzt.
Geschrieben von Thomas Kruse
am 20. März 2019
Auf der "JavaLand" Konferenz in Brühl präsentierte Thomas Kruse Architekturvarianten für Microservices.
Für den Vortrag wurden die Erfahrungen aus verschiedenen Projekten in einem zeitlichen und technologischen Kontext eingeordnet und liefern damit Entscheidungshilfen für Architekten, die sich mit dem Thema Frontend im Microservice Kontext befassen.
Dank aktueller Entwicklungen eignen sich inzwischen Webcomponents für bestimmte Aufgabenstellungen und wurden mit einem Beispiel auf Basis von Angular Elements praktisch demonstriert.
Geschrieben von Thomas Kruse
am 19. Dezember 2018
gRPC hat bisher vor allem im Backend oder bei der direkten Kommunikation zwischen Anwendungen auf dem Endgrät und dem Backend eine Rolle gespielt.
Aufgrund der zunehmenden Rolle von Browseranwendungen sollte gRPC auch in clientseitigen Webanwendungen genutzt werden können.
Das zugehörige Projekt ist gRPC-Web: https://github.com/grpc/grpc-web
In diesem Beitrag wurde die Erstellung eines Spring Boot gRPC Backends demonstriert.
Nun get es darum, das Backend in einer Angular Webanwendung mit gRPC-Web anzubinden.
Geschrieben von Thomas Kruse
am 7. Dezember 2018
In verteilten Systemen, zu denen etwa solche mit Microservice- und Cloud-Architekturen zählen, müssen in der Regel über Anwendungsgrenzen hinweg Funktionsaufrufe erfolgen.
Typischerweise kommt dabei für synchrone Aufrufe HTTP als Transportschicht zum Einsatz, das Format der ausgetauschten Daten kann XML, JSON oder eine andere spezifische Datenstruktur sein.
Welche HTTP-Verben und welche Adressen (URLs) wie zu verwenden sind, ist dabei eine fast schon in philosophische Bereiche ausufernde Debatte zwischen den verschiedenen Ansätzen.
Am häufigsten finden sich REST und Abwandlungen davon als Schnittstellenkonzept.
Im Gegensatz zu der reichhaltigen API-Oberfläche von REST findet sich SOAP als XML-basiertes RPC- (Remote-Procedure-Call-) Verfahren, bei dem lediglich HTTP POST-Requests zum Einsatz kommen.
Neben dem oft als schwerfällig bezeichneten Vorgehen von Design und Implementierung von SOAP-Schnittstellen hat XML als Transportformat auch deutliche Auswirkungen auf möglichen Durchsatz und erforderliche CPU- und Speicherresourcen bei der Verarbeitung.
Als Alternative zu diesen Ansätzen hat Google gRPC entwickelt:
gRPC setzt ebenfalls auf HTTP auf, verwendet jedoch Google Protocol Buffers als optimiertes Datenformat.
Wie der Einsatz im Kontext einer Java-Spring-Boot-Anwendung aussehen kann, wird im Folgenden dargestellt.
Geschrieben von Thomas Kruse
am 3. Oktober 2018
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.
Geschrieben von Thomas Kruse
am 13. März 2018
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.