Summary - **Documentation Cleanup:** - ADRs consolidated to `docs/adr/`. - C4 diagrams moved to `docs/c4/`. - Removed legacy folder `docs/architecture/` and `docs/clients/`. - **New ADR:** Added `0009-final-kmp-architecture.md` (Accepted). - **Updates:** - `ARCHITECTURE.md` updated with final folder structure (Core Modules). - `README.md` links fixed. - **Verification:** - `./gradlew staticAnalysis` -> SUCCESS. - Path references checked. Ref: MP-30
64 lines
3.8 KiB
Plaintext
64 lines
3.8 KiB
Plaintext
@startuml C4_Component
|
|
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Component.puml
|
|
|
|
title Komponenten-Diagramm für Veranstaltungs-Dienst
|
|
|
|
Container_Boundary(apiGateway, "API-Gateway") {
|
|
Component(apiGatewayRouting, "Routing-Komponente", "Ktor Routing", "Leitet Anfragen an entsprechende Dienste weiter")
|
|
Component(apiGatewayAuth, "Authentifizierungs-Komponente", "Ktor Auth", "Verwaltet Authentifizierung und Autorisierung")
|
|
}
|
|
|
|
Container_Boundary(eventsService, "Veranstaltungs-Dienst") {
|
|
Component(eventsApi, "Veranstaltungs-API", "Kotlin, Spring Web", "Definiert die REST-API-Endpunkte für die Veranstaltungsverwaltung")
|
|
|
|
Component(eventsApplication, "Veranstaltungs-Anwendung", "Kotlin, Spring", "Enthält Anwendungsdienste und Anwendungsfälle")
|
|
Component(eventCommandHandlers, "Veranstaltungs-Befehlshandler", "Kotlin", "Verarbeitet Befehle zum Erstellen und Ändern von Veranstaltungen")
|
|
Component(eventQueryHandlers, "Veranstaltungs-Abfragehandler", "Kotlin", "Verarbeitet Abfragen zum Abrufen von Veranstaltungsinformationen")
|
|
|
|
Component(eventsDomain, "Veranstaltungs-Domäne", "Kotlin", "Enthält Domänenmodelle und Geschäftslogik")
|
|
Component(eventAggregate, "Veranstaltungs-Aggregat", "Kotlin", "Kern-Domänenentität, die eine Veranstaltung repräsentiert")
|
|
Component(participantAggregate, "Teilnehmer-Aggregat", "Kotlin", "Kern-Domänenentität, die einen Teilnehmer repräsentiert")
|
|
Component(eventDomainServices, "Veranstaltungs-Domänendienste", "Kotlin", "Domänendienste für komplexe Geschäftslogik")
|
|
|
|
Component(eventsInfrastructure, "Veranstaltungs-Infrastruktur", "Kotlin, Spring Data", "Enthält Infrastrukturimplementierungen")
|
|
Component(eventRepository, "Veranstaltungs-Repository", "Kotlin, Spring Data JPA", "Speichert und ruft Veranstaltungsdaten ab")
|
|
Component(eventMessagePublisher, "Veranstaltungs-Nachrichtenveröffentlicher", "Kotlin, Spring Kafka", "Veröffentlicht Domänenereignisse an Kafka")
|
|
Component(externalServiceClients, "Externe Dienst-Clients", "Kotlin, WebClient", "Clients für externe Dienste")
|
|
}
|
|
|
|
ContainerDb(postgresql, "PostgreSQL", "Datenbank", "Speichert alle persistenten Daten")
|
|
Container(kafka, "Kafka", "Message Broker", "Verarbeitet ereignisgesteuerte Kommunikation zwischen Diensten")
|
|
Container(redis, "Redis", "Cache", "Bietet Caching für häufig abgerufene Daten")
|
|
|
|
System_Ext(paymentProvider, "Zahlungsanbieter", "Verarbeitet Zahlungen für Veranstaltungsanmeldungen")
|
|
System_Ext(emailSystem, "E-Mail-System", "Sendet Benachrichtigungen und Bestätigungen")
|
|
|
|
Rel(apiGatewayRouting, eventsApi, "Leitet Anfragen weiter an", "HTTPS/JSON")
|
|
Rel(apiGatewayAuth, eventsApi, "Stellt Authentifizierungskontext bereit für")
|
|
|
|
Rel(eventsApi, eventsApplication, "Verwendet")
|
|
Rel(eventsApplication, eventCommandHandlers, "Verwendet")
|
|
Rel(eventsApplication, eventQueryHandlers, "Verwendet")
|
|
|
|
Rel(eventCommandHandlers, eventsDomain, "Verwendet")
|
|
Rel(eventQueryHandlers, eventsDomain, "Verwendet")
|
|
Rel(eventCommandHandlers, eventsInfrastructure, "Verwendet")
|
|
Rel(eventQueryHandlers, eventsInfrastructure, "Verwendet")
|
|
|
|
Rel(eventsDomain, eventAggregate, "Enthält")
|
|
Rel(eventsDomain, participantAggregate, "Enthält")
|
|
Rel(eventsDomain, eventDomainServices, "Enthält")
|
|
|
|
Rel(eventsInfrastructure, eventRepository, "Enthält")
|
|
Rel(eventsInfrastructure, eventMessagePublisher, "Enthält")
|
|
Rel(eventsInfrastructure, externalServiceClients, "Enthält")
|
|
|
|
Rel(eventRepository, postgresql, "Liest von und schreibt in")
|
|
Rel(eventMessagePublisher, kafka, "Veröffentlicht Nachrichten an")
|
|
Rel(eventQueryHandlers, redis, "Speichert Ergebnisse im Cache")
|
|
|
|
Rel(externalServiceClients, paymentProvider, "Stellt API-Aufrufe an", "HTTPS/JSON")
|
|
Rel(externalServiceClients, emailSystem, "Sendet E-Mails über", "SMTP")
|
|
|
|
@enduml
|