Авторы Нихал Гонсалвес и Джей Морроу

Возможно, вы знаете MOIA по нашим привлекательным автомобилям, которые едут по Гамбургу, или по нашим приложениям, но что скрывается за кулисами в MOIA Engineering?

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

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

Наш код в дороге: подключенный, полностью электрический MOIA + 6

MOIA + 6 лежит в основе нашего опыта мобильности. Чтобы запустить службу динамического обмена поездками, мы оснащаем наши автомобили встроенным компьютером, модулем удаленной разблокировки, блоком телеметрии, Wi-Fi-роутером и двумя подключенными дисплеями: информационным экраном для пассажиров и планшетом для навигации.

Каждый MOIA + 6 обменивается данными с нашей облачной платформой несколько раз в секунду через MQTT (AWS IoT) для отправки информации по более чем сотне различных показателей, включая данные датчиков, данные геолокации и автомобильную телеметрию (вплоть до угла нажатия педали газа!). Наши серверные системы постоянно сообщают автомобилю о новых пассажирах, маршрутах и ​​актуальном времени в пути для всех пунктов посадки и высадки. Мы также используем IoT Greengrass для запуска небольшого фрагмента AWS в самих транспортных средствах, обеспечивая бесперебойную работу даже при кратковременных сбоях в подключении, например, при проезде через туннель Deichtor-Tunnel в Гамбурге.

В облаке

В облаке спрятаны наши специализированные микросервисы, работающие в различных вычислительных средах AWS, отслеживающие каждый поступающий запрос транспортного средства и пассажира, объединение пассажиров, маршрутизация транспортных средств и оснащение операционных групп MOIA инструментами, необходимыми для запуска отличный, высокодоступный сервис. Они построены с использованием различных технологий, которые лучше всего подходят для выполняемой работы. Для вычислений мы используем Kubernetes на AWS EC2, AWS Fargate и AWS Lambda, в зависимости от рабочей нагрузки. Мы склонны придерживаться полностью управляемых сервисов AWS по умолчанию (включая DynamoDB, RDS, IoT, Kinesis, S3, API Gateway и Greengrass), делая исключения, когда это имеет смысл. Каждая команда выбирает язык программирования, подходящий для задачи, в основном (но не ограничиваясь) Scala, Kotlin и Golang.

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

Диспетчеризация и динамическая маршрутизация

Dispatching отслеживает весь наш автопарк, часто общается с нашими автомобилями и (как следует из названия) отправляет лучший автомобиль каждому клиенту. Он точно знает, где находится каждое транспортное средство, каких пассажиров нужно поднять и высадить, и когда транспортному средству необходимо вернуться в центр (для подзарядки или для своевременного завершения смены водителя). Диспетчеризация активно использует AWS IoT для получения актуальных данных телеметрии.

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

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

Бронирование поездки, цены и оплата

Если вы когда-либо использовали MOIA, это две службы, которые работают напрямую с приложением, чтобы сделать вашу поездку возможной. С того момента, как вы нажмете кнопку «Получить предложение», программа Trip Booking берет на себя ответственность и координирует сагу всего, что должно быть собрано в течение нескольких секунд, чтобы гарантировать вам отличную поездку.

Trip Booking связывается со всеми другими внутренними службами, чтобы предоставить вам подходящий маршрут, извлекает динамически рассчитываемую цену из Pricing (в зависимости от расстояния, дня недели и времени) и возвращает расчетное время прибытия и ваши остановки для посадки и высадки. . Как только вы переходите к заказу, он подтверждает действительность вашего метода оплаты с помощью Payment и подтверждает ваше MOIA с помощью Dispatching.

Команда по платежам работает с нашими поставщиками платежных услуг, чтобы обеспечить беспроблемный процесс оплаты независимо от того, с помощью чего клиенты выбирают оплату: кредитной или дебетовой картой, Apple Pay, Google Pay или PayPal. Он также соответствует различным требованиям соответствия, таким как EU PSD2 и SCA (Strong Customer Authentication).

Операции - Управление автопарком и персоналом

Команды концентраторов работают круглосуточно, чтобы оптимизировать поставки, поддерживая транспортные средства в отличной форме, заряженными и готовыми к работе, и оптимальным образом планируя смены водителей. Команды управления автопарком и персоналом предоставляют технологии, позволяющие сделать эти процессы эффективными, отслеживая различные рабочие процессы, такие как управление зоной обслуживания и остановкой сети, планирование смен, отчетность о повреждениях, управление оборудованием транспортного средства, проверки TÜV, техническое обслуживание и все остальное. Это доступно через интерфейс React и комбинацию REST и GraphQL.

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

И все остальное

В одном сообщении блога не хватает места, чтобы рассказать обо всем, что заставляет MOIA работать, включая мобильные интерфейсы (которые используют Kotlin, Swift и Dart - Flutter), DevOps, обработку инцидентов и множество небольших сервисов, которые уже прошли не упоминается.

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

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