Migrations - The Hardest Actual Problem in Computer Science • Matt Ranney • YOW! 2022
Крутое выступление про миграции Matt Ranney, Principal Engineer из DoorDash. Последние пару лет он занимается большой миграцией в DoorDash и готов поделиться своими мыслями. Мэт поднимает вопрос того, что миграции - это сложно и никто не хочет этим заниматься. Все предпочитают работать в greenfield. Дальше он пробегается по следующим вопросам
- Что такое миграции?
- Почему они сложны?
- Рассказывает про миграцию в DoorDash (объясняя почему она важна)
- Делиться "секретом" как делать изменения на системе, что должна работать все время (always-on) - здесь он рассказывает про подход dual write
- Какие проблемы возможны при этом подходе (auto-increment keys, что делать если системы при dual-write выдают разные ответы, что делать при транзакциях)
- Как люди приходят к использованию шаренной базы данных для нового и старого сервиса (и как это потом бывает больно распутывать)
- Дальше он делится советами о том, как сделать миграции проще
- Продолжает рассказом о том, как хорошие абстракции помогают в этом
А завершается рассказ следующими выводами о том, почему миграции так сложны
- Все создают свой тулинг для миграций
- Сложно обосновать инвестиции в хорошие абстракции по сравнению с продуктовыми фичами
- Существует культурное предубеждение против преждевременной оптимизации (что приводит часто к тактическому программированию)
- Выученная беспомощность в отношении сложных миграций
- Крутые инженеры не вдохновлены идеей миграций - они считают, что это может плохо повлиять на их карьеру или просто не так интересно
- Часто людей, занимающихся миграциями, не вознаграждают за их достижения
P.S. Как-то десять лет назад у меня был похожий проект про миграцию старой системы на новые рельсы, куда я пришел в качестве лида. Этот проект длился больше года до переключения на новое решение, а потом мы новое решение еще полгода допиливали напильником и только потом вышли на стабильное создание новых фичей. Поэтому я очень хорошо понимаю тезисы автора, а про свой опыт потом тоже напишу статейку:)
#SoftwareDevelopment #SoftwareArchitecture #Conference #SystemDesign