-
Notifications
You must be signed in to change notification settings - Fork 2
Use Case 2: BPS Discovery
Ihar Suvorau edited this page Sep 14, 2023
·
4 revisions
flowchart LR
upload[Upload a log] --> discover[Discover BPS model] --> save[Save BPS model] --> examine[Examine BPMN] & use[Use BPS model for simulation]
This is the point-to-point communication approach (vs. distributed messaging). Gateway serves as (a) a load balancer and (b) service discovery. We omit auth requests on the diagram to simplify it.
flowchart LR
subgraph node1[pix.cloud.ut.ee]
webserver
gateway
assets
end
subgraph node2[simod1.cloud.ut.ee]
simod-http1
end
subgraph node3[simod2.cloud.ut.ee]
simod-http2
end
frontend -- 1. new job --> gateway
gateway -- 1. new job --> webserver
webserver -- 2. get assets --> gateway
gateway -- 2. get assets --> assets
webserver -- 3. new job --> gateway -- 3. new job --> simod-http1 & simod-http2
simod-http1 -- 4. job done webhook ---> gateway -- 4. job done webhook --> webserver
simod-http2 -- 4. job done webhook ---> gateway
webserver -- 5. get results --> gateway
gateway -- 5. get results --> simod-http1 & simod-http2
webserver -- 6. save results --> gateway
gateway -- 6. save results --> assets
In this case, we don't have the webserver, its role plays the gateway that simply relays requests (load balancing if configured) to downstream services. The simod-http
service receives locations (URLs, paths) to input assets already in the POST request. No need to use the assets
service to fetch files.
flowchart LR
subgraph node1[pix.cloud.ut.ee]
webhooks
gateway
assets
requests
end
subgraph node2[simod1.cloud.ut.ee]
simod-http1
end
subgraph node3[simod2.cloud.ut.ee]
simod-http2
end
frontend -- 1. new job --> gateway
gateway -- 1. new job --> requests[processing requests]
requests -- 2. new job --> simod-http1 & simod-http2
simod-http1 & simod-http2 -- 3. job done ---> gateway -- 3. job done --> webhooks[webhooks server]
webhooks -- 3. get results --> gateway -- 3. get results --> simod-http1 & simod-http2
webhooks -- 4. save results --> gateway -- 4. save results --> assets
webhooks -- 5. update requests --> gateway -- 5. update requests --> requests
Same, without the gateway for simplicity (still assuming, all requests are routed through the gateway):
flowchart LR
subgraph node1[pix.cloud.ut.ee]
webhooks
assets
requests
notifications
end
subgraph node2[simod1.cloud.ut.ee]
simod-http1
end
subgraph node3[simod2.cloud.ut.ee]
simod-http2
end
frontend -- 1. new job ---> requests[processing requests]
requests -- 2. new job --> simod-http1 & simod-http2
simod-http1 & simod-http2 -- 3. job done ---> webhooks[webhooks server]
webhooks -- 4. get results --> simod-http1 & simod-http2
webhooks -- 5. save results --> assets
webhooks -- 6. update requests --> requests
webhooks -- 7. notify user --> notifications
flowchart LR
subgraph node1[pix.cloud.ut.ee]
webserver
gateway
assets
kafka
end
subgraph node2[simod1.cloud.ut.ee]
simod-worker1
end
subgraph node3[simod2.cloud.ut.ee]
simod-worker2
end
frontend -- 1. new job --> gateway -- 1. new job --> webserver -- 1. new job --> kafka
kafka -- 2. new job --> simod-worker1
kafka -- 2. new job --> simod-worker2
simod-worker1 -- 3. save results --> gateway -- 3. save results --> assets
simod-worker2 -- 3. save results --> gateway -- 3. save results --> assets
simod-worker1 -- 4. job result --> kafka
simod-worker2 -- 4. job result --> kafka
Same, without the gateway for simplicity:
flowchart LR
subgraph node1[pix.cloud.ut.ee]
requests[processing requests]
assets
kafka
notifier
post-processor
end
subgraph node2[simod1.cloud.ut.ee]
simod-worker1
end
subgraph node3[simod2.cloud.ut.ee]
simod-worker2
end
frontend -- 1. new job --> requests -- 1. new job --> kafka
kafka -- 2. new job --> simod-worker1 & simod-worker2
simod-worker1 & simod-worker2 -- 3. save results --> assets
simod-worker1 & simod-worker2 -- 4. job result --> kafka
kafka -- 5. post-process --> post-processor
post-processor -- 6. update requests --> requests
post-processor -- 7. notify user --> notifier
-
Archive (ignore this, for history reasons only)
- Jonas' Notes
- Developer Notes
- System Design
-
Developer Notes
-
System Design
-
Policies