9282dd0eb4
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
64 lines
3.4 KiB
Plaintext
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
|