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


Парковка «Сколковская»?

Сбои случаются везде. Но в мире «Интернета вещей» это перманентное состояние. При работе с мобильными сетями и аппаратным обеспечением сбои происходят намного чаще, чем в вебе или мобильной разработке.

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

Вы открываете машину с телефона, что может пойти не так?


Этапы могут зависеть от архитектуры системы, но сценарий в общем случае такой:

Вы нажимаете кнопку «Забронировать». Посылается команда на сервер. Она может дойти или не дойти.

Вы нажимаете кнопку «Открыть машину». Посылается команда на сервер. Она может дойти или не дойти. Сервер посылает команду машине. Она может дойти или не дойти. Бортовое устройство пытается исполнить команду. Она может выполниться или не выполниться.

Вы нажимаете кнопку «Начать поездку». Посылается команда на сервер. Она может дойти или не дойти. Сервер посылает команду машине. Она может дойти или не дойти. Бортовое устройство пытается исполнить команду. Она может выполниться или не выполниться.

Да, это поверхностно и на самом деле проблем безумное количество, но рассмотрим сейчас только эти.

Предположим, что все команды дошли и все актуаторы сработали — успех! Можно демонстрировать инвесторам.

Что-то пошло не так


Но что будет, если, например, до машины не дойдет команда «Открыть двери»?

Во-первых, об этом должен узнать сервер. Для того, чтобы реальное состояние машины было синхронизировано с сервером обычно используют подтверждение приёма команды (ACK). И еще подтверждение исполнения команды. Ведь «команда не доставлена» и «команда не исполнена» — разные события и подразумевают разные попытки решения.

Во-вторых, (если проблему не удалось решить например повторной отправкой команды) нужно сообщить об ошибке пользователю и не переводить его в состояние «поездка».

В Делимобиле у вас начнется поездка.

И разговор с оператором техподдержки.

История


Я работаю в Сколково. Из-за сложностей с транспортной доступностью, как и многие коллеги, каждый день ездил на работу и обратно на каршеринге. Но 3 дня назад в зоне парковки ухудшилась связь. Почему в Инновационном центре есть проблемы с мобильной связью — другой вопрос, но эта ситуация породила интересную проблему: пользователи Делимобиля, забронировавшие машину фактически оказывались в ловушке.

Холодным вечером 24 сентября я возвращался домой. Забронировал машину и пришел к ней.

Нажал «Начать осмотр», но двери не открылись.

— Ну ладно, наверное опять сбой связи. Возьму другую. Тем более, вон их как много!

Нажал «Завершить аренду» — «Ты находишься вне зоны парковки»

Звоню в поддержку, описываю ситуацию. Оператор пытается открыть двери. Неудача. Музыка. Двери открываются. Спасибо.

— Наверное, серваки сбоили. Ладно, поехали. Жму «Начать поездку» — приложение начало отсчитывать деньги.

Не заводится.

Звоню в поддержку, описываю ситуацию. Оператор пытается разрешить запуск двигателя. Неудача. «Нет связи с машиной».

— Ладно, давайте закроем вручную. Опустите стекло, выйдите, нажмите кнопку центрального замка, закройте стекло.

Стекло не опускается. Видимо, без команды от сервера машина не включает зажигание. А связи то нет.

— Тогда нужно дождаться механика. 1-1.5 часа.

— Но тут холодно. Тут еще 3-4 человека вокруг машин Делимобиля с телефонами ходят. Может к ним уже выслали меха…

<двери машины внезапно закрылись>

— А, все. Спасибо. Поеду на маршрутке.

Как решают эту проблему другие


Во-первых, если с машиной связи нет, возможно, её не стоит отображать на карте.

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

В-третьих, можно создать резервный канал связи — второй модем с другим оператором (На телефоне то у меня интернет был). Или Bluetooth, как это сделано в Белке и YouDrive. (Возможно, этот вариант не для Делимобиля, так как увеличит затраты на разработку и поддержку, а ДМ самый дешевый среди массовых)



А пока Делимобиль копит машины «закрытые вручную » и нагружает свою техподдержку из-за отсутствия подтверждения о доставке управляющих команд. При этом машины без связи видны на карте и доступны для бронирования.

Это более широкая проблема


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

Но почему тогда могла возникнуть такая ситуация? На мой взгляд, вероятные причины две.

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

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

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


Что делать?




Локально, Делимобилю нужно решать проблему с парковкой в Сколково. Там простаивают очень много машин. Маловероятно, что им удастся договориться с сотовым оператором об улучшении качества связи. Поэтому, самым вероятным мне кажется исход, при котором они запретят там парковаться и своими силами перевезут машины в Москву. Грустный исход :( Как вы думаете, можно решить эту проблему по-другому?

Глобально — технические менеджеры должны отстаивать необходимость увеличения надежности. По крайней мере в Делимобиле теперь у них есть аргумент.

P.S. Отдельное спасибо замученным ребятам из техподдержки. Они вежливые и стараются решить проблему.

Комментарии (21)


  1. iroln
    25.09.2019 00:40
    +1

    Когда-то отказался от использования "Делимобиля" во многом благодаря техническим проблемам с их сервисом (а так же из-за особенностей поведения их руководства и проблем с репутацией компании). Качество приложения (особенно первого, до последнего крупного обновления) просто не выдерживало никакой критики. Постоянные сбои: "не открывается/не закрывается", неактуальное состояние и геопозиция автомобилей в приложении и ещё ворох проблем с вылетами, ошибками и UI/UX-трешем. Дозвониться до техподдержки тоже было проблематично.


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


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


  1. edogs
    25.09.2019 00:42
    +3

    1) Проблема с сетью могла бы решиться если бы сделали операции по смс в качестве резервных. 2g связь есть даже в самых унылых местах. Мало того, это решило бы вопрос с трекингом авто когда оно уезжает непонятно куда вне зоны сети и не может сообщить о себе по интернету.
    2) В местах скопления авто (а так же подземных парковках) могли бы решить вопрос вкрячиванием там вай-фай роутера и доработкой авто вай-фай модулем. Не так что бы нерешаемая проблема.
    2.а) Если бы авто мог подключаться к любой вайфай сети, то это тоже бы изрядно помогло — с телефоном можно встать в точку приема и раздать вайфай, что бы авто зацепился и сработал.
    3) Не очень понятно почему не сделают оффлайн ключи. Шифрование, пин-код. Авто появляясь в зоне приема могло бы сгружать инфу об арендаторах. Угон? Ну так и сейчас могут угнать, угонять с ключами или без — вряд ли особо большая разница.
    p.s.: Делали в 2012 систему отслеживания для грузоперевозческой компании, решение с смс было самым надежным, посылается смс — возвращаются данные «что где почему», работало даже в самых диких е-нях. Сейчас наверное покрытие стало лучше, но тем не менее.


    1. zxosa
      25.09.2019 05:06
      +1

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


    1. mikelavr
      25.09.2019 08:41

      1) Проблема с СМС в том, что они легко подделываются :(. Как и прямой звонок, из за распространения ip-телефонии.
      2) Проблема решаемая, но требует разработки и вложения денег в каждую машину и в каждую проблемную точку. При этом радиус действия WiFi в лучшем случае сотня метров. Тогда уж проще пикосоту ставить, она куда универсальнее.
      2a) То есть вы предлагаете упросить задачу MITM для взломщика наличием удобного прокси для сниффера? :-D


      1. edogs
        25.09.2019 15:00

        Wi-Fi бесполезен. Тем более возможность цепляться к любой AP — это дырка, вернее дырища в безопасности.
        Отличная, кстати, тема для сниффа траффика и разных инъекций на сервер.
        2a) То есть вы предлагаете упросить задачу MITM для взломщика наличием удобного прокси для сниффера? :-D
        crazylh Crazyvlad mikelavr vpn же есть, да и ssl в концов приемлимо надежен.

        1) Проблема с СМС в том, что они легко подделываются :(. Как и прямой звонок, из за распространения ip-телефонии.
        Так просто подписывать смс надо. 160 знаков вполне достаточно для команды и 256 битовой подписи.


        1. mikelavr
          25.09.2019 16:13

          В вопросе «быстренько поднять VPN/SSL» вы неявно подразумеваете наличие на борту автомобиля некоей аппаратуры с операционной системой, например линуксом. С очень высокой вероятностью это не так. Скорее всего там и TCP/IP только внутри модема типа SIM800, а управляющий микропроцессор без ОС в принципе.


          1. edogs
            25.09.2019 19:15

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


            1. zxosa
              26.09.2019 05:06

              любой простой не подойдет, нужен -40 +50, смысл от него, если он вырубится в -10


    1. Crazyvlad
      25.09.2019 09:41

      Хм. Идея использовать смс мягко говоря не очень:


      • смс это не онлпйн (обычно срок доставки до 2-х суток. Конечно в зависимости от настроек смсс)
      • нет гарантии доставки в принципе
      • абсолютно не безопасный…

      Wi-Fi бесполезен. Тем более возможность цепляться к любой AP — это дырка, вернее дырища в безопасности.


      Самоё правильное — вторая сим карта. Или, как правильно предложили в статье — не показывать эти машины как доступные…


    1. crazylh
      25.09.2019 11:32

      2.а) Если бы авто мог подключаться к любой вайфай сети, то это тоже бы изрядно помогло — с телефоном можно встать в точку приема и раздать вайфай, что бы авто зацепился и сработал.

      Отличная, кстати, тема для сниффа траффика и разных инъекций на сервер.


  1. miolini
    25.09.2019 02:45

    Нужен резервный канал не через второй модем, а через камеру или микрофон в бортовом компьютере и телефон пользователя. Сервер подписывает команды, передает на телефон пользователя, они кодируются или в QR код, или в последовательность тонов с избыточным кодированием для устойчивости к шумам. Бортовой компьютер принимает команду, расшифровывает, проверяет подпись сервера и запускает команду в действие.


    1. mamont80
      25.09.2019 07:19

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


  1. pyrk2142
    25.09.2019 05:38

    Однако на проектирование и разработку надёжной системы могут потребоваться месяц, а то и годы. К сожалению, не все эффективные менеджеры это понимают.
    Думаю, что это понимают все, кроме клинически тупых менеджеров, которых я бы боялся встретить на улице. Но будет ли условный менеджер, тимлид, программист получать премии и повышения, если будет постоянно тормозить «развитие» сервиса, «выкатывание фич», «тестирование идей»? Да, условный проект деградирует (или сразу таким родился), но все скачут и выступают в эффективном цирке, получают премии, а потом уходят на новый проект, так как этот умер. Боюсь, что проблема глобальная: ровно до тех пор, пока все участники проектов будут получать премии и бонусы за скорость, а не за качество — мы будем видеть кучу подобных базовых проблем.


  1. Cobolorum
    25.09.2019 09:39
    -1

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


  1. sinneren
    25.09.2019 10:54

    В Делимобиле у вас начнется поездка.

    И разговор с оператором техподдержки.

    У Яндекса тоже. Вот только нажал открыть машину, она включила музыку, а машина не открылась, но 30 сек на звонок и общение и всё открыли.


  1. akashihi
    25.09.2019 11:37

    > — Тогда нужно дождаться механика. 1-1.5 часа.

    Это вот серъёзно было? То есть приехав на какой-нибудь вокзал за 10 минут до отправления поезда по логике делимобиля надо всё бросить и ждать, пока механик соизволит приехать?


  1. AKomarov
    25.09.2019 12:30

    Актуальная статья, не далее как сегодня:

    Привет!
    Мы знаем о проблеме и уже решаем её. ?
    Мы берём на себя все расходы, связанные с этой поломкой, и вернем их вам на карту в течение 3-5 дней.
    Спасибо, что вы с нами!

    Как закрыть машину вручную рассказываем тут:
    https://support.delimobil.ru/hc/ru/articles/360033355112-Как-закрыть-машину-вручную-


  1. proton17
    25.09.2019 20:44

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


    1. iroln
      26.09.2019 00:24

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


  1. axtrace
    26.09.2019 10:53
    -1

    Бла бла бла… В итоге нажал кнопку, ничего не закрылось и вместо 2 минут требуют с меня оплатить 15 часов аренды. Ни пуша, когда ушел с точки, ни каких либо ещё уведомлений от этом не было. Все спихнули на меня, что не проверил. Короче, бумага все стерпит, пишите, как у вас там все классно, пишите


    1. iroln
      26.09.2019 12:25

      Вы вообще статью читали или сразу бросились писать этот гневный комментарий? В статье как раз речь о проблемах, а не о том, "как там всё классно".


      На счёт вашей ситуации, в приложении отображалось, что аренда завершена, вы проверяли? Лучше 5 раз перепроверить чем попасть на "15 часов аренды", учитывая какой "клиенто-ориентированный" сервис у делимобиля (да и вообще почти у всех каршерингов).