-
Notifications
You must be signed in to change notification settings - Fork 1
Backend Architecture
Ihar Suvorau edited this page Sep 14, 2023
·
2 revisions
Monolithical web server with background jobs and external services:
flowchart LR
Frontend --> Controllers
subgraph backend[Backend]
subgraph Web[Web Server]
Controllers
Auth[Auth Service]
Users[Users Service]
Projects[Projects Service]
Assets[Assets Service]
Storage[Storage Service]
Auth --> AuthImpl[Auth Implementation]
Users --> UsersImpl[Users Implementation]
Projects --> ProjectsImpl[Projects Implementation]
Assets --> AssetsImpl[Assets Implementation]
Assets --> Storage
Storage --> FileStorageImpl[File Storage Implementation]
Storage --> BlobStorageImpl[Blob Storage Implementation]
Storage --> EtcImpl[...]
AuthImpl --> UtilitiesDB[(Utilities DB)]
UsersImpl --> UtilitiesDB
ProjectsImpl --> UtilitiesDB
AssetsImpl --> UtilitiesDB
FileStorageImpl --> FileStorage[(File Storage)]
BlobStorageImpl --> BlobStorage[(Blob Storage)]
Controllers --> Auth
Controllers --> Users
Controllers --> Projects
Controllers --> Assets
end
subgraph BackgroundServices[Background Services]
DiscoverJob[BPS Discovery Batch Job]
SimulationJob[Simulation Batch Job]
WTAJob[Waiting Time Analysis Batch Job]
Controllers ---> DiscoverJob
Controllers ---> SimulationJob
Controllers ---> WTAJob
end
end
subgraph ExternalServices[External Services]
Notifications[Notifications Service]
Discovery[BPS Discovery Service]
Simulation[Simulation Service]
WTA[WTA Service]
DiscoverJob ---> Discovery
DiscoverJob ---> Assets
DiscoverJob ---> Notifications
SimulationJob ---> Simulation
SimulationJob ---> Assets
SimulationJob ---> Notifications
WTAJob ---> WTA
WTAJob ---> Assets
WTAJob --> Notifications
end
flowchart LR
Frontend --> Controllers
subgraph Web[Web Server]
Controllers
end
Controllers --> Auth
Controllers --> Users
Controllers --> Projects
Controllers --> Assets
subgraph Broker[Message Topics]
BPSDiscoveryRequestTopic[[BPS Discovery Request Topic]]
BPSDiscoveryResultTopic[[BPS Discovery Result Topic]]
NotificationRequestTopic[[Notification Request Topic]]
Controllers -- publish ---> BPSDiscoveryRequestTopic
end
subgraph Processors[Topic Processors]
subgraph Group
BPSDiscoveryRequestProcessor1[[BPS Discovery Request Processor 1]]
BPSDiscoveryRequestProcessor2[[BPS Discovery Request Processor 2]]
end
BPSDiscoveryRequestProcessor1 -- subscribes --> BPSDiscoveryRequestTopic
BPSDiscoveryRequestProcessor1 -- publishes --> BPSDiscoveryResultTopic
BPSDiscoveryRequestProcessor2 -- subscribes --> BPSDiscoveryRequestTopic
BPSDiscoveryRequestProcessor2 -- publishes --> BPSDiscoveryResultTopic
BPSDiscoveryResultProcessor -- subscribes --> BPSDiscoveryResultTopic
BPSDiscoveryResultProcessor -- publishes --> NotificationRequestTopic
NotificationProcessor -- subscribes --> NotificationRequestTopic
end
BPSDiscoveryRequestProcessor1 -- uses ---> Simod
BPSDiscoveryRequestProcessor1 -- uses ---> Assets
BPSDiscoveryRequestProcessor2 -- uses ---> Simod
BPSDiscoveryRequestProcessor2 -- uses ---> Assets
BPSDiscoveryResultProcessor -- uses ---> Assets
NotificationProcessor -- uses ---> Notifications
Assets -- uses --> Storage
- Control the number of concurrently running batch processes
- Distribute batch processes across multiple machines (e.g., BPS discovery on several machines, simulation on several machines, etc.)
- Should each processor call an external service or should it use the underlying tool directly?
-
Archive (ignore this, for history reasons only)
- Jonas' Notes
- Developer Notes
- System Design
-
Developer Notes
-
System Design
-
Policies