First of all big thanks to the Bahmni team for sharing your work! Thank you @mohant and @angshuonline for making me aware of it.
I’ve incorporated much of your terraform into our repository at GitHub - openmrs/openmrs-contrib-cluster: Contains terraform and helm charts to deploy OpenMRS distro in a cluster I tried to attribute the work to Bahmni, but please let me know if it needs any adjustments.
The progress so far:
- We have a helm chart, which deploys O3 together with MariaDB with a read-only replica on a vanilla Kubernetes (self hosted or from any cloud provider). I still need to add more documentation around it and list all possible configuration options (e.g. using RDS instead of self-deployed MariaDB, switching to MariaDB cluster with multiple masters, etc.)
- We have terraform scripts for AWS to setup Kubernetes and RDS (with still a bit of work around volume provisioning) and install O3 helm chart.
This week I’m hoping to complete volume provisioning and deploy Grafana with Helm chart for monitoring and gathering logs from OpenMRS and DB.
As we discussed on the call with @michaelbontyes I reckon that MSF’s requirements are best addressed by the Kubernetes based deployment and MariaDB in a cluster mode.
We could satisfy a large portion of them with the O3 helm chart already.
Kubernetes can be configured to use nodes that are running in Azure (or any other cloud provider) as well as on premise (local or remote network).
The “no downtime” can be achieved for DB cluster at this point (may need just a few changes in openmrs-core DB config to support DB cluster), but the O3 backend may experience downtime with automatic failover and recovery under a few minutes. Having another replica of O3 instance running is problematic at this point, but we will continue working towards that as well.