...
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
Module - package mapping
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
Available ModulesPackages
Compile a comprehensive list of openIMIS modulespackages
Include service dependencies for each modulepackage
Available Roles
Create a JSON-formatted list of roles with associated authorities
Group authorities by the defining module package (e.g., Role/modulepackage/authority)
...
Available configuration items
Based on a configuration file
Design system
Compilation of documentation
make sure documentation is modular and easy to combine in one pages
SOLUTION Creation Process
For each deployment recipeSOLUTION:
Identify relevant roles based on the utilization scenario
Select appropriate modules packages to support required functionality
Determine necessary services to support the chosen modulespackages
Builder Repository
Develop a "builder" repository to generate required outputs:
Django Initialization Modulepackage
Create roles and perform other initialization tasks
Ensure new generations don't replace existing Django migrations
openimis.json Configuration
Generate a file listing selected modules packages and their versions
Align with available modules packages for both frontend and backend
Docker Compose Files
Create a main compose.yml file
Include relevant service compose files
...
Service Catalog
Create a structured catalog of available services
Document each service's purpose, configuration options, and ENV variables
Module package Registry
Develop a registry of all openIMIS modulespackages
Include metadata such as dependencies, version compatibility, and brief descriptions
Role Definition System
Design a flexible system for defining and managing roles
Implement a JSON schema for role definitions, including grouped authorities
Recipe SOLUTION Builder Tool
Develop a tool to assist in recipe SOLUTION creation
Provide a user-friendly interface for selecting modulespackages, roles, and services
Output Generation
Implement logic to generate Django initialization code
Create openimis.json generator based on selected modulespackages
Develop Docker Compose file assembler
Version Control and Documentation
Maintain version control for recipes SOLUTIONs and generated outputs
Create comprehensive documentation for each recipeSOLUTION
Testing and Validation
Implement automated testing for generated recipesSOLUTIONs
Validate recipes SOLUTIONs against different deployment scenarios
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
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.
...