-
Notifications
You must be signed in to change notification settings - Fork 46
/
Copy pathworkspace.dsl
97 lines (88 loc) · 5.08 KB
/
workspace.dsl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
workspace "AngularAndSpring" "This is a project to show crypto currency values and statistics. It imports the quotes from the exchanges and enables requesting the current order book." {
model {
user = person "User"
angularAndSpringSystem = softwareSystem "AngularAndSpring System" "System of multiple applications" {
kafka = container "Kafka Event System(Optional)" "Kafka provides the events between multiple deployed AngularAndSpring applications."
angularAndSpring = container "AngularAndSpring" "Multiple instances possible. Angular Frontend and Spring Boot Backend integrated." {
angularFrontend = component "Angular Frontend" "The SPA shows the quotes / charts / statistics / order books" tag "Browser"
backendCron = component "Scheduler" "Start the scheduled jobs." tag "Scheduler"
backendQuoteClients = component "Rest Clients" "The rest clients request the quotes from the exchanges."
backendPrepareDataJob = component "Prepare Data Job" "Aggrigates the quotes to hour / day values."
backendJwtTokenFilters = component "Jwt Token Filters" "Provide the security based on Jwt Tokens."
backendExchangeControllers = component "Exchange Controllers" "Provide the rest interface for the quote / order book requests"
backendUserController = component "User Controller" "Provides the rest interface for Login/Signin/Logout of the users."
backendStatisticsController = component "Statistics Controller" "Provides the interface for the statistics requests."
backendKafkaConsumer = component "Kafka Consumer" "Consume the Kafka events." tag "Consumer"
backendKafkaProducer = component "Kafka Producer" "Produce the Kafka events." tag "Consumer"
backendRepository = component "Repository" "MongoDb repository to read / write data"
backendEventMapper = component "Event Mapper" "Map the Kafka Events to Entities / Dtos."
backendExchangeServices = component "Exchange Services" "Services implementing the exchange logic."
backendUserService = component "User Service" "Service implementing the user / Kafka logic. "
backendStatisticsService = component "Statistics Service" "Service implementing the statistics logic."
}
database = container "MongoDb" "MongoDb stores all the data of the system." tag "Database"
}
cryptoCurrencyExchanges = softwareSystem "Crypto Currency Exchanges" "Multiple Exchanges"
# relationships people / software systems
user -> angularAndSpringSystem "views quotes / charts / statistics / order book"
angularAndSpringSystem -> cryptoCurrencyExchanges "import quotes / request order book"
# relationships containers
user -> angularAndSpring "views quotes / charts / statistics / order book"
angularAndSpring -> cryptoCurrencyExchanges "import quotes / request order book"
angularAndSpring -> kafka
kafka -> angularAndSpring
angularAndSpring -> database
# relationships components
angularFrontend -> backendExchangeControllers "rest requests"
angularFrontend -> backendUserController "rest requests"
angularFrontend -> backendStatisticsController "rest requests"
backendCron -> backendPrepareDataJob "trigger scheduled job"
backendCron -> backendQuoteClients "trigger scheduled job"
backendPrepareDataJob -> backendExchangeServices
backendQuoteClients -> backendExchangeServices
backendExchangeControllers -> backendJwtTokenFilters
backendUserController -> backendJwtTokenFilters
backendStatisticsController -> backendJwtTokenFilters
backendExchangeControllers -> backendExchangeServices
backendUserController -> backendUserService
backendStatisticsController -> backendStatisticsService
backendKafkaProducer -> backendEventMapper
backendKafkaConsumer -> backendEventMapper
backendKafkaConsumer -> backendUserService "process kafka events"
backendUserService -> backendKafkaProducer "send kafka events"
backendExchangeServices -> backendRepository
backendUserService -> backendRepository
backendStatisticsService -> backendRepository
}
views {
systemContext angularAndSpringSystem "SystemContext" {
include *
autoLayout
}
container angularAndSpringSystem "Containers" {
include *
autoLayout lr
}
component angularAndSpring "Components" {
include *
autoLayout
}
styles {
element "Person" {
shape Person
}
element "Database" {
shape Cylinder
}
element "Browser" {
shape WebBrowser
}
element "Scheduler" {
shape Circle
}
element "Consumer" {
shape Pipe
}
}
}
}