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
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 Modules
Compile a comprehensive list of openIMIS modules
Include service dependencies for each module
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:
Identify relevant roles based on the utilization scenario
Select appropriate modules to support required functionality
Determine necessary services to support the chosen modules
Builder Repository
Develop a "builder" repository to generate required outputs:
Django Initialization Module
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 and their versions
Align with available modules 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
Module Registry
Develop a registry of all openIMIS modules
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 Builder Tool
Develop a tool to assist in recipe creation
Provide a user-friendly interface for selecting modules, roles, and services
Output Generation
Implement logic to generate Django initialization code
Create openimis.json generator based on selected modules
Develop Docker Compose file assembler
Version Control and Documentation
Maintain version control for recipes and generated outputs
Create comprehensive documentation for each recipe
Testing and Validation
Implement automated testing for generated recipes
Validate recipes against different deployment scenarios
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
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/