Architecture
The platform is splitted into micro-services, each one providing a specific function.
Backend and User interface
The core component is the backend, which provides user management, workflow engine and monitoring.
Workflows
The backend component manages workflows structured like that:
- Workflow: a description including a list of steps
- Step: static declaration of a process
- Job: instance of a step, many jobs can be generated at the runtime for 1 step (1 per file for example)
- Step: static declaration of a process
Complete workflow documentation of the schema is described here.
Messaging protocol
A communication standard is required to match messages between backend and workers. To ensure the quality of integration, it is recommended to use everywhere rs_amqp_worker which provides a worker SDK.
All details about communication between the backend and workers is detailed here.
Deployment
The entire project is currently deployed using Kubernetes.
Every part of the platform is built into Docker images and can be deployed easily with the startup project.
Developement stack
User interface
The frontend is designed using Angular.io
Backend
The backend uses the power of Elixir, based on Erlang to provide a resilient and efficient backend.
Workers
Most of workers are using Rust, high-typed language with performances similar to C/C++ applications.
Some other workers can use C/C++ using the c_amqp_worker project