Verteilte Architekturen

Nachhaltige Softwareentwicklung

Photo of a loaded container ship driving through a river to illustrate distributed software architecture.

Skalierbarkeit, Ausfallsicherheit, Kosteneffizienz, geringe Latenz… die Anforderungen an moderne Software sind vielfältig und zusammen mit dem Einsatz von Cloud-Infrastrukturen ergeben sich neue Herausforderungen. Eine gute Software-Architektur schafft die Basis, um diesen Anforderungen gerecht zu werden.

Die Microservice-Architektur hilft dabei Backend-Services unabhängig voneinander je nach Bedarf skalieren zu können und die Wirtschaftlichkeit der Software bei schwankendem Bedarf sicherzustellen. Zudem können Services unabhängig voneinander bereitgestellt werden, was häufigere und schnellere Releases ermöglicht. Des Weiteren können Teams unabhängig voneinander an verschiedenen Teilen der Anwendung entwickeln.

Eine verteilte Softwarearchitektur steht allerdings vor diversen Herausforderungen, die gemeistert werden müssen:

  • Integrität der Daten
  • Authentifizierung, Autorisierung und Session-Handling
  • Loggen von Ereignissen oder Fehlern
  • Kommunikation und Austausch zu anderen Systemen und Services

In meiner Entwicklungslaufbahn habe ich mich mit diesen Themen auseinandergesetzt. Besonderes Augenmerk lag dabei unter anderem auf der Implementierung von Geschäftsprozessen über Enterprise-Services-Bus-Systeme, die die Kommunikation zwischen mehreren Systemen ermöglichen. Mit Hilfe der ereignisorientierten Architektur lassen sich so Prozesse implementieren, die flexibel auf die aktuelle Skalierung und Ausfälle von Systemen reagieren und sich nach Behebung der Fehler erneut anstoßen lassen.

Das Tracken und Loggen von Ereignissen gibt einen Einblick, was in der Software genutzt wird und wo es zu Problemen kommt. Hier habe ich in den letzten Jahren vor allem Application Insights verwendet, welches sich einfach in .NET integrieren lässt.

Eine sichere Autorisierung ist heutzutage ein Grundbaustein vieler Applikationen. Im Web-Bereich wird hier vor allem auf das OAuth-Protokoll gesetzt. Dazu habe ich bisher vor allem mit der Microsoft Lösung „Azure AD B2C“ gearbeitet. Dabei handelt es sich um eine Customer Identity Access Management Lösung ist, die den entwickelten Anwendungen die Authentifizierung der Endnutzer abnimmt. Neben einem eigenen User Store können auch Drittanbietersysteme, wie beispielsweise Google, Microsoft oder Facebook angebunden werden, um die Registrierung und den Login der Nutzer so einfach, wie möglich zu gestalten.

Sie benötigen Unterstützung bei der Implementierung verteilter Softwarearchitekturen?