Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

The OpenIMIS 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 openIMIS Online BE core provides:

  • building blocks to address topics such as:
    • synchronous/asynchronous messages (events) to/from other Software components and other OpenIMIS openIMIS plugins

  • transversal features related to:
    • security (authorisation)
    • transaction and error management

Each OpenIMIS openIMIS Online BE plugins are standardised to

  • expose (automated) REST (or GraphQL?) Api (inspired by DHIS2 way of working, but aligned to well established standards)
  • allow built-in or overloaded extensibility
  • implement ORM and database migrations

All OpenIMIS openIMIS Online BE features are implemented as plugins of the OpenIMIS openIMIS online BE Core (following the same principle as for OpenIMIS openIMIS Web FE).

Plugins are documented in OpenIMIS 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 openIMIS components, OpenIMIS openIMIS Batch BE is split into a core component and plugins.

The OpenIMIS 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 openIMIS Batch BE plugins reuse the model (and ORM) of the OpenIMIS openIMIS Online BE plugins.