ФорумРазработкаУстановка и администрирование ПОВебсервер → Deploy and Maintenance mode

Deploy and Maintenance mode

  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 20 июня 2016 г. 6:42

    Challenge

    Вопрос больше теоретический чем о каких-то конкретных инструментах.

    Все хотят обновляться с нулевым временем простоя. В простейшем случае мы можем выложить новую версию в новую папку, переключить симлинк и рестартовать веб-сервер. Но может помешать миграция базы, точнее "деструктивная" миграция базы, когда старая и новая версия системы не могут работать с одной структурой. Если мы попытаемся подготовить новую структуру пока реальный сайт продолжает работать, мы потеряем последние изменения. То есть останавливать сайт полюбому придётся.

    Итого два вопроса:

    • пытаетесь ли вы как-то обозначать и по разному обрабатывать релизы требующие остановки и не требующие? а может у вас не бывает несовместимых миграций? или вы делаете паузу в любом случае?
    • когда происходит пауза, ставите ли вы статус 503 Service Unavailable? если да, то как?
    ιιlllιlllι унц-унц
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 20 июня 2016 г. 10:38, спустя 3 часа 56 минут 8 секунд

    пытаетесь ли вы как-то обозначать и по разному обрабатывать релизы требующие остановки и не требующие? а может у вас не бывает несовместимых миграций? или вы делаете паузу в любом случае?

    я знаю только 1 несовместимую миграцию - "drop database xxx;" :D

    когда происходит пауза, ставите ли вы статус 503 Service Unavailable? если да, то как?

    @artoodetoo, ну вообще можно несколько бекендов использовать и обновлять их по очереди, тогда вообще будет zero downtime

    Спустя 60 сек.

    если возникла потребность вообще дропнуть таблицу какую то, то делать это в 2 этапа и все - обновляешь код который больше ее не использует, а потом в следующей итерации дропаешь таблицу.

    Сапожник без сапог
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 20 июня 2016 г. 10:56, спустя 18 минут 11 секунд

    @phpdude насчет поэтапности да, это хорошее правило. про бекенды - не стоит сразу загромождать задачу лишними сущностями.

    Upgrade with Zero Downtime. LOL

    http: //insanejapanesesquirrel.tumblr.com/post/61499555365/upgrade-with-zero-downtime

    The realities of “zero-downtime”

    http: //nodejsreactions.tumblr.com/post/74954744333/the-realities-of-zero-downtime

    ιιlllιlllι унц-унц
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 20 июня 2016 г. 16:34, спустя 5 часов 38 минут 4 секунды

    @artoodetoo, вообще все зависит от языка, тот же апликейшен сервер рубей или питона или явы ты не стартанешь моментально, ибо это не набор скриптов (хотя и в ноде тоже апликейшен сервер архитектурно). Это в пхп можно с симлинковать и думать что ты герой, с другими языками не так просто ))

    Но опять же можно паралельно запустить приложения и просто переключать порты на балансере. На мой взгляд тут вопрос в другом - нахуй это вообще надо. Ты в гугль устроился? 20-30 секунд даунтайма при старте нового кода это не страшно для 99.99999% проектов

    Сапожник без сапог
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 20 июня 2016 г. 17:26, спустя 51 минуту 27 секунд

    Надо сделать красиво — это достаточный повод, п.м.с.м.

    Вот что меня умиляет на форумах, никто не отвечает непосредственно на вопрос.
    У меня нет статистики по 100% интернетов. Я понимаю только, что большинство тупо заливает по FTP наживую и не парится. Обычно прокатывает. Но в те десятки секунд или пары минут, что сайт висит в ёбаном неконсистентном состоянии, могут произойти ошибки записи в базу, а поисковые боты могут отметить какие-то адреса недоступными. Это говно, а я люблю чтобы было красиво.

    Вот просто ответь: у тебя есть сайт(ы), которым ты сам настраиваешь деплой. Ты блокируешь как-то работу на эти условные ~20 сек или тебе проще верить, что за это время ничего плохого не случится?

    ιιlllιlllι унц-унц
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 20 июня 2016 г. 17:37, спустя 11 минут 18 секунд

    Вот просто ответь: у тебя есть сайт(ы), которым ты сам настраиваешь деплой. Ты блокируешь как-то работу на эти условные ~20 сек или тебе проще верить, что за это время ничего плохого не случится?

    @artoodetoo, у меня все разработаные мной проекты в состоянии бета/релиза и тп работают через балансеры, балансеры пишут 503 если есть какая то ошибка в связи (как ты выше отметил), последнее время я проекты деплою вообще через докер, там еще красивее - скачиваешь новый образ проекта и рестартуешь все что с ним связано, это запускается моментально (в силу многослойной aufs и архитектуры докера), ну а дальше идет потеря только на бутстрап проекта сколько атм он секунд занимает не ебу )))

    через докер решение сильно похоже на zero downtime

    Спустя 43 сек.

    фтп для деплоя не использую последние 8 лет наверное. гит/гит + пост хендлеры.

    Спустя 38 сек.

    ну правда на одном доисторическом проекте клиента с cakephp использую фтп ибо потому что влом чото там перенастраивать )) да и к фтп я уже как т примастился нормально заливать только изменения и у него не критично

    Сапожник без сапог
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 20 июня 2016 г. 18:10, спустя 32 минуты 48 секунд

    okay

    ιιlllιlllι унц-унц
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 20 июня 2016 г. 18:11, спустя 1 минуту 8 секунд

    okay

    @artoodetoo, я так ждал от тебя ответа, а ты на отъябись ответил. негоже)

    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!