Size: a a a

2020 August 04

КГ

Константин Грачев... in PHP
Евгений Ромашкан
Обожаю когда Альберт разработку в своей студии с пхпшниками выдаёт за "серьёзную разработку" )
*достал попкорн
источник

АГ

Алексей Гевондян... in PHP
фичафлаги, не откатываться?
источник

АС

Альберт Степанцев... in PHP
вы можете писать, что угодно, Евгений
но по факту миграции - это инструмент для добавления поля "день рождения" в табличку в личном блоге
источник

ЕР

Евгений Ромашкан... in PHP
А впрочем, чтобы студентикам курсы впаривать наверное хорошая риторика)
источник

АС

Альберт Степанцев... in PHP
далее его применимость заканчивается
источник

АГ

Алексей Гевондян... in PHP
Альберт Степанцев
вы можете писать, что угодно, Евгений
но по факту миграции - это инструмент для добавления поля "день рождения" в табличку в личном блоге
не только
источник

АГ

Алексей Гевондян... in PHP
вообще, правда в том, что удалять ничего нельзя сразу. только потом, когда уже жизнь подтвердила, что "это больше не надо. и не будет надо. никогда."
источник

АГ

Алексей Гевондян... in PHP
и то если время есть на это
источник

АС

Альберт Степанцев... in PHP
Алексей Гевондян
вообще, правда в том, что удалять ничего нельзя сразу. только потом, когда уже жизнь подтвердила, что "это больше не надо. и не будет надо. никогда."
первый шаг вы сделали, отлично
источник

АС

Альберт Степанцев... in PHP
а теперь сделайте второй
переведите базу в состояние "суперпозиции", когда работает одинаково и "старый" и "новый" код
источник

АС

Альберт Степанцев... in PHP
после чего спокойно выкатывайте "новый" код
тестируйте
и ставьте задачу на "схлопывание" состояния
источник

КГ

Константин Грачев... in PHP
Альберт Степанцев
далее его применимость заканчивается
Я иногда insert чего то делаю через миграции.
Потому что миграции наказываются на 4 разные базы, в которые мне руками лезть лень)

Не осуждайте меня, я всего лишь пхпшник
источник

АГ

Алексей Гевондян... in PHP
Sergey Protko
я сча серьезно - можно накапливать подобные изменения и после того как код уже точно не использует эти штуки дропать из схемы
нашел. да, сорри за повтор.
источник

АГ

Алексей Гевондян... in PHP
возможна другая проблема: миграции изменяют данные (помимо добавлений / переименовываний / смены типа с возможностью отката без потери данных), выполняя апдейты, например... в общем надо строго следить за тем, чтобы миграция могла быть откачена так, чтобы ничего не сломалось и не потерялось. и надо соблюдать принцип "меняем только структуру. данные не трогаем". ничего не забыл?)
источник

АГ

Алексей Гевондян... in PHP
и другой вопрос, связанный с этим: как реализовать откат на старую версию так, чтобы не было даунтайма? надо сначала откатить миграции, которые есть только в новом коде, при этом система временно попадет в неработоспособное состояние. затем запустить предыдущий образ приложения. какие для этого можно использовать инструменты? kubernetes?
источник

АГ

Алексей Гевондян... in PHP
или надо миграции держать отдельно от приложения?
источник

АГ

Алексей Гевондян... in PHP
Альберт Степанцев
а теперь сделайте второй
переведите базу в состояние "суперпозиции", когда работает одинаково и "старый" и "новый" код
либо следуя этому правилу, надо обеспечить, чтобы старый код работал на базе с накаченными миграциями. тогда их откатывать не придется.
источник

АГ

Алексей Гевондян... in PHP
в общем более менее понятна стратегия, спасибо всем)
источник
2020 August 05

DE

Dmitry Eliseev in PHP
Алексей Гевондян
либо следуя этому правилу, надо обеспечить, чтобы старый код работал на базе с накаченными миграциями. тогда их откатывать не придется.
Да, делать миграции так, чтобы работал и старый код, и новый. Тогда откатывать не придётся.

Например, если надо переименовать поле, то вместо RENAME колонки мы первой миграцией делаем ADD + UPDATE и вешаем триггер для синхронизации новой колонки со старой. И теперь деплоим новый код.

В итоге старый код продолжает работать со старой колонкой, а новый уже пробует работать с новой.

А потом через неделю когда всё новое точно работает спокойно делаем DROP старого поля и триггера.
источник

АГ

Алексей Гевондян... in PHP
классно, спасибо) конечно это усложняет разработку, но в случае, когда критически важна надежность и откатываемость, это хороший подход) возможно применим когда-нибудь.
источник