Solution Building: Deployment Recipe Strategy

Project Overview

The "Solution Building" project aims to create customized deployment recipes for various utilizations of openIMIS, leveraging its modular microkernel architecture. This approach will allow for flexible configurations tailored to specific use cases.

Key Components

  1. Available Services

    • Maintain a list of available sub-compose files (e.g., Sentry, RabbitMQ, Redis, OpenSearch)

    • Document ENV variables that activate/deactivate service utilization in the core software

  2. Available Modules

    • Compile a comprehensive list of openIMIS modules

    • Include service dependencies for each module

  3. Available Roles

    • Create a JSON-formatted list of roles with associated authorities

    • Group authorities by the defining module (e.g., Role/module/authority)

Recipe Creation Process

For each deployment recipe:

  1. Identify relevant roles based on the utilization scenario

  2. Select appropriate modules to support required functionality

  3. Determine necessary services to support the chosen modules

Builder Repository

Develop a "builder" repository to generate required outputs:

  1. Django Initialization Module

    • Create roles and perform other initialization tasks

    • Ensure new generations don't replace existing Django migrations

  2. openimis.json Configuration

    • Generate a file listing selected modules and their versions

    • Align with available modules for both frontend and backend

  3. Docker Compose Files

    • Create a main compose.yml file

    • Include relevant service compose files

Implementation Strategy

  1. Service Catalog

    • Create a structured catalog of available services

    • Document each service's purpose, configuration options, and ENV variables

  2. Module Registry

    • Develop a registry of all openIMIS modules

    • Include metadata such as dependencies, version compatibility, and brief descriptions

  3. Role Definition System

    • Design a flexible system for defining and managing roles

    • Implement a JSON schema for role definitions, including grouped authorities

  4. Recipe Builder Tool

    • Develop a tool to assist in recipe creation

    • Provide a user-friendly interface for selecting modules, roles, and services

  5. Output Generation

    • Implement logic to generate Django initialization code

    • Create openimis.json generator based on selected modules

    • Develop Docker Compose file assembler

  6. Version Control and Documentation

    • Maintain version control for recipes and generated outputs

    • Create comprehensive documentation for each recipe

  7. Testing and Validation

    • Implement automated testing for generated recipes

    • Validate recipes against different deployment scenarios

  8. Continuous Integration/Deployment

    • Set up CI/CD pipelines for recipe generation and testing

    • Automate the process of updating recipes when new modules or services become available

Possible Future Enhancements

  1. Recipe Visualization

    • Develop a graphical representation of recipe components and their relationships

By following this strategy, the "Solution Building" project will create a flexible and powerful system for generating tailored openIMIS deployment recipes, enhancing the software's adaptability to various use cases and environments.



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/