Udhyam Labs AI

Platform re-engineering

This practice replaces the parts of a system that can no longer carry the load or accept the changes the product needs. The system is designed to stay in service throughout, and your team keeps shipping outside the areas you agree to freeze. We separate what is still sound from what has to change, and the change is made one function at a time.

Rebuilding a system that has outgrown its original design

A system that was built correctly for one set of assumptions can stop coping when those assumptions change. We replace the parts that have to change, with the system designed to stay in service throughout. Traffic moves to a new path only after that path has matched the old one on the same live requests, within a tolerance agreed with you.

What the work is planned to deliver

  • New components carrying production traffic
  • Data migrated and verified as part of the project
  • The old path retired, once the new path has met the retirement test agreed in advance
  • Service decomposition
  • Data model redesign
  • Outbox and change data capture
  • Backfill
  • Traffic shifting
  • Shadow comparison
Incremental replacement, traffic shifting designed to stay in service Legacy system Orders, extractedBilling, extractedCatalogueReporting Shared database requests Routingfacade 30% 70% Orders serviceown datastoreBilling serviceown datastoreCatalogue servicereplicating, backfilling Shadow comparison old and new paths answer the same live requests one mismatch, resolved before the next shift

The drawing shows requests divided between the old system and its replacements, with both answers compared before more traffic moves.

The first step

What the assessment examines, what you provide, and where the risk is

The assessment has a fixed fee and a fixed length, and it ends with written findings that are yours. You can stop there.

The assessment

We read the code, the data model and production telemetry. You receive a map of what is sound and what has to change, the order in which components can be extracted, and the cost of the period in which the old and the new must both run.

What you provide

You provide read-only access to the repositories and to production telemetry, the engineers who know why the system is the way it is, and a decision on which areas are frozen while they are being replaced.

Where the risk is

Data carries the risk. A request that moves money or calls a third party cannot simply be sent down two paths, and an application that writes to two datastores itself leaves them inconsistent when one of the writes fails.

The method

How the work is done

Systems do not usually fail because they were badly built. They fail because they were built correctly for a set of assumptions that no longer holds: a tenth of the current traffic, a different read and write ratio, a data model that made sense before the second product line existed.

Wherever the system allows it we use the strangler fig pattern: new components are built beside the old system and take over its traffic one function at a time. The alternative, a full rewrite that runs for a year or more while the original keeps changing, is a common way for this kind of project to fail.

Before any traffic moves, the new path answers the same live requests as the old one and the two results are compared. For a request with side effects, the new path runs with its external effects switched off, and the comparison is made on the ledger entries and outbound messages it intended to produce. On paths that carry money the tolerance is zero unexplained differences. Elsewhere the tolerance is agreed with you in advance.

During the parallel run window each entity has one system of record. The application commits to that datastore in a single local transaction, an outbox table or change data capture carries the change to the other datastore, and a scheduled reconciliation reports any divergence. Reads move to the new datastore once its lag is inside the agreed bound. Write authority moves once, at a gate, and the stream is then reversed so that the old datastore remains a fallback until the old path is retired.

Each old path is retired once the new one has carried all of its traffic for an agreed period with no reconciliation break outside the agreed tolerance and no rollback. Where the system does not allow incremental replacement, for example a single shared database with no seam to cut along, the assessment says so and sets out the alternatives with their cost.

100% 66% 33% 0 parallel run window gate gate gate gate new path legacy path Each gate compares the two paths on the same live requests. The shift advances only when the two paths match within the tolerance set in advance, so the decision to proceed is made by measurement and the schedule follows from it.
The parallel run window is the expensive part of the project, because both datastores have to be run, monitored and kept consistent for its whole length. A plan that does not budget for that period risks stopping halfway, with two systems to maintain.
Questions we expect

Questions about platform re-engineering

The Working with us page answers the rest. If yours is not there, ask it on the contact page and an engineer will reply.

You are a new firm. Why would we give you access to production?

You would not need to give us write access at the start. The assessment needs read access to sources that you choose, which can include production telemetry, and no ability to change anything. The analysis runs in a workspace that you create inside your own account, and where a source holds personal or cardholder data you can place a masked or aggregated export in that workspace. The assessment runs under an NDA and is carried out by engineers whose profiles you have seen. If you stop when it ends, you have spent the fixed fee and the cost of any capacity rented for the tests, and you hold findings that any other firm can act on.

What happens if your lead engineer leaves, or the firm stops trading?

A second engineer follows every engagement from the first day and can take it over. Everything we produce is committed to your repositories and runs in your accounts, and every decision is recorded there when it is made. You would hold the code, the configuration, the measurements and the decision record, which is what another team needs to continue.

How is the work priced?

The assessment has a fixed fee and a fixed length, and both are quoted before it starts. The price of the build is set out in the proposal that follows the assessment. We do not publish rates, because the fee follows the scope.

All ten questions

Describe the problem, and an engineer will reply within one working day

Tell us in general terms what you are trying to do and what has stopped it. If it is not ours to take on, we will say so.

Start a conversation An NDA, yours or ours, is signed before you share any detail of your systems.