@devops_ru

Страница 230 из 4568
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 всё нужное прописано, надо просто дернуть. "вверх" - дернуть, "вниз" - дернуть, если предыдущая версия image деплоится. как делают? руками? в dockerfile?

как это сделает 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
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
а при добавлении нового глюков не будет

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 на добавление колонки

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

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

Страница 230 из 4568