d12g

Blog von Daniel Grewing

Pattern für Microservice-Architekturen

7. Juni 2015 Softwareentwicklung

Arun Gupta beschreibt in seinem Beitrag Microservice Design Patterns sechs verschiedene Pattern zum Aufbau einer Microservice Architektur. Verschiedene Ansätze zu kennen und vergleichen zu können ist sehr hilfreich, wenn man überlegt diesen Architekturstil anzuwenden. Er unterscheidet dabei auch, ob ein Projekt auf “der grünen Wiese” geplant werden kann oder ob eine bestehende monolithische Anwendung in Microservices zerlegt werden soll.

Aggregator Microservice Design Pattern
Dieser Ansatz wird als der gängigste beschrieben. In einen einfachem Beispiel greift eine Webseite (Aggregator) auf REST-Services zu, sammelt die erforderlichen Daten mit Hilfe der Komponenten zusammen und stellt diese anschließend dar. Eine erweiterte Form wäre, wenn selbst der Aggregator keine Benutzerschnittstelle implementiert hätte, sondern die Daten über REST-Services einliest, sie mit einer Businesslogik verarbeitet und dann selbst als REST-Service zur Verfügung stellt.

Proxy Microservice Design Pattern
Der Proxy ist eine Variation des Aggregator Pattern. Anstatt die Daten selber zu sammeln, werden die Anfragen an verschiedene Microservices weitergeleitet und dort verarbeitet. Gupta unterscheidet nach dem dumb proxy, der nur weiterleitet, und dem smart proxy, der ebenfalls einfache Business Logik verarbeitet.

Chained Microservice Design Pattern
Eine weitere Variante ist die Verknüpfung von Microservices in einer Kette, welche die requests vom Client von Service zu Service weiterleitet und die responses wieder in dieser Kette zurückgeleitet werden. Der Client ist solange geblockt bis die Kette komplett durchgearbeitet wurde. Welche Blockmechanismen die Services untereinander einsetzen spielt keine Rolle.

Branch Microservice Design Pattern
Dieses Pattern erweitert den Aggregator Ansatz um das Chained Microservice Design Pattern. Dabei kann der Aggregator verschiedene chains-Services synchron aufrufen.

Shared Data Microservices Design Pattern
Ein Prinzip beim Einsatz von Microservices ist, dass alle Schichten einer Anwendung von einer Komponente implementiert werden. Dieses Pattern ist eine Lösung dafür, dass eine monolithische Anwendung, die auf eine SQL-Datenbank zugreift, nicht einfach in unterschiedliche Komponenten zerlegt werden kann und alle ihre eigene Persistenzschicht mitführen. Der Ansatz beschreibt, wie Microservices auf eine Datenquelle zugreifen und diese als Datenschnittstelle fungiert. Dabei erhöht man zwar die Kopplung der Komponenten, man hat aber einen Schritt weg von der monolithischen Architektur erreicht.

Asynchronouse Messaging Microservice Design Pattern
Dieses Pattern beschreibt wie Microservices nicht über REST-Services kommunizieren, sondern über eine Message Queue, die asynchron Daten verteilt. Gupta verweißt bei diesem Pattern noch auf den Artikel Coupling Versus Autonomy Microservices.

Amazing Pattern Library

3. Mai 2015 Allgemein, Webdesign

Für Grafik- oder Webprojekte braucht man öfters mal Muster für Hintergründe. Diese Pattern gibt es im Netz wie Sand am Meer. An vernünftige und zugleich kostenlose zu kommen ist aber gar nicht so einfach. Gute Pattern zeichnen sich vor allem dadurch aus, dass sie als Bilddatei klein sind und zusammengesetzt als Muster großflächig gut wirken.
Vor kurzem bin ich auf das Pattern-Projekt von Tim Holmann und Claudio Guglieri gestossen. Auf ihrer Webseite “The Amazing Pattern Library” pflegen sie eine kleine, aber hochwertige Auswahl von Pattern.

Das Ziel ihres Projekts ist:

THIS ON GOING PROJECT COMPILES PATTERNS SHARED BY
THE MOST TALENTED DESIGNERS OUT THERE FOR YOU
TO USE FREELY IN YOUR DESIGNS.

Ein Blick auf die Webseite lohnt sich. Ich finde die Patternsammlung sehr sehenswert und denke, dass einige der Patterns gut für Webprojekte funktionieren.