在线进行大规模的数据迁移
工程师团队在构建软件时会面临一个普遍的挑战:为了支持整洁的抽象和愈加复杂的特性,他们通常需要重新设计所使用的数据模型。在生产环境中,这或许就意味着要迁移百万级的活跃对象和重构数千行的代码。
Stripe 的用户期望我们的接口是可用并且一致的。这就意味着当我们在做迁移的时候需要格外的小心:我们需要明确储存在系统中每一个对象的含义及值,同时也需要确保 Stripe 在任何时候都能为用户提供服务。
在这篇文章中,我们将会说明我们是如何对数以百万的订阅对象进行安全的大规模迁移。
为什么迁移是困难的?
规模
Stripe 有数亿的订阅对象。运行一次涉及所有这些对象的大规模迁移对于我们的生产数据库来说意味着大量的工作。
假设每个对象的迁移都要耗费 1 秒钟:以这个线性增长的方式计算,迁移数亿的对象要花掉超过三年的时间。