Files
meldestelle/docs/architecture/c4/03-component-events-service.puml
T
stefan 9282dd0eb4 refactor: Migrate from monolithic to modular architecture
1. **Dokumentation der Architektur:**
    - Vervollständigen Sie die C4-Diagramme im docs-Verzeichnis
    - Dokumentieren Sie die wichtigsten Architekturentscheidungen in ADRs

2. **Redis-Integration finalisieren:**
    - Implementieren Sie die verteilte Cache-Lösung für die Offline-Fähigkeit
    - Nutzen Sie Redis Streams für das Event-Sourcing
2025-07-23 14:29:40 +02:00

64 lines
3.4 KiB
Plaintext

@startuml C4_Component
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Component.puml
title Component diagram for Events Service
Container_Boundary(apiGateway, "API Gateway") {
Component(apiGatewayRouting, "Routing Component", "Ktor Routing", "Routes requests to appropriate services")
Component(apiGatewayAuth, "Authentication Component", "Ktor Auth", "Handles authentication and authorization")
}
Container_Boundary(eventsService, "Events Service") {
Component(eventsApi, "Events API", "Kotlin, Spring Web", "Defines the REST API endpoints for event management")
Component(eventsApplication, "Events Application", "Kotlin, Spring", "Contains application services and use cases")
Component(eventCommandHandlers, "Event Command Handlers", "Kotlin", "Handles commands for creating and modifying events")
Component(eventQueryHandlers, "Event Query Handlers", "Kotlin", "Handles queries for retrieving event information")
Component(eventsDomain, "Events Domain", "Kotlin", "Contains domain models and business logic")
Component(eventAggregate, "Event Aggregate", "Kotlin", "Core domain entity representing an event")
Component(participantAggregate, "Participant Aggregate", "Kotlin", "Core domain entity representing a participant")
Component(eventDomainServices, "Event Domain Services", "Kotlin", "Domain services for complex business logic")
Component(eventsInfrastructure, "Events Infrastructure", "Kotlin, Spring Data", "Contains infrastructure implementations")
Component(eventRepository, "Event Repository", "Kotlin, Spring Data JPA", "Persists and retrieves event data")
Component(eventMessagePublisher, "Event Message Publisher", "Kotlin, Spring Kafka", "Publishes domain events to Kafka")
Component(externalServiceClients, "External Service Clients", "Kotlin, WebClient", "Clients for external services")
}
ContainerDb(postgresql, "PostgreSQL", "Database", "Stores all persistent data")
Container(kafka, "Kafka", "Message Broker", "Handles event-driven communication between services")
Container(redis, "Redis", "Cache", "Provides caching for frequently accessed data")
System_Ext(paymentProvider, "Payment Provider", "Processes payments for event registrations")
System_Ext(emailSystem, "Email System", "Sends notifications and confirmations")
Rel(apiGatewayRouting, eventsApi, "Routes requests to", "HTTPS/JSON")
Rel(apiGatewayAuth, eventsApi, "Provides authentication context to")
Rel(eventsApi, eventsApplication, "Uses")
Rel(eventsApplication, eventCommandHandlers, "Uses")
Rel(eventsApplication, eventQueryHandlers, "Uses")
Rel(eventCommandHandlers, eventsDomain, "Uses")
Rel(eventQueryHandlers, eventsDomain, "Uses")
Rel(eventCommandHandlers, eventsInfrastructure, "Uses")
Rel(eventQueryHandlers, eventsInfrastructure, "Uses")
Rel(eventsDomain, eventAggregate, "Contains")
Rel(eventsDomain, participantAggregate, "Contains")
Rel(eventsDomain, eventDomainServices, "Contains")
Rel(eventsInfrastructure, eventRepository, "Contains")
Rel(eventsInfrastructure, eventMessagePublisher, "Contains")
Rel(eventsInfrastructure, externalServiceClients, "Contains")
Rel(eventRepository, postgresql, "Reads from and writes to")
Rel(eventMessagePublisher, kafka, "Publishes messages to")
Rel(eventQueryHandlers, redis, "Caches results in")
Rel(externalServiceClients, paymentProvider, "Makes API calls to", "HTTPS/JSON")
Rel(externalServiceClients, emailSystem, "Sends emails via", "SMTP")
@enduml