Architecture
Overview
The Phaedra II platform is based on a microservices architecture pattern.
The following list of services are currently implemented in Phaedra II:
- Plate Service
- Protocol Service
- Data Capture Service
- Measurement Service
- Calculation Service
- Resultdata Service
- Metadata Service
- Charting Service
- Pipeline Service
- Phaedra UI
These services communicate with each other using an event-based mechanism, Apache Kafka, to perform various tasks:
In addition, each service exposes a public API that is accessible by way of an API Gateway.
Plate Service
Plate service is responsible for managing projects, experiments and plates created in Phaedra II. It is implemented with Spring Boot framework.
Protocol Service
Protocol service is responsible for managing protocols, features and calculations formulas. It is implemented with Spring Boot framework.
Data Capture Service
Data capture service is responsible for importing data measurements and managing/executing capture jobs. It it implemented with JavaScript that runs on a Node.js runtime environment.
Measurement Service
Measurement service is responsible for managing the imported data measurements. It is implemented with Spring Boot framework.
Calculation Service
Calculation service is responsible for executing formula calculations created and defined with Protocol service. It consists of 1 or more calculation engines (this can be scaled) that can execute R code. It is implemented with Spring Boot framework.
Resultdata Service
Resultdata service is responsible for managing the calculated result data coming from the Calculation service. It is implemented with Spring Boot framework.
Metadata Service
Metadata service is responsible for managing metadata like tags and properties for different Phaedra II entity objects like projects, experiments, plates, protocols, plate templates and wells. It is implemented with Spring Boot framework.
Charting Service
Charting service is responsible for building different types of charts for specific input data. The charting service collects the data from other Phaedra II services and combines the collected data in charts that can be displayed. The chart types that are available at the moment of the writing are Scatter, Box-plot and Bar charts for selected plate. It is implemented with Spring Boot framework.
Pipeline Service
Phaedra UI
Phaedra UI is an implementation of the Phaedra Web client application. It is implemented with Vue.js web framework. Phaedra UI relies on the REST and GraphQL apis of the Phaedra II back-end services to visualise and update the data.