The Routine That Keeps It Healthy
Last updated:
Applications fail through neglect
Django applications maintained continuously stay pleasant to work on for years. Those left untouched become difficult, because every dependency has moved several versions and nothing can be updated in isolation.
Deferred maintenance compounds. Each skipped update makes the next harder, until a routine upgrade becomes a project nobody budgeted for.
The monthly routine
- Dependency updates applied, with tests
- Vulnerability audit reviewed
- Monitoring checked — errors, queues, business metrics
- Backups verified as running
- Any upcoming credential expiries noted
An hour a month, and it prevents most of what would otherwise become a project.
The annual work
- Django version upgrade, before support ends
- Python version upgrade, on the same basis
- A restore actually tested
- A review of what has accumulated — unused code, stale data, orphaned records
- A check that the system still matches how the business works
What it costs
| Application | Annual maintenance |
|---|---|
| Simple, stable | 10–15% of build |
| Active business application | 15–25% |
| Several integrations | 20–30% |
| With AI capability | 25–35% |
AI capability costs more because quality drifts as inputs change, which conventional software does not do.
Change it as the business changes
A process change should trigger a system change rather than a workaround. Workarounds accumulate and eventually become the process, at which point the system no longer matches reality.
Small changes made promptly are far cheaper than large ones made late.
Frequently asked questions
Can our team do the maintenance?
What if we do nothing?
Is retained support worth it?
Does maintenance reduce over time?
Application nobody has updated in years?
The version and dependency position is the urgent part. Happy to assess where it stands.
Related services
What we build for problems like this one