Tuba Kaya

Professional

Step-by-Step Legacy Migration at Funda

Senior Engineer · Migration Lead2016–2019 · 2021
  • .NET
  • C#
  • IIS URL Rewrite
  • Microservices
  • Identity & Access Management
  • Strangler Fig Pattern

Funda is the real estate platform of the Netherlands — effectively where the whole country searches for homes, serving millions of users. When I joined, its legacy modernization effort was in crisis.

A rewrite in trouble. Six teams had set out to rewrite the legacy system on a one-year estimate. A year in, only a fraction of the whole system had actually been rebuilt, with no path to going live — the effort was heading straight for the classic big-bang dead end, and the organization was panicking.

From big-bang to step-by-step migration. I came in and replaced the all-or-nothing rewrite with an incremental migration plan that let everything built so far go live side by side with the remaining legacy system — so value shipped continuously instead of waiting on a distant, high-risk cutover. This is the Strangler Fig approach, applied at national scale.

A proxy layer the teams could drive themselves. The mechanism was a proxy layer running URL-rewrite rules, built on IIS URL Rewrite, that each team controlled: when a team was ready to ship a newly-rewritten piece of the system, they routed its traffic to the new implementation. Getting the seam right meant accounting for every surface at once — frontend, backend, scheduled jobs and mobile — so a request was handled consistently no matter how it arrived.

Safe, staged rollout to millions. Releases were staged as percentage-based rollouts: a small slice of users on the new system first, then gradually widened until all of Funda’s millions of users were served by the rewritten paths — de-risking every step and keeping a fast way back if anything misbehaved. I coordinated the migration across the teams to keep these cutovers orderly.

Hands-on across four teams. Beyond owning the migration plan, I worked as an engineer across four different teams implementing the rewrite, and built two reusable foundations the teams depended on:

  • I set up the identity framework for user management and for governing component-level rights across the system.
  • I implemented a framework that guarantees at-least-once and at-most-once processing for microservices, packaged so teams could adopt it simply by configuring it as middleware — turning delivery-guarantee correctness into a solved, reusable concern rather than a trap each service had to re-solve.

This is the work I care about most: taking a stalled, high-stakes modernization and giving it a safe, incremental path to done — without asking the business to stop.