Выбор ответа Senior Деплой и эксплуатация обновлено
Rolling update и миграции
Вопрос
При rolling update новая версия кода удаляет колонку из модели, и миграция удаляет её из базы до выкладки. Что случится?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Старые экземпляры, ещё принимающие трафик, начнут падать на этой колонке. Во время rolling update старые и новые экземпляры работают одновременно, и схема должна подходить обоим.
Варианты ответа
- Старые экземпляры, ещё принимающие трафик, начнут падать на этой колонкеправильный ответ
- Ничего: старые экземпляры выключаются раньше, чем к базе применяется миграция
- Kubernetes откатит миграцию, если readiness-проба новых подов упадёт
- Django проигнорирует отсутствующую колонку и вернёт для неё
None
Разбор
Во время rolling update старые и новые экземпляры работают одновременно, и схема должна подходить обоим. Старый код всё ещё выбирает колонку, которой нет, и получает ошибки базы. Поэтому удаление колонки делают в два релиза: сначала код перестаёт её использовать, потом отдельно удаляют её из базы. Ни Kubernetes, ни Django такие миграции не откатывают.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.