вторник, 28 мая 2013 г.

Подождите … Осталось 3 ч. 59 мин…


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

Для нас этот вопрос особенно важен, потому что мы ориентированы на кастомизированные проекты. Причем мы не просто берем конструктор, собираем, меняем настройки – вуаля, новый проект. Наши проекты новые без дураков, у каждого куча собственных фишек и индивидуальных особенностей. Соответственно, обновляются они тоже по одному, и не регулярно, а по мере пользовательской необходимости, так что, например, для OS Android нас Google Play как механизм обновления не устроит.

Проще говоря, обновления чего-нибудь для кого-нибудь – это то, чем мы занимаемся постоянно, проектов-то много. Придем с утра в офис и давай обновлять…

Не подумайте, что мы жалуемся. Вовсе нет! Курс на кастомизацию мы взяли сознательно и точно знали, на что идем. А проблему обновлений мы решили. Как? Секрет, но вам скажем.

Давным-давно, во времена Palm OS, мы решали ее очень просто. Удаленного обновления тогда не существовало, и все делалось одним-единственным способом – через программу HotSync.

Когда мы выпустили версию 3.0, мы в числе прочего поменяли и способ обновления. Сделали  в программе «Наполеон – Администратор» закладку «Обновления». Сейчас мы таким способом только лицензии подгружаем (о чем, кстати, в прошлый раз писали), а тогда эта закладочка много для чего использовалась.


Так вот. Формировали пакет со всеми данными, которые в программе поменялись, передавали, а на месте они аккуратно раскладывались. Не подменой программы, а именно обновлением самого кода программы. Сам файл весил немного, килобайт сто. Тогда еще 3G практически не было и вообще не так-то просто было что-то передать, так что маленький размер был существенным плюсом.

Мы очень собой гордились – филигранное же дело! Но потом от этого варианта пришлось отказаться, потому что Windows Mobile начал стремительно устаревать, меняться, производители его все время дорабатывали, о чем не всегда сообщали. Это создавало кучу неудобств и пользователям, и нам, всячески нарушало стройность и красоту нашей системы.

Пришлось меняться. В середине 2011 года, с выходом версии нашей программы для OS Android, мы снова взяли другой подход к обновлению. Он оказался удачным, и мы до сих пор так делаем.

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

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

Выглядит так: идем в раздел меню «О программе»…
…и нажимаем кнопку «Проверить обновления».
Если обновления есть, программа ими займется, а по окончании процесса отчитается.
Если обновлений нет, она вам об этом скажет.

Плюсы этого подхода:

- не надо иметь в виду какие-то отдельные устройства с их особенностями, загрузить файл сможет любой «Андроид»;
- файл обычно в пределах полумегабайта, в самых исключительных случаях (при очень больших обновлениях) – до мегабайта. Редко, но бывает. Но редко. Словом, при современном уровне связи вполне симпатичный размер файла;
- он отлично дополняет наш сервис баг-репорта (о котором мы писали тут). Случается ошибка (ой, не говорите про мифические программы, с которыми ошибок не случается никогда), программа отправляет нам сообщение, мы его получаем, чиним, что надо, отправляем им – и все это без участия ИТ-представителей и вообще без лишних переписок и растолковываний.

Да, не самый утонченный вариант и не самый изящный. Но утонченный у нас уже был. А сейчас мы пришли к выводу, что обновления – это не та задача, где стоит гоняться за красивыми решениями.

Гоняться надо за надежностью.

Комментариев нет: