Add horizontal scaling roadmap#5652
Conversation
Covers 14 areas including Quartz JDBC migration, Redis sessions, cache consolidation, connection pool sizing, load balancing, etc.
75dbf86 to
126fa9c
Compare
There was a problem hiding this comment.
Pull request overview
This PR adds comprehensive documentation for enabling horizontal scaling of the OpenBoxes Tomcat application. It introduces two detailed markdown documents outlining the technical challenges, solutions, and implementation steps needed to support running multiple application instances concurrently.
Key Changes:
- Added high-level scaling roadmap covering 14 areas of concern (SCALING.MD)
- Added detailed implementation plan with code examples and phase-by-phase guidance (HORIZONTAL_SCALING_MIGRATION_PLAN.md)
- Documented critical blockers including Quartz JDBC migration, Redis sessions, analytics job coordination, and load balancing configuration
Reviewed changes
Copilot reviewed 1 out of 1 changed files in this pull request and generated no comments.
Note: This review identified several critical issues that should be addressed before using this documentation for implementation, including inline AI assistant directives that should be removed, configuration inconsistencies, bugs in code examples, and security concerns around credential management.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #5652 +/- ##
============================================
+ Coverage 9.12% 9.69% +0.56%
- Complexity 1170 1319 +149
============================================
Files 701 717 +16
Lines 45281 45778 +497
Branches 10851 10926 +75
============================================
+ Hits 4131 4436 +305
- Misses 40497 40656 +159
- Partials 653 686 +33 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
What are your thoughts on the best place for this document? This artifact should be public-facing and is a living document (proposal, discussion) The options are:
I forgot two other options, but these might not be valid at the moment for the reasons expressed.
I think my recommendation (unless and until we create a project / tickets for this work), would be to move the discussion to Discourse (community.openboxes.com) so more eyes see it and provide feedback or GitHub Discussions since it's a developer proposal / discussion at the moment. And then if we actually standup an ADR repo we can create separate ADRs for each decision we need to make so there's a record. cc @mdpearson |
|
Some more thoughts. I think there's a state machine here that would be cool to implement with respect to these types of proposals. This isn't just a random idea I had one day. It's been brewing for a long time, but I haven't had time or budget to work on it. See the Opporuntity Backlog (challenges, opportunities) that I created a few years ago. The challenge is listed in the following document re: Challenges > HRDL-015 Scalability and there are a few opportunities mentioned in the Opportunities tab
I realized recently that we probably need to make some incremental progress on the horizontal scaling challenge because we have a few implementations that might eventually reach limits re: vertical scaling. This Opportunity Backlog also probably needs to be public-facing (separate repo?) to track all of the challenges we've identified. These could live in GitHub issues but given how much work Evan has done cleaning that issue tracker, that's probably a bad idea. I think there could one place for identifying / tracking the challenges and opportunities (like the Google Sheet) and another when we promote that idea to be implemented. So here's the potential flow for all of this:
|

This PR is just a shell for a large markdown document detailing how I think we can support horizontally scaling the OpenBoxes Tomcat instance.
Covers 14 areas including Quartz JDBC migration, Redis sessions, cache consolidation, connection pool sizing, load balancing, etc.
Ideally after initial review I'd pull this to a Jira epic and make a story for each of the bullet points within it, then start whittling away at them.