Hi everyone
I’m Suubi Joshua from Kampala Uganda, this summer I am working on Support for horizontal scaling of OpenMRS instances as part of GSOC 2026. I will be sharing updates about this project every week to show my progress and share any blockers, or for any one who might have any questions or clarifications on what I am doing throughout the project.
What is this project about?
Historically, many OpenMRS implementations have relied on traditional, monolithic single-server setups. While this works well for individual clinics, massive national-scale health networks or regional hospital systems can quickly push a single app server to its limits, creating performance bottlenecks and risky single points of failure.
This project aims to completely blueprint and build a production-ready, highly available, and cloud-native scaling architecture for OpenMRS on Kubernetes. By moving away from rigid, manual configuration patterns and leveraging modern infrastructure orchestration, the goal is to ensure OpenMRS can handle massive spikes in clinical traffic while keeping patient data entirely self-healing and continuously online.
How it works
To run OpenMRS across multiple servers simultaneously, I am breaking down the traditional “all-in-one” model into independent, coordinated layers;
-
Smart Startup: Automatically coordinates servers during simultaneous boots so they don’t fight over configuration files. The first server handles the one-time setup while the others wait their turn to start smoothly.
-
Shared Sessions: Syncs active user logins across the entire server pool so clinicians never get suddenly logged out if the system shifts their traffic to a different replica.
-
Unified Storage: Connects servers to a shared cloud storage network so patient documents or lab charts uploaded to one replica are instantly accessible to all others.
-
Clustered Database & Search: Moves from single database and search instances to cooperative clusters. This automatically balances heavy clinical traffic and keeps searches lightning-fast.
-
Advanced Routing: Isolates traffic management from the core application code, allowing deployments to seamlessly route clinical traffic and safely test out new software updates on a small subset of servers.
Key Goals
-
Dynamic Scaling: Establish automated rules that seamlessly spin up new OpenMRS server replicas during peak clinical hours and spin them down when traffic drops.
-
Zero-Downtime Upgrades: Fully transition our database and search layers to automated management systems capable of self-healing and running maintenance without going offline.
-
Seamless User Experience: Ensure absolute data consistency across all server replicas so clinicians experience zero session drops or missing file attachments.
-
End-to-End Security: Enforce mandatory data encryption for all internal communications between servers by default.
Resources
- Project Wiki: Loading …
- JIRA Epic
- Primary Project Repo
- Medium Blog
Thank you for you support so far.
cc: @raff @beryl @jayasanka