Задержка выпуска программного обеспечения с использованием предварительно загруженных данных обновления?

В настоящее время я уточняю требования к программному обеспечению для нового проекта, который будет находиться в местах с прерывистыми сетевыми подключениями.

Поскольку некоторые из наших мест будут иметь прерывистые сетевые подключения. У нас будут (почти?) Все выпуски программного обеспечения, запланированные заранее.

Можно ли загрузить необходимые данные обновления до фактического выпуска, причем выпуск происходит по расписанию, даже если у сервера нет сетевого подключения.

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

2 ответа

Выпуск программного обеспечения одновременно для многих пользователей является рискованным. Что вы делаете, если что-то идет не так? Постепенное развертывание позволяет быстрее выявлять проблемы, и у вас будет меньше работы, чтобы оправиться от неудач. Отсутствие надежного сетевого подключения к хостам, на которых работает это программное обеспечение, усугубляет риск.

Могут быть проблемы совместимости между различными версиями. С такими проблемами совместимости лучше справляться, гарантируя, что каждая версия совместима со своим непосредственным предшественником (но не обязательно далее). Когда задействовано несколько компонентов, заказ обновлений компонентов также может иметь значение.

Но как только вы решили, что новая версия готова к использованию, почему бы не развернуть ее сразу, а не ждать определенного времени в будущем? Обычно основной причиной ожидания является то, что вы готовы решить любые проблемы, которые могут возникнуть. Но если это и есть цель, то автоматическое освобождение может произойти, когда устройство может даже не иметь сетевого подключения, может оказаться выпуском в самый неподходящий момент.

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

Сегодня я узнал о плагине Capistrano под названием delayed_jobЭто позволяет людям выполнять задачи в любое время по вашему выбору.

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

Я отредактирую это и обновлю, как только я реализовал решение и, надеюсь, смогу предоставить пример кода, чтобы продемонстрировать, что я сделал.

До тех пор я собираюсь оставить вопрос открытым, чтобы я мог надеяться увидеть, есть ли у кого-нибудь лучшие решения.

Другие вопросы по тегам