Core Components
The following diagram represents the core components typically present in a fully-functioning instance of Riberry.
Web Application
Riberry's frontend is a single-page application (SPA) which interacts with Riberry's REST API. The REST API exposes Riberry's domain model by returning JSON resources.
The actual web application is de-coupled from Riberry's core, and the two components (web application and REST API) are both optional and swappable. Riberry can function without the web application running, and with it, Riberry turns into a backend system which can still perform all the operations which were exposed to users via the web application.
The architecture of the web application tries to adhere to Martin Fowler's Service Layer design pattern.
Background Tasks
Riberry itself is a real-time system driven by Celery. Behind the scenes, Riberry is scheduling jobs, processing events and executing custom tasks defined by plugins and extensions.
The Celery application which drives these background tasks is riberry.celery.background
.
Riberry Tasks Scheduler
The Riberry Tasks Scheduler is an instance of Celery beat which is queuing core and plugin tasks on pre-defined intervals.
Job Scheduler Worker
Celery queue: riberry.background.schedules
The Job Scheduler is a Celery worker which manages job scheduling. It will retrieve and process all job schedules to determine if it should create a new execution.
Configuration specific to this worker can be found here.
Events Processor Worker
Celery queue: riberry.background.events
The Events Processor is a Celery worker which processes all events generated by the custom Celery applications. Events fall into three categories:
- Stream events
- Artifact events
- Notification events
Configuration specific to this worker can be found here.
Custom Task Worker
Celery queue: riberry.background.custom
The Custom Task Executor is a Celery worker which processes any custom tasks declared by Riberry plugins and extensions. An example of a Riberry plugin is Riberry-LDAP, which declares a custom task that synchronizes the LDAP groups every two minutes.