Backend (API) Target Architecture
The openIMIS backend is split into 2 main components:
the online services, directly supporting user interactions
the batch (or long running) processors
openIMIS Online BE
The online services follow an event-driven architecture where plugins are decoupled by use of an (internal) bus.
The online services are primarily dedicated to be deployed as one (eventually clustered) instance. Yet the event-driven / internal bus architecture choice allows a smooth transition (should the load require it) to (containerised) microservices: the bus would have to be extracted as autonomous component.
openIMIS Online BE core provides:
building blocks to address topics such as:
synchronous/asynchronous messages (events) to/from other Software components and other openIMIS plugins
transversal features related to:
security (authorisation)
transaction and error management
Each openIMIS Online BE plugins are standardised to
expose (automated) REST, following GraphQL standard
allow built-in or overloaded extensibility
implement ORM and database migrations
All openIMIS Online BE features are implemented as plugins of the openIMIS online BE Core (following the same principle as for openIMIS Web FE).
Plugins are documented in openIMIS Modules.
openIMIS Batch BE
The batch processors don't follow a event-driven architecture but are implemented as workflows that are scheduled, monitored,...
As all other openIMIS components, openIMIS Batch BE is split into a core component and plugins.
The openIMIS Batch BE core provides:
building blocks to address topics such as:
parallelism, pause/resume, retry-on-error,...
transversal features related to:
security
transaction, error management
reporting and alerting
Each openIMIS Batch BE plugins reuse the model (and ORM) of the openIMIS Online BE plugins.
Did you encounter a problem or do you have a suggestion?
Please contact our Service Desk
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. https://creativecommons.org/licenses/by-sa/4.0/