Автономность в первую очередь

http://blog.hood.ie/2013/11/say-hello-to-offline-first/
  • Перевод
image

Перед вами перевод заметки «Встречайте Offline First». Некоторые мысли из неё мне показались интересными, да и в целом тренд является положительным – коротко говоря, группа энтузиастов решила устроить коллоквиум, посвящённый проблемам оптимизации мобильных приложений для работы в оффлайне (то есть – автономно, без покрытия сети).

Форма регистрации – offlinefirst.org

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

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

image

Обычно мы относимся к данной проблеме довольно оптимистично, считая, что в будущем покрытие и пропускная способность сети будут постепенно расти. Однако наш недавний опыт показал, что такие суждения попросту наивны. Проблемы нагрузки сети, переменного качества покрытия, наличие зон с отсутствием покрытия, слабые сигналы (wi-fi, например) и другие проблемы, проявляющие себя во время путешествий – всё это будет существовать почти всегда.

Географию не переделаешь, как и архитектуру. Путешественники попадают под двойной удар: мало того, что в транспорте успешного покрытия не сыщешь (метро, высокоскоростные поезда, самолёты), так ещё и вымогательские цены за роуминг от ОпСоСов – приходится носить с собой коллекцию сим-карт, как будто вы Агент 007. И это всё с западно-европейской точки зрения.

Товарищ Gregor провёл последние 6 недель путешествуя через Африку на AfricaHackTrip, а мы в свою очередь имели возможность поговорить с людьми со всех концов света на мероприятии Mozfest в Лондоне. Здесь, как и во многих других случаях, мы заметили серьёзную озабоченность вопросами использования мобильных приложений без покрытия сети – люди горели желанием иметь лучшую поддержку автономного режима, как в веб-приложениях, так и нативных.

МЫ НЕ МОЖЕМ ПРОДОЛЖАТЬ СОЗДАВАТЬ ПК-ПОДОБНЫЕ ПРИЛОЖЕНИЯ, ПОЛАГАЯСЬ НА ПОСТОЯНСТВО И СКОРОСТЬ КАНАЛА СВЯЗИ, КОГДА ВРЕМЕННОЕ ОТКЛЮЧЕНИЕ ОТ СЕТИ ИЛИ МАЛАЯ ПРОПУСКНАЯ СПОСОБНОСТЬ СЧИТАЮТСЯ ПРОБЛЕМОЙ И ТРАКТУЮТСЯ КАК ОШИБКА.


Мобильные сети попросту не могут обеспечить такой же уровень качества и стабильности, уже давно пора было начать адаптироваться к такой реальности. Это как если бы разрабатывать приложение «в первую очередь для мобильных устройств», но с учётом такого положения дел – имеет место быть разработка «в первую очередь для автономности». Под автономным режимом мы подразумеваем не только специальный план действий на случай возникновения ошибок, но и фундаментально более гибкий и отказоустойчивый путь дизайна приложений.

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

image

Это буквально новый рубеж, за которым находится неизведанное, полное интересных проблем и невообразимых частных случаев. В других сферах дизайна приложений мы обладаем наследием паттернов UX/UI, которые можем с лёгкостью применить. Но описанная нами «автономия приложений» – самая настоящая terra incognita.

АВТОНОМНОСТЬ СТАЛА РЕАЛЬНОСТЬЮ


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

  • Должно ли приложение уведомлять человека о текущем состоянии подключения? Касается ли его эта информация? Если да, то каким образом лучше всего?
  • Можем ли мы давать пользователям надежду, что приложение корректно запомнило своё состояние, и что никакие данные не будут потеряны, вне зависимости от состояния сети?
  • Как сообщить пользователю, что он может продолжать работать с приложением в автономном режиме, и что данные, введённые пользователем на данном этапе будут корректно отправлены/обработаны в будущем?
  • Как интерфейс должен отображать все те изменения, что произошли с момента последнего выхода в сеть? Что делать с удалёнными объектамии и так далее
  • Как сделать так, чтобы неминуемое разрешение конфликта было максимально безболезненным и интуитивным для пользователя?
  • Как насчёт преждевременной загрузки некоторых данных, которые, по мнению программы, могут пригодиться пользователю в автономном режиме?
  • Какие метрики использовать для принятия решений о механизме преждевременной загрузки?

Конечно, на самом деле вопросов намного больше. Нам нужно было с чего-нибудь начать и после того как мы провели наш семинар на Mozfest – «Offline First Application Design», стало ясно, в каком направлении продолжить движение. Пред нами встала целая новая парадигма, которую мы готовы оседлать. Мы хотим помочь пользователями hood.ie создавать надёжные, где-угодно-работающие приложения, причём не только с технической точки зрения, но и с новыми паттернами и методами UX и UI. Вы можете присоединиться к обсуждению на offlinefirst.org.

АБЗАЦ ОТ АВТОРА ПЕРЕВОДА


На мой взгляд, темы актуальнее не найти. Неделю назад приобрёл смартфон и уехал за город – в 20км от Москвы остался лишь EDGE, а по приезде на место (40км) канал перекрылся окончательно. Бываю там на протяжении 5 лет подряд и за этот период у MTS с покрытием в том районе не изменилось ничего, несмотря на мои вопросы к службе поддержки. Сеть есть, интернета – нет, даже если заплатить (или заплакать). В принципе, я не собирался ничего делать с телефоном, когда рядом есть ноутбук и мегафон-модем с идеальным 3G, но есть одно но. Скорость у MTS-EDGE есть – это около 3-5кбайт/с, её хватает для проверки почты и так далее. Но через такой канал отправить фотографию в тот же Instagram невозможно. Программа не знает, что я готов ждать весь день. Она шлёт первые 50кбайт на скорости 3кбайт/с и затем выдаёт «Upload Failed». Интереснее всего дела обстояли с поддержкой Twitter в операционке WP7.5 год назад – там ошибка не выдавалась, но и продолжать загрузку при появлении коннекта система не собиралась, бесконечно показывая мнимый progress-bar. Возвращаясь к идеальному 3G от Мегафона замечу, что в районе м. Семёновская днём сеть настолько перегружена, что интернета там можно дождаться лишь ночью, не смотря на покрытие и факт наличия 3G.
~~~~~

А какие у вас найдутся невесёлые истории? Пишите в комментариях, соберём российский набор.
Замечания по переводу принимаются в личку.
Поделиться публикацией
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама
Комментарии 12
  • 0
    Скорость у MTS-EDGE есть – это около 3-5кбайт/с, её хватает для проверки почты и так далее. Но через такой канал отправить фотографию в тот же Instagram невозможно.


    Который год использую Мотив-EDGE, всё собираюсь перейти на нечто более скоростное. Ну так вот, скорость там немногим больше, но её хватает и фотографию в твиттер отправить. Просто не нужно отправлять гигантский оригинал, можно пожать и отправить фоточку размером 800x600 или около того — для просмотра на экране вполне хватит.

    И меня кстати радует работа того же твиттера под андроидом. Не удалось отправить твит? Кидает в локальные черновики, можно потом отправить таки. Плюс если закачка не идёт — бесконечного прогресс-бара нет.
    • 0
      Нет, в Москве (например) MTS-EDGE работает нормально. У меня аномалия именно за городом в конкретной области возле г. Чехова – там сеть ловит, EDGE есть, а скорость 3-5кбайт/с, как у GPRS… Только во времена GPRS все приложения умели терпеть.Фотография 5 в мбайт на таких скоростях будет заливаться 20 минут, вовсе не обязательно пережимать.
      • 0
        Просто, по-моему, этой опции многим клиентам не хватает, приходится запускать внешние утилиты.

        Да, можно подождать 20 минут. А зачем? На экране телефона или монитора сверх-разрешения не нужны, если пережать размер и качество, фото будет весить 100-300 килобайт. Время загрузки упадёт более чем в 10 раз, разница на глаз будет не заметна.

        И таймауты, да, многим приложениям стоило бы подкрутить, полностью солидарен.
    • 0
      Немного странно кстати звучит фраза "Нам нужно было с чего-нибудь начать и наш семинар на Mпрояснил для нас всё.". Т.е., они не знали, с чего начать, а потом сами же провели для себя семинар и сами всё поняли. Хммм.
      • +1
        There’s more, of course, but we have to start somewhere. Our Mozfest session on Offline First Application Design has made this abundantly clear to us.

        Я понял так, что они устроили какой-то интерактив на Mozfest и получили кучу полезного фидбэка, заодно и сами поняли, в каком направлении двигаться. Если ткнуть по ссылке, там примерное содержание их session. Я перефразирую, хорошо.
      • +3
        Мы у себя реализовали автономный режим в кассовых приложениях на Silverlight и Android. Будучи онлайн приложения периодически синхронизируют базу товаров (сразу — всё целиком, после — инкрементные изменения).
        При отсутствии связи с сервером приложения предлагают перейти в оффлайн-режим, в котором всё то же самое, только используется локальная база товаров.
        После восстановления связи с сервером выполняется синхронизация продаж, выполненных в оффлайн-режиме.
        Особых проблем при реализации не возникло, главное правильно построить структуру кешируемых данных и аккуратно обработать различные исключительные ситуации при смене состояния соединения.
        • +1
          Из жизни.

          На прошлой неделе участники замечательной выставки Integrated Systems Russia в Экспоцентре (Москва) обнаружили отсутствие свободного доступа к Wi-Fi. Некоторые стенды, требующие подключения к Сети, работали не так, как хотелось бы.

          Отечественные разработчики замечательной системы компьютерного зрения оказались как без рук: «У меня и в мыслях не было купить модем для связи по сотовым сетям. В Экспоцентре нет Wi-Fi — вот этого я никак не ожидал.»
          • +2
            Использую старенькую Нокию с набором локальных приложений (в соновном карты, читалки, игры) и знать не знаю ваших проблем со связью. Сразу оговорюсь, что почту с мобильника не читаю, и фоток никуда не пощу. От перехода на современный телефон отталкивает именно обязательная привязка сервисов к онлайну. Скоро и звонить наверное нельзя будет без наличия связи с офицером ФСБ, курирующим мой телефон :(
            • 0
              От перехода на современный телефон отталкивает именно обязательная привязка сервисов к онлайну.

              В реальности для игр, карт и читалки можно вполне можно жить без онлайна.
              Насчет карт не уверен, сам использую 2Gis, но там есть не все города.

              Речь в данном случае скорее шла о приложениях, которые могли бы работать и оффлайн, но разработчики на такую возможность забили.
              • 0
                У меня сейчас Нокия с их оффлайновыми картами, полёт нормальный. До этого был виндафон с Томтомом.

                Можно же и гибридные решения применять, как с пробками на картах. Например, рейтинги ресторанов подгружать только при доступности сети. Так же можно применять умное кеширование.
                • 0
                  В качестве оффлайн-карт попробуйте MapsWithMe. Они основаны на OpenStreetMap, и там есть весь мир.
              • +1
                Новый виток эволюции программного обеспечения? Это правильно и не может не радовать.

                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.