
Dmitry
28.05.2016
10:32:11
не троллинг, просто интересно. ни разу не видел

Sergey
28.05.2016
10:34:16
Откат на предыдущую версию - это всегда боль, по-моему большинство разработчиков даже не думаю об этом при разработке.
Не применительно к докеру

Dmitry
28.05.2016
10:35:24
ну я так понимаю, все заавтоматизировано аж до не могу, но в этом случае все равно не забудь docker-run manage.py migrate ручками и блаблабла?

Google

Dmitry
28.05.2016
10:36:49
как это сделает alembic, господи прости, примерно понятно

Sergey
28.05.2016
10:38:07
Я не знаю - у меня нет докера в проде)

Danil
28.05.2016
10:38:33
как вариант можно в качестве entry point указать скрипт, который будет запускать миграции, собирать статику, а потом uwsgi поднимать

Dmitry
28.05.2016
10:38:42
можно просто в vars сунуть номер нужной миграции и при проходе плейбука свериться и накатить/откатить

Danil
28.05.2016
10:38:43
хотя может это и так себе идея )

Dmitry
28.05.2016
10:38:54
да идея норм, главное, чтобы скрипт у остальных бэкендов базу из-под ног не выбил, сдаунгрейдив, пока они еще работают :)

Sergey
28.05.2016
10:41:24

Dmitry
28.05.2016
10:41:59
то есть вся крутая докер машинерия сваливается обратно в "не забудь руками"

Sergey
28.05.2016
10:45:08
Ну со своим lxc и deb-пакетами я тоже буду сидеть и руками базу откатывать, разницы тут не много

Dmitry
28.05.2016
10:46:14
ну да, мы и так это делаем
но нам рассказывают кулстори, как у них все крутяшеньки, одной командой обновились, что-то пошло не так, одной командой, не приходя в сознание спросонья откатились обратно :)

Google

Alex
28.05.2016
10:48:46
Выключай на балансере

Dmitry
28.05.2016
10:49:20
это чит :)
вторую базу поднимать, ну

Alexander
28.05.2016
10:49:55
вообще лучше делать так, чтобы базу можно было бы не мигрировать назад

Danil
28.05.2016
10:50:02
тогда обеспечивай обратную совместимость в рамках одной

Dmitry
28.05.2016
10:50:06
на нее запускать миграции, стартовать, проверять, пошло не так, возвращаем sql демон со старой базой :)
это все хоть с докером, хоть без докера

Alexander
28.05.2016
10:50:56
то есть можно включать фичи не сразу, а потом

Dmitry
28.05.2016
10:51:00
я это все к чему. мир устроен сложнее, чем в "простых примерах", так что когда запеваешь песню про "все просто" и "одной командой", фитиль стоит иногда прикрутить.
вот и все :)

Alexander
28.05.2016
10:51:04
и по условию
например, включать фичи не всем пользователям
а только 10%
если что-то не так - отключаем им
ну то есть можно писать код так, чтобы новые фичи поступали не сразу после деплоя нового контейнера, а когда менеджер в админке разрешит

Dmitry
28.05.2016
10:52:00
фичи тут причем

Sergey
28.05.2016
10:52:01

Alexander
28.05.2016
10:52:25
просто такой подход минимизирует ущерб

Dmitry
28.05.2016
10:52:36
вообще не про фичи речь

Google

Alexander
28.05.2016
10:53:00
ну я к тому, что если баг в новой фиче - просто не включайте её, без отката, и всё

Dmitry
28.05.2016
10:53:50
(глубоко вздыхает)

Alexander
28.05.2016
10:54:25
и еще - если версии идут часто, частый деплой, то новая структура базы данных вполне может работать со старой версией кода
то есть можно в большинстве случаев писать так, чтобы новый код работал как с новой структурой базы, так и со старой
но если и это не получается - да, миграции, их можно откатывать

Dmitry
28.05.2016
10:55:40
(глубоко вздыхает еще раз)

Alexander
28.05.2016
10:55:43
но тут могут потеряться данные

Dmitry
28.05.2016
10:56:01
спасибо, достаточно. букварь вслух можно не читать.

Alexander
28.05.2016
10:56:30
так а про что вопрос-то?
про то, как это руками не делать? при старте контейнера есть скрипт, который в ENTRYPOINT, вы туда можете что угодно написать, в том числе код для отката миграций
и там же можно предусмотреть вариант, что делать, если нормально оно не откатилось

Vsevolod
28.05.2016
10:59:31
мда)

Alexander
28.05.2016
11:02:33
дешевле всего - просто по ночам обновлять, останавливаем трафик на сервис, показываем заглушку "на облсуживании", делаем бэкап базы, перезапускаем сервис, делаем миграции, если фейл - восстанавливаемся из бэкапа, запускаем сервис снова, снова пускаем трафик
ну, будет оффлайн 10 минут с сообщением "Технические работы", подождут, ишь, какие господа...

Dmitry
28.05.2016
11:03:02
по ночам в каком часовом поясе? (стикер хитрой жопы)

Alexander
28.05.2016
11:03:26
это нужно смотреть на статистику посещаемости
когда людей меньше заходит - тогда и ночь))

Dmitry
28.05.2016
11:04:26
нужно повесить перед собой табличку "докер - не серебряная пуля, одной командой не справишься" и читать ее каждый день. когда захочется написать PR-херню в телеграме :)

Alexander
28.05.2016
11:04:53
так а причем тут докер?
докер позволяет сделать билд и протестировать его локально, протестировать обновление то же.. и это будет проще, чем тестировать обновление сервера

Google

Sergey
28.05.2016
11:05:50
дешевле всего - просто по ночам обновлять, останавливаем трафик на сервис, показываем заглушку "на облсуживании", делаем бэкап базы, перезапускаем сервис, делаем миграции, если фейл - восстанавливаемся из бэкапа, запускаем сервис снова, снова пускаем трафик
В игровых проектах вроде MMO так и делают, в вебе что-то не видел пока. Будет странно если, например, Яндекс или Гугл на 10 минут повесят заглушку "на обслуживании, призодите позже".

Alexander
28.05.2016
11:06:29
а не обязательно всё сразу обновлять

Dmitry
28.05.2016
11:06:41
"XXX позволяет сделать билд и протестировать его локально, протестировать обновление то же.. и это будет проще, чем тестировать обновление ..."

Alexander
28.05.2016
11:06:48
просто иметь две версии сервиса и писать так, чтобы оно не глючило

Alex
28.05.2016
11:07:01

Vsevolod
28.05.2016
11:08:03
ну теперь всё стало просто :)

Alexander
28.05.2016
11:08:22
можно фичи от миграции базы отделить

Alex
28.05.2016
11:08:39
Да просто плохой код не пишите

Alexander
28.05.2016
11:08:40
то есть включать фичи, только когда все серверы обновили базу

Admin
ERROR: S client not available

Alex
28.05.2016
11:08:44
А пишите хороший

Sergey
28.05.2016
11:08:56

Vsevolod
28.05.2016
11:08:58
точняк. Писать плохо - плохо, надо писать хорошо чтобы было хорошо

Dmitry
28.05.2016
11:09:05
чтобы писать хороший код, а не писать плохой, всем докер, посоны
(с)

Vsevolod
28.05.2016
11:09:15
и вообще не надо делать всё что плохо, надо делать всё что хорошо

Alex
28.05.2016
11:09:23
Нормально делай - нормально будет

Sergey
28.05.2016
11:09:34
Простите)

Dmitry
28.05.2016
11:09:40
да-да. чтобы ровно всё. чотенько!

Google

Alexander
28.05.2016
11:09:51
что такое изменение структуры базы данных? это или создание чего-то нового или изменение чего-то существующего или удаление чего-то старого
почему оно вообще должно глючить?

Alex
28.05.2016
11:10:14
Индекс не навесил
Вот и пипенций настал

Alexander
28.05.2016
11:10:22
можно не менять существующее и не удалять старое

Dmitry
28.05.2016
11:10:23
слушай, ты кроме вордпресса ченить запускал? :)

Alexander
28.05.2016
11:10:30
а при добавлении нового глюков не будет

Alex
28.05.2016
11:10:35

Alexander
28.05.2016
11:10:50
ну, меньше вероятность

Vsevolod
28.05.2016
11:10:54

Alex
28.05.2016
11:11:09
Ну - меньше вероятность, да

Alexander
28.05.2016
11:12:07
то есть у нас есть версия 1.0, работает на продакшене, потом делаем версию 1.1, добавляем еще табличек, которые будем использовать в версии 1.2

Тефтеля
28.05.2016
11:12:34
а потом в версии 1.3 удаляем все и делаем по-другому

Vsevolod
28.05.2016
11:12:42
ох

Dmitry
28.05.2016
11:12:47
ненене, дэвид блейн. давай старые таблички менять,

Vsevolod
28.05.2016
11:13:16
давай у тебя будет база платежей
каждая запись один платёж

Dmitry
28.05.2016
11:13:29
вот есть у тебя господи прости ORM, программисты добавили в модель новое поле, сразу поехала миграция с alter table на добавление колонки

Vsevolod
28.05.2016
11:13:56

Dmitry
28.05.2016
11:14:15
ты ненакатил базу, обновляешь первый бэкенд, он сразу падает, потому что не может найти колонку
чешешь репу, накатываешь базу, новый бэкенд начинает работать, старый ломается, потому что в этом релизе была еще одна миграция, не скажу какая :)