Versions Compared

Key

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

...

The "Solution Building" project aims to create customized deployment recipes SOLUTIONs for various utilizations of openIMIS, leveraging its modular microkernel architecturemicro-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 ModulesPackages

    • Compile a comprehensive list of openIMIS modulespackages

    • Include service dependencies for each modulepackage

  4. Available Roles

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

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

...

  1. Available configuration items

    • Based on a configuration file

    • Design system

  2. Compilation of documentation

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

SOLUTION Creation Process

For each deployment recipeSOLUTION:

  1. Identify relevant roles based on the utilization scenario

  2. Select appropriate modules packages to support required functionality

  3. Determine necessary services to support the chosen modulespackages

Builder Repository

Develop a "builder" repository to generate required outputs:

  1. Django Initialization Modulepackage

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

    • Align with available modules packages for both frontend and backend

  3. Docker Compose Files

    • Create a main compose.yml file

    • Include relevant service compose files

...

  1. Service Catalog

    • Create a structured catalog of available services

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

  2. Module package Registry

    • Develop a registry of all openIMIS modulespackages

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

    • Develop a tool to assist in recipe SOLUTION creation

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

  5. Output Generation

    • Implement logic to generate Django initialization code

    • Create openimis.json generator based on selected modulespackages

    • Develop Docker Compose file assembler

  6. Version Control and Documentation

    • Maintain version control for recipes SOLUTIONs and generated outputs

    • Create comprehensive documentation for each recipeSOLUTION

  7. Testing and Validation

    • Implement automated testing for generated recipesSOLUTIONs

    • Validate recipes SOLUTIONs against different deployment scenarios

  8. Continuous Integration/Deployment

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

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

Possible Future Enhancements

  1. Recipe SOLUTION Visualization

    • Develop a graphical representation of recipe 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 recipesSOLUTIONs, enhancing the software's adaptability to various use cases and environments.

...