Solution Building: Deployment Recipe Strategy

Project Overview

The "Solution Building" project aims to create customized deployment SOLUTIONs for various utilizations of openIMIS, leveraging its micro-kernel architecture. Business modules will be mapped to technical packages, but the actual technical solution will work on packages level because is what the openIMIS assemblies FE/BE understands. This approach will allow for flexible configurations tailored to specific use cases.

Deployment SOLUTION strategy goal

Those recipe will have to be maintained across releases; this automation layer will take as input, in addition to the SOLUTION themselves, the latest list of package and will generate the up to date configurations for each SOLUTION .

Key Components

  1. Module - package mapping

  2. 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

  3. Available Packages

    • Compile a comprehensive list of openIMIS packages

    • Include service dependencies for each package

  4. Available Roles

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

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

  5. Available configuration items

    • Based on a configuration file

    • Design system

  6. Compilation of documentation

    • make sure documentation is modular and easy to combine in one pages

SOLUTION Creation Process

For each deployment SOLUTION:

  1. Identify relevant roles based on the utilization scenario

  2. Select appropriate packages to support required functionality

  3. Determine necessary services to support the chosen packages

Builder Repository

Develop a "builder" repository to generate required outputs:

  1. Django Initialization package

    • 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 packages and their versions

    • Align with available packages 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. package Registry

    • Develop a registry of all openIMIS packages

    • 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. SOLUTION Builder Tool

    • Develop a tool to assist in SOLUTION creation

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

  5. Output Generation

    • Implement logic to generate Django initialization code

    • Create openimis.json generator based on selected packages

    • Develop Docker Compose file assembler

  6. Version Control and Documentation

    • Maintain version control for SOLUTIONs and generated outputs

    • Create comprehensive documentation for each SOLUTION

  7. Testing and Validation

    • Implement automated testing for generated SOLUTIONs

    • Validate SOLUTIONs against different deployment scenarios

  8. Continuous Integration/Deployment

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

    • Automate the process of updating SOLUTIONs when new packages or services become available

Possible Future Enhancements

  1. SOLUTION Visualization

    • Develop a graphical representation of SOLUTION components and their relationships

By following this strategy, the "Solution Building" project will create a flexible and powerful system for generating tailored openIMIS deployment SOLUTIONs, 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/