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
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 Packages
Compile a comprehensive list of openIMIS packages
Include service dependencies for each package
Available Roles
Create a JSON-formatted list of roles with associated authorities
Group authorities by the defining package (e.g., Role/package/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 SOLUTION:
Identify relevant roles based on the utilization scenario
Select appropriate packages to support required functionality
Determine necessary services to support the chosen packages
Builder Repository
Develop a "builder" repository to generate required outputs:
Django Initialization package
Create roles and perform other initialization tasks
Ensure new generations don't replace existing Django migrations
openimis.json Configuration
Generate a file listing selected packages and their versions
Align with available packages for both frontend and backend
Docker Compose Files
Create a main compose.yml file
Include relevant service compose files
Implementation Strategy
Service Catalog
Create a structured catalog of available services
Document each service's purpose, configuration options, and ENV variables
package Registry
Develop a registry of all openIMIS packages
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
SOLUTION Builder Tool
Develop a tool to assist in SOLUTION creation
Provide a user-friendly interface for selecting packages, roles, and services
Output Generation
Implement logic to generate Django initialization code
Create openimis.json generator based on selected packages
Develop Docker Compose file assembler
Version Control and Documentation
Maintain version control for SOLUTIONs and generated outputs
Create comprehensive documentation for each SOLUTION
Testing and Validation
Implement automated testing for generated SOLUTIONs
Validate SOLUTIONs against different deployment scenarios
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
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/