Fintech App Revolution
A retail banking client was running a decade-old transaction application that had grown one feature at a time. It still worked, but every release was slower than the last and customers were abandoning payments midway. We rebuilt it around a modern service architecture without ever taking the existing system offline.
- Sector
- Retail and commercial banking
- Engagement
- Platform re-architecture and migration
- Timeline
- 7 months, delivered in four phases
The challenge
- A single monolithic codebase meant one slow query could hold up every other request on the server, including balance checks and payment confirmations.
- Transaction confirmations took several seconds at peak hours, and customers were closing the app before the screen settled — the drop-off showed clearly in the funnel.
- Business logic was duplicated across the web app, the mobile API and a batch reporting job, so every rule change had to be made in three places and tested in three places.
- There was no safe way to release. Deployments went out at night, by hand, and a rollback meant restoring a database snapshot.
Our approach
Each step below was finished and verified before the next one started, so the risk stayed contained at every stage.
Audit before touching anything
We spent the first three weeks instrumenting the running system rather than rewriting it. Request tracing showed that four endpoints accounted for most of the latency, and that the slowest of them was re-reading the same account data up to eleven times per request. That audit decided the order of everything that followed.
Carve out the transaction core first
Instead of a full rewrite, we extracted the transaction engine into its own service with a clearly defined contract. The old monolith kept serving traffic and simply called the new service, so the riskiest part of the system could be proved in production before anything else moved.
One source of truth for business rules
The duplicated fee, limit and eligibility rules were collapsed into a single rules module consumed by every caller. A rule change now happens once, and the test suite covers it once.
Caching with correctness guarantees
Read-heavy account and reference data moved behind Redis with explicit invalidation tied to write events, rather than time-based expiry. This removed the repeated reads the audit found without ever serving a stale balance.
Migrate users in controlled waves
Traffic moved to the new stack a percentage at a time, with the old path kept warm as an instant fallback. No migration window, no maintenance page, and a rollback that took seconds rather than a database restore.
What we delivered
- A standalone transaction service with its own deployment pipeline and monitoring
- A shared business-rules module replacing three divergent copies
- An event-driven cache layer for account and reference data
- Automated CI/CD with staged rollout and one-click rollback
- End-to-end request tracing and alerting on latency, not just on errors
- A documented runbook so the client's own team owns the platform
Technology used
- React
- Node.js
- PostgreSQL
- Redis
- Docker
- AWS
The results
40%
Increase in user retention
Measured over the two quarters following the final migration wave, against the same quarters a year earlier.
Sub-second
Transaction confirmation
Peak-hour confirmations settled from several seconds to consistently under one second at the 95th percentile.
3 → 1
Copies of business logic
Fee, limit and eligibility rules now live in one module, cutting the testing surface for every rule change.
Zero
Downtime during migration
Traffic shifted in waves with the previous path kept live, so customers never saw a maintenance window.
The client's team now ships to the transaction platform during business hours, which was unthinkable at the start of the engagement. The slower-moving parts of the old monolith were left deliberately untouched: they were not costing anything, and replacing working code for its own sake would have added risk without adding value.
Have a similar problem?
Tell us what is slowing you down and we will tell you honestly whether it needs a rebuild or a much smaller fix.
