Platform Modernization
Py 3.6→3.12 · Django 2.2→5.2
Multi-version upgrade of the enterprise lending stack — Python 3.6 to 3.12 and Django 2.2 to 5.2 across LMS, LOS and supporting microservices.
Problem
Long-lived platforms accumulate version debt quietly. Nothing breaks, so nothing gets prioritised — until the runtime and framework are years past their supported window, security advisories land against releases that no longer receive patches, and the dependency graph has drifted so far that even routine upgrades stall.
Solution
A staged modernization across the lending stack rather than a long-lived rewrite branch. Versions moved one step at a time with the system deployable at every point, dependencies audited up front, and deprecation warnings treated as build failures so each hop surfaced its own problems instead of deferring them.
My Contribution
- Led modernization of the enterprise lending stack — LMS, LOS and supporting microservices.
- Upgraded Python 3.6 → 3.12 and Django 2.2 → 5.2 while keeping releases seamless.
- Audited and resolved the dependency graph, replacing abandoned packages and removing unused ones.
- Sequenced runtime and framework moves so each failure stayed attributable to one change.
- Improved security posture and long-term maintainability across the platform.
Key Features
- Staged one-version-at-a-time upgrade path
- Deployable at every step — no long-lived migration branch
- Up-front dependency audit and replacement
- Deprecation warnings enforced as build failures
- Compatibility verified service by service
- Improved security posture across the stack
Architecture
Audit—Dependency graph reviewed for maintenance status and target-version support.
The upgrade loop, repeated per version hop until the target is reached.
Technologies
- Python
- Django
- Docker
- CI/CD
- ECS
- Celery
Impact
- Enterprise lending stack brought onto current Python and Django releases
- Improved security posture and dependency maintainability
- Seamless releases throughout, with no feature freeze
Want to talk through the details?
Happy to go deeper on any of the engineering decisions here.