Sara runs platform at a UK B2B media company. 28 EC2 instances. Traffic spikes 15× on breaking news. The AWS bill ran £14.2K a month, sized for a peak that arrived for minutes and was paid for around the clock.
Serverless migration for the bill that tracks usage. not headcount.
We move UK SaaS and product teams off long-running EC2 / VMs onto AWS Lambda + Fargate + EventBridge + Step Functions — per-request billing, auto-scale from zero, cold-start and observability handled.
You don’t need to leave the cloud. You need to leave the version that’s costing you growth.
Always-on EC2 is sized for the spike and paid for 24/7. Serverless bills per request and scales from zero. We’ll be honest at audit about what should move and what stays on Fargate or EC2.
“The next breaking-news spike hit and the booking page didn’t flinch. The bill dropped by more than half.”
4
Production serverless migrations shipped since 2019.
0∞
Auto-scale from zero to thousands per second, no capacity planning.
0
Customer-facing outages across our 2025 cutovers.
Sara’s fleet was sized for the breaking-news spike. She paid for it every hour.
Auto-scaling lagged the news cycle by 8 minutes. SSH access was a security-audit finding. Patching took two days a month. One breaking-news spike took the booking page down for 19 minutes because the scaler couldn’t keep up with the request rate.
Twelve-week serverless migration. API surface to API Gateway + Lambda. Long-running search and transcode kept on Fargate. Database to Aurora Serverless v2. EventBridge for async, Step Functions for orchestration. Next spike: zero downtime. Bill dropped to £5.8K a month. This page is for the founder or CTO who has decided the migration is happening, and wants it to land without taking the business down.
Four phases
No mystery box. Each phase is fixed-scope, fixed-price, and ends in a written deliverable you can show your board. You decide whether to continue at every boundary.
Migration audit
Two senior engineers read your VM estate, data and infra. Output: a 20-30 page pack with risk matrix, target architecture, data plan, rollback plan and a fixed migration quote.
Plan + parallel build
We build the serverless target in parallel. Your VMs keep running. Data-migration dry runs, integrations rebuilt, dual-write or shadow-read set up so traffic can route safely. No customer-facing change yet.
Cutover
A planned window, often a weekend. Dual-run, shadow-read, then flip the canonical write path. Old system stays read-only for 30 days. The rollback is rehearsed and reversible.
Stabilise + decommission
We monitor, fix what only production traffic surfaces, hand over to your team or our retainer, and decommission the old estate on a schedule you sign off. Nothing’s deleted until you say so.
The stack we migrate you to.
We default to AWS serverless and the MERN + Python runtimes. We’re comfortable on GCP, Azure, Cloudflare, Vercel and Fly.io where your team has constraints or a relationship.
The default serverless target
AWS serverlessMigration-specific tooling
reach when neededObservability + the safety net
AWS-defaultSix risks. How we close each one before cutover.
We don’t pretend migrations are safe. We make each risk legible and mitigated, in writing, before a single line of production code changes.
Should everything be serverless?
No. Persistent WebSockets, long batch jobs, GPU work and predictable always-on traffic often stay on Fargate or savings-plan EC2. We assess each workload at audit.
Cold starts and latency
Lambda cold starts run 100-800ms on Node and Python. Provisioned concurrency, SnapStart, slim deps and Graviton bring this into single digits where the path needs it.
Idempotency on at-least-once events
Lambda + EventBridge + SQS is at-least-once. Every handler is made idempotent, with idempotency keys, dedupe, a dead-letter queue and an audit log at the boundary.
Data + connection pooling
DynamoDB for high-scale simple access. Aurora Serverless v2 (Postgres) for relational and reporting. RDS Proxy pools connections between Lambda and RDS.
Observability without SSH
Serverless without tracing is debugging blind. AWS X-Ray, Datadog APM, structured logs and correlation IDs run through every request from day one.
The cost-crossover cliff
Serverless wins at low-to-medium concurrency. At very high steady-state, savings-plan EC2 wins. We model the crossover and recommend a hybrid where the curve flips.
28 EC2 instances
to Lambda + Fargate, in numbers
Twelve-week migration. API surface to API Gateway + Lambda. Search and transcode kept on Fargate. Database to Aurora Serverless v2. EventBridge for async, Step Functions for orchestration, CloudFront + Lambda@Edge for the storefront. The next breaking-news spike held with zero downtime.
The AWS bill
Breaking-news spike
The team
Three ways to start. Audit, sprint, then retainer.
Pick the shape that fits and Mohit will send your real number inside 24 hours.
5-day migration audit
Two senior engineers read your always-on estate, data and integrations. We map the migration, write the risk matrix, quote the sprint.
- 5-day senior audit
- 20-30 page audit pack
- Risk matrix + rollback plan
- £8,000 fixed (GBP)
Serverless migration sprint
Parallel build, dry-run data migration, planned cutover, post-cutover stabilisation, then decommission. 8 to 16 weeks by estate size.
- Lambda + Fargate + serverless data
- Two senior engineers
- 30-day walk-away both ways
- From £35,000 fixed (GBP)
Post-migration retainer
One day a week of senior engineering for three to six months. New surface area, performance work, integrations, your team gets unblocked.
- One senior day a week
- Performance + new surface area
- Your team trained on the new stack
- From £5,000 / month (GBP)
“The next breaking-news spike hit and the booking page didn’t flinch. The bill dropped by more than half. The team got two days a week back.”
— Sara, Platform Lead, UK B2B MediaWhat CTOs actually ask on the audit call
Direct answers, no marketing varnish. Tap any question to open it.
Should everything be serverless?
No, and we’ll say so at audit. Persistent WebSockets, long batch, GPU work and predictable always-on traffic often stay on Fargate or savings-plan EC2. Most clients end up serverless for 60-80% of the workload, containers or EC2 for the rest.
Should everything be serverless?
What about cold starts?
Lambda cold starts run 100-800ms for Node and Python with slim deps. Provisioned concurrency, SnapStart and ARM Graviton bring this into single digits where it matters. We measure it on your real traffic shape, not a benchmark.
What about cold starts?
DynamoDB or Aurora Serverless v2?
DynamoDB for high-scale, predictable access patterns and low-latency reads. Aurora Serverless v2 (Postgres) for relational data, reporting and ORM compatibility. Often a hybrid. We model the data per-workload during the audit.
DynamoDB or Aurora Serverless v2?
Can the migration take the business down?
We design against it. We build the serverless target in parallel while your VMs keep running, dual-run and shadow-read, then flip the canonical write path in a planned window. The old system stays read-only for 30 days, the rollback is rehearsed.
Can the migration take the business down?
How do we know you won’t disappear?
30-day walk-away both ways. The audit is £8K fixed and stands alone, you don’t have to continue. UK VAT registered, listed on Companies House, shipping since 2019. You’re never more than a phase at risk, and the audit pack is yours regardless.
How do we know you won’t disappear?

The surface you hand over.
serverless migration, in context — the dashboards, flows and components your team actually ships, reviews and maintains.
Five lines. That’s it.
Tell us the current estate (traffic, data size, integrations), why you want to migrate, and the deadline you’re working to. Mohit replies inside 24 hours with availability and the next 5-day audit slot.
- < 24h
A personal reply.
Yes, no, or the deciding question. Straight to your inbox.
- Week 1
The 5-day audit.
Risk matrix, target architecture, data plan, rollback plan, fixed quote.
- Cutover
Holds in the window.
Dual-run, flip the write path, old estate read-only for 30 days.