В настоящее время я уточняю требования к программному обеспечению для нового проекта, который будет находиться в местах с прерывистыми сетевыми подключениями.
Поскольку в некоторых из наших офисов сетевые подключения будут прерываться. У нас будут (почти?) Все выпуски программного обеспечения, запланированные заранее.
Возможно ли, чтобы необходимые данные обновления были загружены до фактического выпуска, при этом выпуск выполняется по расписанию, даже если сервер не имеет сетевого подключения.
В настоящее время мы используем Capistrano для релизов наших основных проектов, поэтому я хотел бы продолжать использовать его, если это возможно в Capistrano.
Выпустить программное обеспечение одновременно для большого количества пользователей рискованно. Что делать, если что-то пойдет не так? Постепенное развертывание позволяет быстрее обнаруживать проблемы, и у вас будет меньше работы для восстановления после сбоев. Отсутствие надежного сетевого подключения к хостам, на которых запущено это программное обеспечение, усугубляет риск.
Между разными версиями могут быть проблемы совместимости. Такие проблемы совместимости лучше решать, если каждая версия совместима со своим непосредственным предшественником (но не обязательно более ранним). Когда задействовано несколько компонентов, может иметь значение заказ обновлений компонентов.
Но если вы решили, что новая версия готова к использованию, почему бы не развернуть ее сразу, а не ждать определенное время в будущем? Обычно основная причина ожидания - убедиться, что вы готовы справиться с любыми проблемами, которые могут появиться. Но если это цель, то автоматический выпуск, когда устройство может даже не иметь сетевого подключения, может оказаться выпуском в самый неподходящий момент.
Между временем, когда вы планируете выпуск, и временем, когда это действительно происходит, что-то может случиться. Вы можете найти ошибку, что означает, что вы хотите отменить выпуск. Вы также можете обнаружить, что люди, которые должны быть готовы оказать поддержку, не будут доступны в запланированное время, и вам придется отложить выпуск. В таких случаях отсутствие сетевого подключения может помешать вам остановить выпуск, чего в конце концов не должно происходить.
Сегодня я узнал о плагине Capistrano под названием delayed_job
, это позволяет людям выполнять задачи в любое время по вашему выбору.
Мы должны прервать наш процесс выпуска, чтобы заставить это работать, и есть небольшая часть сценариев, чтобы обойти процесс, чтобы он повторял автоматически, но в настоящее время похоже, что мы сможем использовать это, чтобы иметь клиент автоматически завершает выпуск сам ночью без подключения к сети.
Я отредактирую это и обновлю, как только внедрю решение, и, надеюсь, смогу предоставить образец кода, чтобы продемонстрировать, что я сделал.
А до тех пор я оставлю вопрос открытым, чтобы, надеюсь, увидеть, есть ли у кого-нибудь лучшие решения.