- Replaced outdated `.puml` and `.mermaid` diagrams with modernized `.drawio` versions for enhanced clarity. - Added `container_diagram.drawio` to depict offline-first architecture and backend synchronization workflow. - Introduced `workflow_turnieranlage.drawio` to visualize the tournament creation process (3-step wizard). - Archived legacy diagrams under `docs/01_Architecture/_archive` for reference.
76 lines
4.5 KiB
Plaintext
76 lines
4.5 KiB
Plaintext
@startuml C4_Container
|
|
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml
|
|
|
|
title Container-Diagramm für Meldestelle
|
|
|
|
Person(eventOrganizer, "Veranstaltungsorganisator", "Organisiert und verwaltet Reitsportveranstaltungen")
|
|
Person(administrator, "Administrator", "Verwaltet Systemkonfiguration und Stammdaten")
|
|
Person(member, "Mitglied", "Meldet sich für Veranstaltungen an und verwaltet persönliche Informationen")
|
|
Person(horseOwner, "Pferdebesitzer", "Registriert und verwaltet Pferdeinformationen")
|
|
|
|
System_Boundary(meldestelle, "Meldestelle") {
|
|
Container(desktopApp, "Desktop-Anwendung", "Kotlin, Compose Multiplatform", "Bietet eine umfangreiche Benutzeroberfläche für Administratoren und Veranstaltungsorganisatoren")
|
|
Container(webApp, "Web-Anwendung", "Kotlin, Compose Multiplatform", "Bietet eine Weboberfläche für Mitglieder und Pferdebesitzer")
|
|
|
|
Container(apiGateway, "API-Gateway", "Kotlin, Spring Cloud Gateway", "Leitet Anfragen an entsprechende Dienste weiter, verwaltet Authentifizierung und Autorisierung")
|
|
|
|
Container(masterdataService, "Stammdaten-Dienst", "Kotlin, Spring Boot", "Verwaltet Stammdaten wie Standorte, Disziplinen usw.")
|
|
Container(membersService, "Mitglieder-Dienst", "Kotlin, Spring Boot", "Verwaltet Mitgliederregistrierung und -profile")
|
|
Container(horsesService, "Pferde-Dienst", "Kotlin, Spring Boot", "Verwaltet Pferderegistrierung und -informationen")
|
|
Container(eventsService, "Veranstaltungs-Dienst", "Kotlin, Spring Boot", "Verwaltet Veranstaltungserstellung, -planung und -anmeldungen")
|
|
|
|
ContainerDb(postgresql, "PostgreSQL", "Datenbank", "Speichert alle persistenten Daten")
|
|
ContainerDb(redis, "Redis", "Cache", "Bietet Caching für häufig abgerufene Daten")
|
|
Container(kafka, "Kafka", "Message Broker", "Verarbeitet ereignisgesteuerte Kommunikation zwischen Diensten")
|
|
Container(keycloak, "Keycloak", "Authentifizierungsserver", "Verwaltet Benutzerauthentifizierung und -autorisierung")
|
|
|
|
Container(monitoring, "Monitoring", "Prometheus, Grafana, Zipkin", "Bietet Überwachung, Metriken und verteiltes Tracing")
|
|
}
|
|
|
|
System_Ext(paymentProvider, "Zahlungsanbieter", "Verarbeitet Zahlungen für Veranstaltungsanmeldungen")
|
|
System_Ext(emailSystem, "E-Mail-System", "Sendet Benachrichtigungen und Bestätigungen")
|
|
System_Ext(federationSystem, "Reitsportverband-System", "Bietet Validierung von Mitgliedschaften und Pferden")
|
|
|
|
Rel(eventOrganizer, desktopApp, "Verwendet")
|
|
Rel(administrator, desktopApp, "Verwendet")
|
|
Rel(member, webApp, "Verwendet")
|
|
Rel(horseOwner, webApp, "Verwendet")
|
|
|
|
Rel(desktopApp, apiGateway, "Stellt API-Aufrufe an", "HTTPS/JSON")
|
|
Rel(webApp, apiGateway, "Stellt API-Aufrufe an", "HTTPS/JSON")
|
|
|
|
Rel(apiGateway, masterdataService, "Leitet Anfragen weiter an", "HTTPS/JSON")
|
|
Rel(apiGateway, membersService, "Leitet Anfragen weiter an", "HTTPS/JSON")
|
|
Rel(apiGateway, horsesService, "Leitet Anfragen weiter an", "HTTPS/JSON")
|
|
Rel(apiGateway, eventsService, "Leitet Anfragen weiter an", "HTTPS/JSON")
|
|
Rel(apiGateway, keycloak, "Authentifiziert mit", "HTTPS/JSON")
|
|
|
|
Rel(masterdataService, postgresql, "Liest von und schreibt in")
|
|
Rel(membersService, postgresql, "Liest von und schreibt in")
|
|
Rel(horsesService, postgresql, "Liest von und schreibt in")
|
|
Rel(eventsService, postgresql, "Liest von und schreibt in")
|
|
|
|
Rel(masterdataService, redis, "Speichert Daten im Cache")
|
|
Rel(membersService, redis, "Speichert Daten im Cache")
|
|
Rel(horsesService, redis, "Speichert Daten im Cache")
|
|
Rel(eventsService, redis, "Speichert Daten im Cache")
|
|
|
|
Rel(masterdataService, kafka, "Veröffentlicht und abonniert Ereignisse")
|
|
Rel(membersService, kafka, "Veröffentlicht und abonniert Ereignisse")
|
|
Rel(horsesService, kafka, "Veröffentlicht und abonniert Ereignisse")
|
|
Rel(eventsService, kafka, "Veröffentlicht und abonniert Ereignisse")
|
|
|
|
Rel(masterdataService, monitoring, "Sendet Metriken und Traces an")
|
|
Rel(membersService, monitoring, "Sendet Metriken und Traces an")
|
|
Rel(horsesService, monitoring, "Sendet Metriken und Traces an")
|
|
Rel(eventsService, monitoring, "Sendet Metriken und Traces an")
|
|
Rel(apiGateway, monitoring, "Sendet Metriken und Traces an")
|
|
|
|
Rel(eventsService, paymentProvider, "Verarbeitet Zahlungen über", "HTTPS/JSON")
|
|
Rel(membersService, emailSystem, "Sendet Benachrichtigungen über", "SMTP")
|
|
Rel(eventsService, emailSystem, "Sendet Benachrichtigungen über", "SMTP")
|
|
Rel(membersService, federationSystem, "Validiert Mitgliedschaften mit", "HTTPS/JSON")
|
|
Rel(horsesService, federationSystem, "Validiert Pferde mit", "HTTPS/JSON")
|
|
|
|
@enduml
|