-
Notifications
You must be signed in to change notification settings - Fork 1
PrankWeb Architecture
Lukas Polak edited this page Sep 3, 2024
·
7 revisions
The idea behind the design is to have several components with smaller responsibilities, rather than one big component as in the original version. This should allow us to easily replace any component. Besides, it decreases the entry barrier for new developers, as it is easier to understand a single component than a whole system. The following diagram captures the main runtime components.
C4Component
Person(user, "User")
Enterprise_Boundary("prankweb-boundary", "PrankWeb") {
System_Boundary("executor-p2rank-boundary", "executor-p2rank") {
Component("conservation/alignment", "Conservation Alignment")
Component("conservation/hmm", "Conservation HMM")
Component("executor-p2rank", "Executor-p2rank", "", "Call other using shell.")
Component("p2rank", "P2Rank")
Component("java-tools", "Java-tools")
Rel("executor-p2rank", "rabbitmq", "")
}
System_Boundary("executor-docking-boundary", "executor-docking") {
Component("executor-docking", "Executor-docking", "", "Entry-point for the docking tasks.")
Component("docking", "Docking (AutoDock Vina)")
Rel("executor-docking", "rabbitmq", "")
}
System_Boundary("gateway-boundary", "Gateway") {
Container("nginx", "NginX", "", "Proxy to other components.")
Component("frontend", "Frontend", "", "Served as a static file.")
Rel("nginx", "flower", "")
Rel("nginx", "monitor", "")
Rel("nginx", "web-server", "")
Rel_Right("user", "nginx", "")
}
Container("flower", "Flower", "", "RabbitMQ monitoring.")
Component("monitor", "Monitor", "", "Listen for funPDBe messages.")
Container("rabbitmq", "RabbitMQ", "", "Message broker.")
Component("web-server", "Web-server")
Rel("web-server", "rabbitmq", "")
}
Enterprise_Boundary("pdb-boundary") {
ContainerDb("pdb", "RCSB PDB")
Rel("executor-p2rank", "pdb", "")
}
Enterprise_Boundary("alphafold-boundary") {
ContainerDb("alphafold", "Alphafold")
Rel("executor-p2rank", "alphafold", "")
}
UpdateLayoutConfig($c4ShapeInRow="4", $c4BoundaryInRow="3")
- Conservation Contain conservation pipelines.
- Executor-p2rank Perform execution of a single prediction task. Calls other components using shell.
- Executor-docking Perform execution of a docking task. Calls other components using shell.
- Frontend Web-pages used by gateway.
- Gateway Gateway and proxy for HTTP access.
- Java-tools Wrap bio-java, used to produce output for PrankWeb.
- RabbitMQ Message broker for Celery.
- Web-server API implementation, provide access to data create tasks.
- Monitor Listen for FunPDBe messages and notify Google Analytics.
- Synchronization Prepare predictions for FunPDBe.
- Administration Contains administration and maitenance related scripts.
- Flower Provide overview of RabbitMQ.
- Grafana Dashboard for Prometheus.
- Prometheus Collect information from other components, mostly Flower.