28.7.2021 |

Notizen zum Webinar "Moderne Web- und Cloud-Architektur"

Als Teil der Techlounge Summer Edition fand am 28.07.2021 das Webinar Moderne Web- und Cloud-Architektur mit Golo Roden und Noah Hummel statt.

Hier sind ein paar Notizen zum Webinar.

Was sind Micro-Services?

Es geht um eine verteilte Architektur. Verschiedene, isolierte Teile kommunizieren über Prozessgrenzen hinweg, bzw. sogar auch über Netzwerkanfragen hinweg.

Teilbereiche der Anwendung werden fachlich geschnitten (als "Services").

Man versucht, Kopplung zu vermeiden. Zudem kann man auch horizontal skalieren.

Üblicherweise sind Deployment und Integration automatisiert (CI/CD).

Vorteile sind auch, dass man unterschiedliche Technologien und Frameworks nutzen kann.
Z.B. kann man einen Messagebroker-Service mit Erlang bauen, aber andere Teile mit einer anderen Technologie.

Micro-Service-Architektur lohnt sich für Systeme, wo die Last stark steigen oder sinken kann ("Unstetigkeit"), welche aber auch immer on-demand sein soll, oder Systeme, wo ich erwarte, dass sie an viele Endnutzer ausliefern.

Container sind nur Hilfsmittel. Es heißt auch nicht, dass man alles in möglichst in kleine Container packen muss.

Micro-Service ist ein Teil des Systems, welches eine einzige fachliche Verantwortlichkeit hat.

Die Komplexität verlagert sich vom einzelnen Service zu den Verbindungen und der Kommunikation über Prozesse hinweg.

In den letzten Jahren ist diese Architektur attraktiver geworden, da inzwischen die Infrastruktur als SaaS angeboten wird (Kubernetes-Cluster, etc.).

Wie groß darf ein Micro-Service sein?

Ein Micro-Service soll eine Aufgabe aus fachlicher Sicht darstellen, kann aber natürlich verschiedene Funktionen und API-Routen enthalten.

Es macht oft Sinn, anhand von Teams zu modellieren.

Ich möchte garantieren, dass Änderungen fachlich an der richtigen Stelle getroffen werden können, ohne andere Teile anfassen zu müssen.

Der Mikro-Service sollte in sich isoliert sein und sollte über definierte Schnittstellen verfügbar sein.

The Twelve Factor App

Die Leitlinien der Twelve Factor App sind eine gute Grundlage für eine Micro-Service-Architektur.

Ein Service muss größtenteils zustandslos sein, so dass die Skalierbarkeit gewährt ist. Er selbst darf keine persistenten Daten (im Arbeitsspeicher) halten. Daten müssen über Datenbanken wiederherstellbar sein.
Das führt dazu, dass ich in Anfragen Daten mitschicken muss (z.B. via Json Web Token im Gegensatz zu "stateful" Cookies).

Cross-Cutting Concerns

"Cross-cutting concerns" sind Themen, die immer wieder auftreten, z.B. Authentifizierung, Authorisierung, Logging. Da lohnt es sich, auch solche Dinge auszulagern, da man sie nicht in jeden Dienst einbauen möchte.

Man muss sich auf ein gemeinsames Interface einigen.

Konfiguration

Konfiguration wird über Umgebungsvariablen geregelt oder bei Kubernetes z.B. über etcd.

Kommunikationsmuster

Man hat eigentlich immer mit Netzwerkverbindungen zu tun, aber die Muster sind auch auf andere Prozesse anwendbar.

"Push- oder Pullmodell": Holt der Konsument sich die Daten, oder liefert der Produzent die Daten aus?

Kommuniziere ich direkt über die Services oder gehe ich über einen Message-Broker oder eine Message-Queue?

An wie viele Empfänger sende ich ("Uni-cast/Multi-cast")?

Man sollte sich Gedanken über das Datenschema, welches zum Austausch benutzt, machen. Man kann auch ausgehende Daten validieren, nicht nur eingehende Daten. Beispiel: eine gemeinsame Bibliothek, welches das Datenformat festlegt.

Konzept "parse, don't validate": Beim Erzeugen von Daten garantieren, dass beim Transformieren bereits korrekte Daten erzeugt werden.

Map-Reduce

Fragen zur Kommunikation:

  • Echtzeitanforderung (wie schnell müssen Daten verabeitet werden)?
  • Performance (im iot-Bereich macht es evtl. Sinn, dass der Konsument die Datenauslieferung bestimmt)
  • Backpressure: wieviele Daten produziere ich und wie viele kann ich verarbeiten?

Resourcen

Zur Übersicht
Sophia Brandt

Mehr vom Devsquad...

Patrick Schaper

Java 16 - was ist neu? was ist anders?

Rahmi Tufanoglu

MVVM

Hallo

Wir sind für Sie da und freuen uns auf Ihre Fragen oder Ihr Feedback.