migrationsLinkuber.com ↗

Migrating Functionality Between Large-scale Production Systems Seamlessly

Uber moved authorization holds out of eight services by shadowing live traffic and diffing every call. Validation found dozens of mismatches before 0.25% of users moved.

Dark folds of cloth lit along their edges by a soft ember glow

Why we picked it · the editor's summary

Uber's payments team pulled authorization-hold logic out of eight backend microservices into one Auth service, at 14 million trips a day. They forwarded production traffic to the new service on separate queues, cached the payment providers' real responses in Redis, and checked that the new system built identical requests and state transitions. A few days of validation turned up dozens of mismatches; once it ran clean, users moved from 0.25% to 1%, 5% and 100%, one payment method at a time. The 2019 post ends with two rules worth copying: make the final cutover quick with no way back, because a rollback option gets misused until the migration never finishes, and fund the old debt as part of the project.

Read on uber.com ↗

Comments

Loading comments…