При проектировании систем Интернета вещей, таких как каршеринг, очень важно учитывать возможные сбои.
В противном случае вас ждет критическая нагрузка на техподдержку и недовольство клиентов.
Парковка «Сколковская»
Сбои случаются повсюду.
Но в мире Интернета вещей это постоянное состояние.
При работе с мобильными сетями и оборудованием сбои случаются гораздо чаще, чем при веб- или мобильной разработке.
Надежность системы страдает по разным причинам, включая сжатые сроки и ограниченный бюджет на разработку.
Но Интернет вещей может работать, если возможные сбои не отрицают, а принимают и пытаются решить проблему.
Если интересно, есть интересная статья о методах повышения отказоустойчивости.
статья , а теперь ближе к делу.
Вы открываете машину с телефона, что может пойти не так?
Действия могут зависеть от архитектуры системы, но в целом сценарий выглядит следующим образом: Вы нажимаете кнопку «Забронировать».Команда отправляется на сервер.
Она может это сделать, а может и не сделать.
Вы нажимаете кнопку «Открыть машину».
Команда отправляется на сервер.
Она может это сделать, а может и не сделать.
Сервер отправляет команду машине.
Она может это сделать, а может и не сделать.
Бортовое устройство пытается выполнить команду.
Это может или не может быть успешным.
Вы нажимаете кнопку «Начать поездку».
Команда отправляется на сервер.
Она может это сделать, а может и не сделать.
Сервер отправляет команду машине.
Она может это сделать, а может и не сделать.
Бортовое устройство пытается выполнить команду.
Это может или не может быть успешным.
Да, это поверхностно и на самом деле проблем безумное количество, но давайте сейчас рассмотрим только эти.
Предположим, что все команды дошли и все исполнительные механизмы сработали – успех! Возможна демонстрация инвесторам.
Что-то пошло не так
Но что будет, если, например, команда «Открыть двери» не доходит до автомобиля? Во-первых, сервер должен знать об этом.Для синхронизации реального состояния машины с сервером обычно используется подтверждение команды (ACK).
А также подтверждение выполнения команды.
Ведь «команда не доставлена» и «команда не выполнена» — это разные события и подразумевают разные попытки решения.
Во-вторых (если проблему не удалось решить, например повторной отправкой команды), нужно сообщить об ошибке пользователю, а не переводить его в состояние «путешествовать».
Ваше путешествие начнется в Делимобиле.
И разговор с оператором техподдержки.
История
Я работаю в Сколково.Из-за сложностей с транспортной доступностью я, как и многие коллеги, каждый день добирался на работу и обратно на каршеринге.
Но 3 дня назад связь на парковке ухудшилась.
Почему в Инновационном центре проблемы с мобильной связью – другой вопрос, но эта ситуация породила интересную проблему: пользователи Делимобиля, забронировавшие автомобиль, фактически оказались в ловушке.
Холодным вечером 24 сентября я возвращался домой.
Я заказал машину и приехал к ней.
Я нажал «Начать осмотр», но двери не открылись.
- Ну да ладно, наверное, опять сбой связи.
Я возьму еще один.
Тем более, что их так много! Нажал «Завершить аренду» — «Вы находитесь вне зоны парковки» Звоню в поддержку и описываю ситуацию.
Оператор пытается открыть двери.
Отказ.
Музыка.
Двери открываются.
Спасибо.
— Вероятно, серверы вышли из строя.
Хорошо, идем.
Нажимаю «Начать поездку» — приложение начинает отсчитывать деньги.
Не запускается.
Звоню в поддержку и описываю ситуацию.
Оператор пытается разрешить запуск двигателя.
Отказ.
«Нет связи с машиной».
- Хорошо, закроем вручную.
Опустите окно, выйдите, нажмите кнопку центрального замка, закройте окно.
Стакан не опускается.
Судя по всему, без команды с сервера машина не включает зажигание.
Но связи нет. — Тогда тебе нужно дождаться механика.
1-1,5 часа.
- Но здесь холодно.
Вокруг машин Делимобиля по-прежнему ходят 3-4 человека с телефонами.
Может, меха им уже прислали.
- И все.
Спасибо.
Я поеду на маршрутке.
Как другие решают эту проблему
Во-первых, если нет связи с машиной, возможно, ее не стоит отображать на карте.Во-вторых, если бы сервер знал, что команда на открытие дверей не выполнена, он бы не переключил меня в режим аренды.
Это значит, что вместо 40 минут на морозе и дополнительной нагрузки на техподдержку я бы увидел просто сообщение об ошибке.
В-третьих, можно создать резервный канал связи - второй модем другого оператора (у меня на телефоне был интернет).
Или Bluetooth, как это сделано в Белке и YouDrive. (Возможно этот вариант не для Делимобиля, так как увеличит затраты на разработку и поддержку, а ДМ самый дешевый среди массовых)
Тем временем Делимобиль накапливает автомобили, «закрытые вручную», и перегружает свою техническую поддержку из-за отсутствия подтверждения доставки управляющих команд. При этом автомобили без связи видны на карте и доступны для бронирования.
Это более широкая проблема
Я уверен, что инженеры Делимобиля молодцы.Они решили множество проблем.
Серьезно.
Ведь помимо самого оборудования и системы необходимо также выстроить процессы ввода в эксплуатацию, обслуживания, вывода из эксплуатации и т. д. Часто эти процессы требуют еще и разработки аппаратного и программного обеспечения.
Но почему тогда могла возникнуть такая ситуация? На мой взгляд, есть две вероятные причины.
Первая вероятная проблема — разные подрядчики по приложению, серверам и оборудованию без качественного проектирования всей системы на высшем уровне.
Возможно, все хорошо выполнили свою работу, но в общей архитектуре есть проблемы.
Вторая вероятная причина присуща многим проектам в принципе.
Дело в том, что сделать прототип для демонстрации (например, инвесторам) несложно.
Это может занять несколько недель или даже дней.
Однако проектирование и разработка надежной системы может занять месяцы или даже годы.
К сожалению, не все эффективные менеджеры это понимают. Часто эффективное управление может требовать новых функций, которые, по их мнению, увеличат доход компании.
При этом они не видят никакого коммерческого потенциала в повышении надежности.
Что делать?
На местном уровне «Делимобилю» необходимо решить проблему с парковкой в «Сколково».
Там много машин простаивает. Вряд ли им удастся договориться с мобильным оператором об улучшении качества связи.
Поэтому мне кажется наиболее вероятным исходом будет то, что они запретят там парковку и перевезут машины в Москву самостоятельно.
Печальный итог :( Думаете, эту проблему можно решить по-другому? Во всем мире технические менеджеры должны выступать за повышение надежности.
По крайней мере в Делимобиле у них сейчас спор.
P.S. Отдельное спасибо измученным ребятам из техподдержки.
Они вежливы и пытаются решить проблему.
Теги: #iot #программирование #Интернет вещей #проектирование и рефакторинг #надежность #каршеринг #ACK
-
Mobilestyx Консалтинг И Ит-Решения
19 Oct, 24 -
Китай
19 Oct, 24 -
Хабрапочтоглюк.
19 Oct, 24 -
Что Нового В Работе С Исключениями В C++11
19 Oct, 24 -
Анимацию С 25-М Кадром Нашли В Спаме
19 Oct, 24 -
Московский Гтуг - Перезагрузка
19 Oct, 24