Should an ageing on-premises system be extended, modernized, or rebuilt?
Complete source, database access, and a working environment make extension possible to assess, but “old, on-premises, and slow” does not automatically justify a cloud rewrite. First inspect reproducibility, performance, dependencies, security, data, and business usage. Optimize a measurable bottleneck; replace modules or modernize incrementally when structural risk is high; rewrite only when safe evolution is no longer credible.
Slow performance may come from missing indexes, poor queries, disk I/O, locks, networks, reporting and transactions sharing a database, limited hardware, or data growth. A cloud move can relocate the same problem to a more expensive server. Rebuilding without business discovery can also erase years of undocumented rules.
When agreeing deliverables, handover, and ownership boundaries, also compare Does Wavesteam support on-premises, private-cloud, public-cloud, and hybrid deployment?; the linked guidance adds context that should be considered in the same decision.
Four routes
| Route | Suitable condition | Advantage | Main risk | Evidence |
|---|---|---|---|---|
| Optimize the current system | It runs, the bottleneck is identifiable, and the stack remains maintainable | Lowest cost and least business disruption | Extends life without removing every dependency | APM, slow queries, resources, load tests |
| Upgrade runtime or replace a module | Core can remain while selected modules or runtimes are obsolete | Moderate risk and migration | New/old compatibility | Dependency inventory, module boundaries, regression tests |
| Incremental strangler migration | Business cannot stop and traffic can move by module | Staged release, rollback, evidence during migration | Dual running, synchronization, longer programme | Dependencies, APIs, data consistency plan |
| Full rebuild | Current system cannot run safely, has no maintainers, and blocks essential outcomes | New architecture and experience | Highest requirements, cutover, data, and schedule risk | Full business baseline and total-cost comparison |
Confirm that the source is usable
Source must correspond to production and include repositories, dependencies, builds, configuration, database schema, and third-party components. Build and run it in isolation and record unavailable packages, obsolete runtimes, licences, and known vulnerabilities. A zip that cannot build, or a critical closed binary that was not transferred, is not maintainable source.
Establish P50/P95/P99 for critical pages and APIs plus slow queries, CPU, memory, disk, lock waits, concurrency, and data volume. Profile one reproducible slow path to allocate causes. If indexing, paging, caching, archiving, or separating reports resolves the issue, a trend-driven rewrite is not justified.
Business rules and data matter more than code style
Inventory functions actually used, roles, reports, integrations, manual corrections, and period-end exceptions. Logs and interviews distinguish retain, improve, and retire. Reconstruct undocumented exception and reconciliation logic from code, data, and business specialists together.
Profile tables, volume, duplicates, missing values, encoding, attachments, and keys before migration. Define full and incremental loads, reconciliation, downtime, rollback, and the old system's read-only period. “Imported successfully” does not prove that money, inventory, and orders reconcile.
On-premises, cloud, and hybrid are choices rather than a maturity ladder. A factory or regulated network may modernize locally; public traffic and elasticity may justify cloud; hybrid creates network, identity, latency, and failure boundaries. Regulation, connectivity, operational capability, and three-year cost decide.
Wavesteam produces a diagnostic covering reproducibility, bottlenecks, security, modules, data quality, and route costs, followed by immediate remediation and a longer modernization recommendation. An incremental route gives each module parallel validation and rollback. A rebuild treats the old system as evidence of rules rather than copying its screens blindly.
References
- AWS Prescriptive Guidance explains the strangler fig pattern; the pattern does not require AWS hosting.
- NIST SSDF SP 800-218 informs treatment of obsolete dependencies, protected software, and vulnerability response.
- The Wavesteam Transparent Delivery Standard covers source, data, migration, and handover boundaries.
Reading source is not diagnosis. The route should follow a reproducible runtime, measurements, business interviews, and total cost.