FintechGoal: keep critical software running7 months
A 2013 platform modernised without a single hour of downtime
The lender’s loan-servicing platform was built in 2013 — a PHP monolith nobody wanted to touch. Releases happened once a month, at night, with the whole team on call.
- Client
- Consumer lender, Central Europe
- Their team
- CTO (owner), 5 in-house developers, compliance officer
- Our team
- Engagement lead, tech lead, 3 engineers
- Timeline
- 2-week audit · 7 months of migration · run & care since
Weekly
releases, instead of once a month
−70%
production incidents
0 h
downtime during the migration
4 mo → 5 wk
to launch a new loan product
The business goal
Launch new loan products faster than competitors and stop losing weekends to failed releases — without a risky big-bang rewrite.
Where it was
No automated tests, undocumented business rules, one person who understood the payment logic. Every release was a night-time event, and every new loan product took four months.
2013 monolith
PHP, no tests
Monthly release
at night, everyone on call
Incidents
3.2 per release
What we did
- 1Audit · 2 weeksCode, infrastructure and risks. Three critical security issues found — fixed in the first week.
- 2First module · 6 weeksThe payment schedule rebuilt as a separate service and run in parallel with the old code, comparing every result.
- 3Migration · 5 monthsModule by module behind the same API (the “strangler” approach), with tests, CI/CD and monitoring added on the way.
- 4Run & care · ongoingOn-call with agreed response times and a monthly review of releases and incidents.
What did not work
We planned to move the regulatory reporting module early. It turned out the reports depended on undocumented quirks of the old code, so it went last — after we recreated each quirk with the compliance officer.
Who did what
The client’s team
Compliance signed off every module; in-house developers paired with us and now own two services.
Our team
Architecture, migration, CI/CD and on-call.
Together
A go/no-go decision before every module switch.
Before and after
Under the hood
Strangler-fig migration behind an API gateway; new services in TypeScript/Node with Postgres; parallel-run comparison of payment schedules; CI/CD with automated tests; OpenTelemetry tracing and alerting; infrastructure as code.
Releases used to be an event. Now nobody notices them — which is exactly how it should be.