Skip to content

Outcome · migration

Move off a rented platform without a rewrite

Most migrations fail on the same two things: the catalogue and the subscribers. Move those wrongly and you lose either playback history or people's money. The order of operations matters more than the destination.

The destination is the easy half

Standing up a new platform is a known quantity — it is Terraform, and it can be rehearsed as many times as you like before anyone depends on it. What cannot be rehearsed casually is moving a live audience across, with their subscriptions intact, without a window where somebody has paid and cannot watch.

So the engagement is planned backwards from that constraint. The new estate runs in parallel and serves real traffic long before it serves all of it. Entitlements are reconciled, not re-created. And every step has a way back that has actually been tested, rather than a paragraph in a document saying it should work.

Detail

Where migrations actually go wrong

Risk

Subscriptions and billing state

Renewal dates, trial periods, coupon state and payment tokens rarely export cleanly. A mismatch here does not degrade the service — it charges the wrong person the wrong amount.

  • Reconcile, never re-create
  • Run both ledgers in parallel before cutover
  • Every discrepancy resolved before the switch

Risk

Catalogue and playback state

Metadata usually survives. Continue-watching positions, watchlists and viewing history frequently do not, and their loss is the thing viewers notice first.

  • Migrate positions, not only metadata
  • Preserve identifiers so deep links survive
  • Re-encode only what genuinely needs it

Risk

URLs, apps and cached links

Installed apps keep pointing at old endpoints for as long as people delay updates, and search engines keep old URLs far longer than that.

  • Old endpoints kept alive behind a proxy
  • Staged app rollout, not a flag day
  • Redirects that outlive the migration

Risk

The contract you are leaving

Notice periods, minimum commits and data-export clauses decide the timeline more often than any technical constraint does.

  • Read the exit terms first
  • Plan the parallel period around the commit
  • Export rights confirmed before work starts

Detail

The three that actually bite

The risks above are the ones a plan document lists. These three decide whether the week goes quietly, and every one of them is an operational detail rather than an architectural one.

Bottleneck 01

The DNS cutover

Time to live is your rollback speed, and it only starts helping after the old value has expired everywhere. Lowering it on the morning of the cutover changes nothing for anyone still holding the previous answer.

  • TTL dropped to 60s at least 48 hours ahead
  • Weighted records: 5 percent, then 50, then all
  • Old endpoints kept serving for days, not minutes
  • Installed apps pin hostnames longer than any resolver does

Bottleneck 02

Cache warming

A cold edge on cutover day turns every request into a miss. The origin sees full audience load instead of catalogue churn, and the first viewers of the new platform get the worst experience of the entire migration.

  • Warmed against the real access distribution, not the catalogue
  • Manifests plus the opening segments — join time is decided there
  • Head of the library only; the tail can miss and nobody notices
  • Hit ratio watched to steady state before weight moves

Bottleneck 03

Database syncing

Two platforms cannot both be authoritative for a subscription. One side owns the writes and the other reconciles against it, and the direction only flips once, at a moment chosen in advance.

  • Renewal dates, trials and coupon state reconciled row by row
  • Payment tokens are usually vaulted at the processor and cannot be exported
  • So either a merchant-side migration or a re-authorisation flow, decided first
  • Playback positions moved last, in bulk, with a stated staleness window

Settle the payment-token path before anyone sets a date

Card details live in the processor's vault, bound to a merchant account, and a great many processors will not hand them to a different merchant. That leaves two options: a processor-side merchant migration, which is paperwork with a lead time, or asking every subscriber to re-authorise, which is churn. Both are survivable. Discovering which one applies in week six is not.

Process

The order that works

Seven steps, in the order they are executed. Everything before step five is reversible by doing nothing; everything from step five is reversible by a rehearsed action.

01

Control plane initialisation

One Terraform root with both providers, remote state, secrets in the vault, and the DNS zone brought under management with its TTL already lowered. Nothing viewer-facing exists yet.

02

Edge node provisioning

Nodes stood up at the exchange, TLS terminated, the token public key distributed, origin routes and health checks in place. Each node is verified in isolation before any of them is in a resolver's answer.

03

Origin seeding

The library copied onto owned storage and checksummed against the source. Asset identifiers are preserved rather than reissued, which is what keeps deep links and app bookmarks alive through the move.

04

Cache warming

The head of the catalogue pulled through the new edge — manifests and opening segments first — until the hit ratio is at steady state. This happens while the old platform still serves every viewer.

05

Weighted delivery cutover

Traffic moved by DNS weight in stages, with the old platform still authoritative for state. This is where most of the cost saving arrives and it is reversible by returning the weight.

06

State reconciliation

Subscriptions, entitlements and positions synchronised and compared until the two ledgers agree, discrepancy by discrepancy. The old platform is still the one that writes.

07

Authority cutover

Writes move to the new platform at an agreed moment. The old estate stays reachable and warm until the numbers have been boring for long enough to stop looking at them.

Every step has a tested rollback

A rollback plan that has never been executed is a paragraph, not a plan. Each stage above is reversed once in rehearsal before it is performed for real — including the cutover.

Questions

The things people ask first

How long does a migration take?

The technical work is usually measured in weeks. The timeline is normally set by the contract you are leaving and by how long you want the parallel period to run before you trust the new numbers.

Will viewers notice?

The intent is that the only thing they notice is that it did not break. Delivery moves first and is reversible in DNS; state moves after it has been reconciled twice.

What if our current vendor will not export cleanly?

That is common and it is planned for. Where an export is incomplete, state is rebuilt from the sources of truth that remain — payment provider records, application logs and the catalogue itself.

Show us what you are on

The current vendor, the contract end date, catalogue size and subscriber count. That is enough to say whether the migration is a quarter or a weekend.