Сьогодні ми обговорювали методи розгортання бази даних, мали кілька останніх збоїв у нашому поточному процесі та побачили ситуації, коли ми хотіли б відкотити розгортання, але стара версія програми ніколи не була протестована на новій версії база даних.
З одного боку, є розгортання в стилі міграції, де ви маєте інструкцію щодо оновлення версії та інструкцію щодо зменшення версії (будь то написана в SQL чи мовою вашого додатка), і ваш додаток знає, до якої версії потрібно дістатися.
Вони прості, і оскільки ми не будемо часто відмовлятися, розробники прагнуть простого. Однак існують ризики, коли ви додаєте поле / таблицю, і це поле заповнюється перед тим, як повернутись назад. Або ще гірше, куди ви скидаєте дані, що стосувалися попередньої версії.
З іншого боку, ми можемо розглянути питання про модернізацію, відкат, відкат вперед, де відкат не такий різкий, як у міграціях. Наприклад, оновлення може додати ненульове поле; відкат робить його змінним, так що старий додаток не хвилює; rollforward заповнює нульові поля та знову робить його ненульовим.
Це зберігає дані, але є складними як для кодування, так і для тестування (на жаль, наших автоматизованих тестів на інтеграцію, як правило, не існує, і поки ми це виправляємо, тим часом у нас є проблеми).
Чи є безпечні способи зменшити проблеми з ними? Чи є інші варіанти, які я повинен розглянути? У вас був поганий досвід, який ви хотіли б поділитися, який може позбавити мене біль пізніше?