Перейти к содержанию

Stripe Subscriptions migration

Раздел 05

Тип материала — корпоративный кейс F02. Исторический срез относится к описанию в публикации.

Компания и задача

Перенести подписки из Customer records в отдельную таблицу при продолжающейся работе сервиса.

Первичный источник и период

2017-02-02. Проверено 2026-11-03. Stripe Online migrations at scale

Подтверждённые компоненты, технологии и числа

FACT — Stripe описывает dual writing, постепенное копирование через обновления, backfill и переключение чтения, затем запись только в новый формат и удаление старого. Для поиска объектов использовался offline pipeline Hadoop.

Поток данных

INFERENCE — реконструкция по публикации. Стрелки описывают логическую связь компонентов.

flowchart LR
 A["Customer writes"] --> B["Old and new subscription layouts"]
 B --> C["Shadow reads and cutover"]

Отказы и границы гарантий

FACT — Stripe использовал Scalding для поиска недостающих записей и повторил поиск после backfill. Scientist сравнивал результаты старого и нового чтения в production до переключения. Этапы backfill и переключения чтения

INFERENCE — Раздельно проверить, что новый writer покрывает новые данные, backfill покрывает старые, а новый reader сохраняет семантику. Сравнение чтений до переключения снижает риск неправильного результата.

Нераскрытые детали

UNKNOWN — атомарность dual writes, граница транзакции, долговременный rollback и гарантии CDC. Описана миграция модели подписок, а не перенос банковского ledger.

Переносимость решения

INFERENCE — Использовать staged migration, наблюдать нагрузку и не удалять старую модель до подтверждения перехода.