который я не уверен:
Допустим есть Service A в трех репликах, который работает с реляционкой.
Как по шагам должна выполнять миграция допустим на добавлением нового поля в схему?
При этом нужно добиться отказоустойчивости и консистентности.
Были идеи запулить нагрузку на реплику, но обычно реплика не имеет актуальных данных и нарушается консистентность
Если же лочить сервисы на запись то нарушается отказоустойчивость
Также одно из вопросов как должен произойти деплой/апдейт сервисов, чтобы они все были консистентны == отдавали одинаковые респонсы, а не так что реплика 1 возвращает респонс с новым полем, а реплика 2 нет
add column (nullable) deploy app (compatible with nullable) update data drop nullable from column deploy app (dropped compatibility with nullable)
новые поля можно возвращать, важно что бы все изменения были совместимы с предыдущими версиями. новые поля в этом плане норма.
Не постесняюсь спросить, а собес был на кого?
alter table может устроить даунтайм :)
middle/senior backend php/java/.net/node/python?
Обсуждают сегодня