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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

История

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Что делать?

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

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

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

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

66
4 комментария

Я может быть только один такой, и техподдержка делимобиля на самом деле классная, а мне просто не везет каждый раз, НО:

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

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

3. Просил вернуть деньги, которые с меня сняли за то время, пока я искал машину которой не было в назначенном месте (обошел 3 уровня парковки АШАНа по несколько раз, чуть не сошел с ума) - "да да, окей", и нифига не вернули. Дело не в деньгах, а в простом отношении.

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

Для сравнения, на Белке и Яндексе техподдержка отвечает МАКСИМАЛЬНО оперативно, по делу.

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

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

3
Ответить

Самая долгая поддержка в мире. Сбои, которые испытывал Делимобиль на днях, решаются просто, достаточно не делать ставки на одного оператора связи (билайн у них или кто, не помню), все сбои происходили по вине оператора, когда невозможно было закрыть автомобиль и завершить аренду. Изловчиться и механическим путем закрыть машину можно было, но вот бабло с карты списывали поминутно на протяжении всего глюка (дня сбоя). Dear Delimobil: Просто продублируйте мозг тачилы еще одной "симкой"  от другого оператора на случай ЧП и влепите  в приложуху доп. кнопку работающей от этого второго канала связи, типа: "закрыть авто если весь мир рухнул и все пропало".

Ответить

Подскажите пожалуйста на данный момент зона парковки делимобиля есть в сколково? Я что то не увидел и в приложении не отображается

Ответить

Они увезли все машины и убрали зоны парковки через пару дней после статьи. На данный момент из каршерингов в Сколково есть YouDrive и BelkaCar

Ответить