О Важности Подтверждения Команд Управления На Примере Делимобиля

При проектировании систем Интернета вещей, таких как каршеринг, очень важно учитывать возможные сбои.

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



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

Парковка «Сколковская» Сбои случаются повсюду.

Но в мире Интернета вещей это постоянное состояние.

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

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

Но Интернет вещей может работать, если возможные сбои не отрицают, а принимают и пытаются решить проблему.

Если интересно, есть интересная статья о методах повышения отказоустойчивости.

статья , а теперь ближе к делу.



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

Действия могут зависеть от архитектуры системы, но в целом сценарий выглядит следующим образом: Вы нажимаете кнопку «Забронировать».

Команда отправляется на сервер.

Она может это сделать, а может и не сделать.

Вы нажимаете кнопку «Открыть машину».

Команда отправляется на сервер.

Она может это сделать, а может и не сделать.

Сервер отправляет команду машине.

Она может это сделать, а может и не сделать.

Бортовое устройство пытается выполнить команду.

Это может или не может быть успешным.

Вы нажимаете кнопку «Начать поездку».

Команда отправляется на сервер.

Она может это сделать, а может и не сделать.

Сервер отправляет команду машине.

Она может это сделать, а может и не сделать.

Бортовое устройство пытается выполнить команду.

Это может или не может быть успешным.

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

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



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

Но что будет, если, например, команда «Открыть двери» не доходит до автомобиля? Во-первых, сервер должен знать об этом.

Для синхронизации реального состояния машины с сервером обычно используется подтверждение команды (ACK).

А также подтверждение выполнения команды.

Ведь «команда не доставлена» и «команда не выполнена» — это разные события и подразумевают разные попытки решения.

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

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

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



История

Я работаю в Сколково.

Из-за сложностей с транспортной доступностью я, как и многие коллеги, каждый день добирался на работу и обратно на каршеринге.

Но 3 дня назад связь на парковке ухудшилась.

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

Холодным вечером 24 сентября я возвращался домой.

Я заказал машину и приехал к ней.

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

- Ну да ладно, наверное, опять сбой связи.

Я возьму еще один.

Тем более, что их так много! Нажал «Завершить аренду» — «Вы находитесь вне зоны парковки» Звоню в поддержку и описываю ситуацию.

Оператор пытается открыть двери.

Отказ.

Музыка.

Двери открываются.

Спасибо.

— Вероятно, серверы вышли из строя.

Хорошо, идем.

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

Не запускается.

Звоню в поддержку и описываю ситуацию.

Оператор пытается разрешить запуск двигателя.

Отказ.

«Нет связи с машиной».

- Хорошо, закроем вручную.

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

Стакан не опускается.

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

Но связи нет. — Тогда тебе нужно дождаться механика.

1-1,5 часа.

- Но здесь холодно.

Вокруг машин Делимобиля по-прежнему ходят 3-4 человека с телефонами.

Может, меха им уже прислали.

- И все.

Спасибо.

Я поеду на маршрутке.



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

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

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

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

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

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

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

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



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

Я уверен, что инженеры Делимобиля молодцы.

Они решили множество проблем.

Серьезно.

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

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

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

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

Вторая вероятная причина присуща многим проектам в принципе.

Дело в том, что сделать прототип для демонстрации (например, инвесторам) несложно.

Это может занять несколько недель или даже дней.

Однако проектирование и разработка надежной системы может занять месяцы или даже годы.

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

При этом они не видят никакого коммерческого потенциала в повышении надежности.



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



Что делать?



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

На местном уровне «Делимобилю» необходимо решить проблему с парковкой в «Сколково».

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

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

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

По крайней мере в Делимобиле у них сейчас спор.

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

Они вежливы и пытаются решить проблему.

Теги: #iot #программирование #Интернет вещей #проектирование и рефакторинг #надежность #каршеринг #ACK

Вместе с данным постом часто просматривают: