meldestelle/docs/c4/03-component-events-service-de.puml
StefanMoCoAt 14770003bd chore(MP-30): final docs cleanup, adr consolidation & legacy removal
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
2025-12-08 18:04:44 +01:00

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