Im heutigen Beitrag tauchen wir in die Microservices-Architektur ein, die das Rückgrat unseres Bilanzkreismanagement-Systems bildet. Um eine skalierbare, flexible und effiziente Lösung zu entwickeln, setzt das System auf eine Microservices-Struktur, bei der einzelne Services klar abgegrenzte Aufgaben übernehmen. Diese Architektur ermöglicht es, jede Funktionalität modular und unabhängig voneinander zu entwickeln und bei Bedarf anzupassen oder zu skalieren.

Hier sind die zentralen Services, die in unserem System eingesetzt werden, und deren jeweilige Aufgaben:


1. API Gateway Service

Das API Gateway bildet die zentrale Schnittstelle für alle REST-API-Anfragen. Es ist der erste Anlaufpunkt, wenn ein Client eine Verbindung zum System herstellt, und übernimmt verschiedene wichtige Aufgaben:

  • Routing und Load Balancing: Das Gateway verteilt die eingehenden Anfragen effizient an die richtigen Microservices und sorgt so für eine gleichmäßige Lastverteilung und Verfügbarkeit.
  • API-Dokumentation (Swagger/OpenAPI): Durch die Integration von Swagger oder OpenAPI wird die API für Entwickler übersichtlich dokumentiert, sodass alle Schnittstellen leicht nachvollziehbar sind.
  • Rate Limiting: Um das System vor Überlastung zu schützen, reguliert das API Gateway die Zugriffshäufigkeit pro Benutzer und stellt so die Systemstabilität sicher.

2. Core Services

Unsere Kern-Services enthalten die wichtigsten Funktionen des Bilanzkreismanagements, wie die Verwaltung der Bilanzen, Transaktionen und Abrechnungen.

a) Balance Group Service

Der Balance Group Service ist für die Verwaltung der Bilanzkreise verantwortlich und bietet die zentrale Funktionalität des Systems:

  • Verwaltung von Bilanzkreisen: Hier können Bilanzkreise erstellt, bearbeitet und gelöscht werden.
  • CRUD-Operationen für Bilanzkreise: Die gängigen „Create, Read, Update, Delete“-Operationen (CRUD) sind implementiert, um eine vollständige Verwaltung der Bilanzen zu ermöglichen.
  • Statusverwaltung (provisional/final): Jede Bilanz hat einen Status, der anzeigt, ob sie vorläufig oder endgültig ist. Dieser Status wird automatisch aktualisiert, sobald alle zugehörigen Transaktionen finalisiert sind.
  • Hierarchieverwaltung: Die Hierarchiestruktur stellt sicher, dass Bilanzen z. B. einem übergeordneten Bilanzkreis zugeordnet und dort abgeglichen werden können.

b) Transaction Service

Der Transaction Service verwaltet alle Transaktionen, die Energiemengen zwischen Quellen und Verbrauchern abbilden. Er unterstützt ebenfalls die Funktionen zur Aufteilung und Statusverwaltung.

  • Verwaltung von Transaktionen: Der Service ist für das Erstellen, Bearbeiten und Löschen von Transaktionen zuständig.
  • CRUD-Operationen für Transaktionen: Die Transaktionen können nach den gängigen CRUD-Operationen bearbeitet werden.
  • 15-Minuten-Intervall-Aufteilung: Sollte eine Transaktion länger als 15 Minuten dauern, wird die Energiemenge automatisch in kleinere Intervalle aufgeteilt.
  • Statusverwaltung (provisional/final): Jede Transaktion hat einen Status, der entweder „vorläufig“ oder „endgültig“ sein kann. Nur vorläufige Transaktionen können noch geändert werden.

c) Settlement Service

Der Settlement Service ist für die Berechnung und Erstellung der Ausgleichsbuchungen zwischen den Bilanzkreisen zuständig. Seine Hauptaufgaben umfassen:

  • Automatische Ausgleichsberechnung: Der Service errechnet automatisch den Ausgleich für jede Bilanz, sodass der Stromfluss zwischen den Bilanzen ausgeglichen ist.
  • Erstellung von Ausgleichstransaktionen: Sobald eine Bilanz finalisiert wird, erstellt der Settlement Service die nötigen Ausgleichstransaktionen.
  • Bilanzkreis-Saldenberechnung: Der Service hält die Salden für jeden Bilanzkreis aktuell und prüft, ob alle Energiemengen korrekt abgebildet sind.
  • Konsistenzprüfung: Eine integrierte Konsistenzprüfung stellt sicher, dass keine doppelten oder fehlerhaften Buchungen in die Bilanz eingehen.

3. Support Services

Zusätzlich zu den Kern-Services bietet das System mehrere Support-Services, die unterstützende Funktionen übernehmen. Diese Services stellen sicher, dass das System sicher, konsistent und zuverlässig läuft.

a) Validation Service

Der Validation Service ist für die Validierung und Geschäftsregelprüfung zuständig, sodass fehlerhafte oder unvollständige Eingaben vermieden werden:

  • Validierung aller Eingaben: Alle Nutzereingaben und API-Anfragen werden durch den Service geprüft, um sicherzustellen, dass sie die geltenden Anforderungen erfüllen.
  • Geschäftsregelprüfung: Der Service überprüft, ob die Transaktionen und Bilanzen den definierten Regeln entsprechen, bevor sie gespeichert werden.
  • Konsistenzprüfung der Daten: Durch regelmäßige Konsistenzchecks wird sichergestellt, dass alle gespeicherten Daten im System korrekt und stimmig sind.

b) Auth Service

Der Auth Service übernimmt die Authentifizierung und Autorisierung der Nutzer. Er stellt sicher, dass nur berechtigte Personen auf die Daten zugreifen können.

  • Authentifizierung: Der Service prüft die Identität der Nutzer, bevor sie auf das System zugreifen können.
  • Autorisierung: Abhängig von der Nutzerrolle wird gesteuert, welche Bereiche und Funktionen für den Nutzer zugänglich sind.
  • Rollenverwaltung: Der Service verwaltet die unterschiedlichen Rollen (z. B. Administratoren, Operatoren) und stellt sicher, dass jeder Nutzer nur die für ihn relevanten Berechtigungen hat.

c) Logging Service

Der Logging Service ist für die zentrale Protokollierung aller Systemereignisse zuständig. Er ermöglicht eine umfassende Nachvollziehbarkeit und Fehleranalyse.

  • Zentrale Protokollierung: Alle Anfragen, Transaktionen und Systemereignisse werden hier erfasst.
  • Audit Trail: Ein Audit Trail stellt sicher, dass alle Änderungen an Daten nachvollziehbar sind, was gerade in einem mandantenfähigen System essentiell ist.
  • Fehlerprotokollierung: Fehler und Ausnahmefälle werden detailliert protokolliert, was die Wartung und Fehlersuche vereinfacht.

Die Architektur im Überblick

Zusammengenommen bilden diese Services ein gut strukturiertes, vernetztes System für das Management von Bilanzkreisen. Die klare Trennung der Services macht das System flexibel und skalierbar, sodass es bei Bedarf um weitere Funktionen erweitert werden kann.

Mehr bei stromhaltig: