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 is responsible for managing projects, experiments and plates created in Phaedra II. It is implemented with Spring Boot framework.
Protocol service is responsible for managing protocols, features and calculations formulas. It is implemented with Spring Boot framework.
Data Capture Service
Measurement service is responsible for managing the imported data measurements. It is implemented with Spring Boot framework.
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 is responsible for managing the calculated result data coming from the Calculation service. It is implemented with Spring Boot framework.
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 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.
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.