О важности подтверждения управляющих команд на примере Делимобиля

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


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

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

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

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


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

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

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

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

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

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

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


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

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

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

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

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

    История


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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



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

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


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

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

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

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

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


    Что делать?




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

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

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

    Похожие публикации

    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 26

      +3

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


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


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

        0

        Говорят, они стали гораздо лучше в последние полгода-год. И в плане надёжности связи и работы телематики (начало/завершение аренды) и в плане состояния машин (в целом чистые и не битые). Конкуренция с Яндексом идёт на пользу, явно.
        Я сам, правда, начал активно ими пользоваться только в последний месяц и пока полёт нормальный — был всего один эпизод с Fiat 500, который не с первой попытки понял, что я уже поставил селектор коробки в D (странная машина — там надо делать наоборот) и не давал завершать аренду.

        +4
        1) Проблема с сетью могла бы решиться если бы сделали операции по смс в качестве резервных. 2g связь есть даже в самых унылых местах. Мало того, это решило бы вопрос с трекингом авто когда оно уезжает непонятно куда вне зоны сети и не может сообщить о себе по интернету.
        2) В местах скопления авто (а так же подземных парковках) могли бы решить вопрос вкрячиванием там вай-фай роутера и доработкой авто вай-фай модулем. Не так что бы нерешаемая проблема.
        2.а) Если бы авто мог подключаться к любой вайфай сети, то это тоже бы изрядно помогло — с телефоном можно встать в точку приема и раздать вайфай, что бы авто зацепился и сработал.
        3) Не очень понятно почему не сделают оффлайн ключи. Шифрование, пин-код. Авто появляясь в зоне приема могло бы сгружать инфу об арендаторах. Угон? Ну так и сейчас могут угнать, угонять с ключами или без — вряд ли особо большая разница.
        p.s.: Делали в 2012 систему отслеживания для грузоперевозческой компании, решение с смс было самым надежным, посылается смс — возвращаются данные «что где почему», работало даже в самых диких е-нях. Сейчас наверное покрытие стало лучше, но тем не менее.
          +1
          эксплуатируем системы пожарных сигнализаций с смс сообщениями и смс тоже не является сообщением с гарантированной доставкой, хотя и лучше чем gprs edge, эти даже при полной шкале чаще не работают, чем работают.
            0
            1) Проблема с СМС в том, что они легко подделываются :(. Как и прямой звонок, из за распространения ip-телефонии.
            2) Проблема решаемая, но требует разработки и вложения денег в каждую машину и в каждую проблемную точку. При этом радиус действия WiFi в лучшем случае сотня метров. Тогда уж проще пикосоту ставить, она куда универсальнее.
            2a) То есть вы предлагаете упросить задачу MITM для взломщика наличием удобного прокси для сниффера? :-D
              0
              Wi-Fi бесполезен. Тем более возможность цепляться к любой AP — это дырка, вернее дырища в безопасности.
              Отличная, кстати, тема для сниффа траффика и разных инъекций на сервер.
              2a) То есть вы предлагаете упросить задачу MITM для взломщика наличием удобного прокси для сниффера? :-D
              crazylh Crazyvlad mikelavr vpn же есть, да и ssl в концов приемлимо надежен.

              1) Проблема с СМС в том, что они легко подделываются :(. Как и прямой звонок, из за распространения ip-телефонии.
              Так просто подписывать смс надо. 160 знаков вполне достаточно для команды и 256 битовой подписи.
                0
                В вопросе «быстренько поднять VPN/SSL» вы неявно подразумеваете наличие на борту автомобиля некоей аппаратуры с операционной системой, например линуксом. С очень высокой вероятностью это не так. Скорее всего там и TCP/IP только внутри модема типа SIM800, а управляющий микропроцессор без ОС в принципе.
                  0
                  Какая-то аппаратура там несомненно стоит, до кучи она вшита в автомобиль (открытие дверей, зажигание, стартер, видеокамера вроде там есть). Она несомненно должна работать через какое-то сетевое оборудование, сомневаемся что там не модульная система в этом контексте. Вот это сетевое оборудование — даже если оно не умеет впн/ссл (вообще странно, хттп умеет а хттпс нет?), то достаточно заменить его на имеющее впн (любой простой роутер).
                    0
                    любой простой не подойдет, нужен -40 +50, смысл от него, если он вырубится в -10
              0

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


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

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


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

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

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

                0
                Нужен резервный канал не через второй модем, а через камеру или микрофон в бортовом компьютере и телефон пользователя. Сервер подписывает команды, передает на телефон пользователя, они кодируются или в QR код, или в последовательность тонов с избыточным кодированием для устойчивости к шумам. Бортовой компьютер принимает команду, расшифровывает, проверяет подпись сервера и запускает команду в действие.
                  0
                  Если вы как-то получили QR-код, стоя рядом с машиной, очевидно по телефону, то и машина должна суметь тоже самое. В конце концов оборудование в машине не обязано быть компактным, можно и антенну по солиднее поставить. А оператора сотовой связи можно и динамически менять в сложных случаях, как в роуминге, без использования двух модемов. Выйдет подороже, но можно договориться.
                  +2
                  Однако на проектирование и разработку надёжной системы могут потребоваться месяц, а то и годы. К сожалению, не все эффективные менеджеры это понимают.
                  Думаю, что это понимают все, кроме клинически тупых менеджеров, которых я бы боялся встретить на улице. Но будет ли условный менеджер, тимлид, программист получать премии и повышения, если будет постоянно тормозить «развитие» сервиса, «выкатывание фич», «тестирование идей»? Да, условный проект деградирует (или сразу таким родился), но все скачут и выступают в эффективном цирке, получают премии, а потом уходят на новый проект, так как этот умер. Боюсь, что проблема глобальная: ровно до тех пор, пока все участники проектов будут получать премии и бонусы за скорость, а не за качество — мы будем видеть кучу подобных базовых проблем.
                    –1
                    Не знаю работает ли автор в этом каршеринге. Но извините хочется воскликнуть!
                    «Вы только что открытки для себя тему промышленной автоматизации и робот техники!». И уж как цинично не звучало «Вы не слышали про такое понятие как обратная связь?»
                    Хотя скорее всего у каршеринга в штате куча креативных программистов, но нет ни одного специалиста по автоматизации производства или робототехники.
                      0
                      В Делимобиле у вас начнется поездка.

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

                      У Яндекса тоже. Вот только нажал открыть машину, она включила музыку, а машина не открылась, но 30 сек на звонок и общение и всё открыли.
                        0
                        > — Тогда нужно дождаться механика. 1-1.5 часа.

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

                          Можно не ждать. Но вот машина в какой-то момент может отвиснуть и оказаться в режиме аренды открытой. Умников, проверяющих каршеринговые машины на предмет открытости да готовности хватает — поедут кататься за ваш счёт и нарушать правила под вашим именем (и нет, статья за угон их не пугает)

                            0
                            Да, но разве обращения в поддержку не должно быть в этом случае достаточно? Вы им сообщаете о неисправности и с этого момента дальнейшая судьба машины вас не должна волновать.
                              +1

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

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

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

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

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

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

                                0

                                У Яндекс.Авто отдельная сим-карта для связи (вдобавок к двум основным, стоящим в телематическом блоке). И Яндекс.Авто часто тупит сам по себе — не включается или сеть не ловит, зато вот с началом/завершением аренды у Яндекса почти никогда проблем нет

                                0

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

                                  0

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


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

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

                                Самое читаемое