Skip to the content.

Architecture

Systems

System Landscape

The main systems are:

GitHub

GitHub is used for a number of systems in the tool, as shown in this expanded summary:

System Landscape

Web Interface

The web interface is the main communication point with the users, allowing for simulations to be scheduled and for the display of results. There is an API available for expert users to schedule simulations without using the UI.

Web Interface

Relevant repositories:

Job Runner

The Web Interface will use GitHub Actions to request a simulation, which is executed by a Model Runner Docker container. The Model Runner will spawn an additional model-specific Model Connector Docker container to run the simulation. Once this are complete it will communicate the results back to the Web interface. The Model Connector is used to translate between the input and output schemas of the Web Interface and the specific input parameters and output understood by the relevant model.

This is managed using actions-runner-controller - the Actions Runner and Actions Runner Controller containers below are part of this tool.

Job Runner

Relevant repositories:

Control Plane

The Control Plane is a GitHub repository defining the GitHub Actions workflows that define how the Model Runner is executed in response to a simulation request.

Control Plane

Relevant repositories:

Deployment

Most systems are designed to be deployed into Azure, with the exception of the Control Plane (the UI of the Web Interface is a Javascript Single-Page Application, so most of the execution takes place in the user’s browser, but the application is served from the same Docker container as the API). The following diagram shows one configuration, but there will be some differences between each environment. In particular, the number, size and configuration of node pools for the Azure Kubernetes Service is likely to vary based on the needs of the models used in each environment.

Deployment

Relevant repositories:

Communication

When a user requests a simulation through the web-ui, this triggers a sequence of events involving most of the components of the system. A summary of the communication is shown in the below diagram:

Simulation

The below diagram shows the same communication in more detail:

Simulation

This may be seen more clearly in the following sequence diagram:

Simulation