Uber-like сервиc по вывозу мусора от Технологки
Сентябрь 2019

Uber-like сервиc по вывозу мусора

Uber-like сервиc по вывозу мусора
Направления
Один из самых больших и сложных проектов: амбициозный Uber-like стартап, который осуществляет услуги по вывозу мусора в 16 штатах США. Проект построен с применением микросервисной архитектуры на кросс-платформенных технологиях за 9 месяцев.

Uber-like приложения стали популярны в последние годы, в связи с небывалым ростом количества стартапов. Такие приложения называют поколением “Uber for X”. Такое название отсылает к одноименному приложению, которое несколько лет назад стало предоставлять инновационный сервис по заказу такси и поэтому стало очень популярным.

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

Бизнес-логика

Американская компания GoTrashy обратилась к нам в феврале 2018 года с проектом под названием GoTrashy 2.0: нам было необходимо оптимизировать и заменить существующую систему GoTrashy 1.0, которая уже какое-то время работала.

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

  • Мы взаимодействовали с заказчиком, чтобы разработать техническую документацию и дизайн будущей системы, в то время как занимались поддержкой первой версии приложения, которое уже было опубликовано в мобильных сторах и использовалось людьми.
  • Пока мы занимались поддержкой GoTrashy 1.0, нам пришлось осуществить большой объем тестирования и изучения существующего кода от предыдущих разработчиков, которые совсем не оставили технической документации по проекту.

Поскольку существующая версия приложения нуждалась в сильных доработках, мы решили сжать сроки разработки новой версии до 9 месяцев, чтобы заменить приложение в максимально сжатый срок. Это решение повлияло на другие моменты разработки, например, в качестве платформы был выбран кросс-платформенный React Native.

Анатомия системы GoTrashy 2.0

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

  1. GoTrashy Client app – приложение для клиентов, которые хотят вывезти мусор. Они размещают заказ, указывая тип мусора, прилагают несколько фотографий, указывают временные рамки вывоза и ждут ответа от водителей грузовиков. Исполнителя можно выбрать на основе цены, которую они запрашивают за заказ и рейтинга водителя.
  2. GoTrashy Hauler app – приложение для водителей грузовиков, в котором видно все доступные заказы в их районе работы. Через него водители отправляют заявки на заказы.
  3. GoTrashy Web Client – веб-сайт для клиентов с таким же функционалом, что и мобильное приложение.
  4. GoTrashy Onboarding Portal – портал для регистрации водителей, желающих работать на компанию GoTrashy. Через портал водители посылают копии своих документов. Также здесь можно запросить разрешение на работу в новом районе, тем самым расширив свою территорию заказов.
  5. GoTrashy Admin Console – портал для администраторов со всеми необходимыми настройками – типы пользователей, работ, мусора, а также другие метрики.

Технологии и подход

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

1. Микросервисная архитектура

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

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

Более того, мы использовали Elasticsearch для индексирования данных, поскольку стек технологий ELK (Elasticsearch, Logstash, Kibana) уже интегрирован в AWS. Это дешевле и быстрее, чем копирование данных в Postgres и дальнейшая сортировка их там. Выбранный стек технологий позволил нам настроить автоматическую миграцию данных из старой системы в AWS.

2. React Native

GoTrashy 1.0 был разработан на чистых платформах iOS и Android, поэтому нам было необходимо решить, будем ли мы продолжать такой подход или перейти к кросс-платформенному фреймворку.

Применение кросс-платформенного фреймворка нам подходило по нескольким причинам:

  • Простой UI;
  • В бизнес-логике можно было выделить общее;
  • Отстутствие ОС-центричных функций, таких как Bluetooth, камера, взаимодействие с картой.

В дополнение кросс-платформенный фреймворк имел преимущества, которые мы могли выгодно использовать для GoTrashy 2.0:

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

Приняв всё это во внимание, мы решили вести разработку GoTrashy 2.0 на React Native. Также мы решили соединить его с Expo framework, который бы позволил нам одномоментно обновлять приложения в сторах по воздуху без непосредственного взаимодействия с каждым с них.

На момент разработки в 2018 году Expo framework был довольно сырым продуктом, поэтому взаимодействие с поддержкой, настройка и тестирование отняли у нас драгоценное время. Однако мы все равно выиграли при его применении, поскольку обновление по воздуху перевешивало все неудобства.

3. Twilio

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

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

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

В процессе работы мы столкнулись с еще одним ограничением Twilio – лимит канала. После того, как работа считалась оконченной, мы не удаляли чаты между клиентом и водителем, чтобы Служба Поддержки GoTrashy могла обратиться к ним в случаях жалоб. Довольно быстро это привело к переполнению лимита. Мы справились с проблемой следующим образом:

  • Простой UI;
  • Стали логгировать сообщения чатов;
  • Стали удалять старые чаты после окончания работ.

4. DevOps

Разрабатывая GoTrashy 2.0, мы придерживались подхода DevOps. А именно:

  1. Контроль версий позволил нам откатываться на предыдущую итерацию, если это было необходимо;
  2. Автокомпиляция приложений позволила нам минимизировать время между написанием кода и поиском багов в нем;
  3. Автоматическая установка проекта в специально разработанной среде, которая позволила бы оттестировать продукт перед запуском;
  4. Автоматический и одномоментный запуск всего проекта посредством Expo framework;
  5. Настройки среды через файлы конфигурации, а не вручную;
  6. Мониторинг приложений для быстрого избавления от ошибок.

Этот проект включил в себя API сервис, три веб-приложения, две версии мобильных приложений. В процесс разработки было включено около 20 человек. Каждые 2 недели был запланированный релиз, таким образом DevOps подход справился с необходимой скоростью разработки и уровнем качества.

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

Важный функционал GoTrashy 2.0:

  • Интерактивная карта для клиентов и водителей. Карта показывает оптимальный маршрут до клиента, когда грузовик выезжает на заказ;
  • Пользователи могут отслеживать текущий статус заказа в режиме реального времени и получать уведомления об изменениях;
  • Система рейтинга для клиентов и водителей;/li>
  • Водитель и клиент могут обсуждать детали работы в отдельном чате;
  • Для того, чтобы общение в чате было комфортным, реализована фильтрация отправляемых сообщений и картинок, которые могут оказаться неприемлемыми для собеседника;
  • Встроенная система платежей позволяет пользователям проводить оплату выполненных услуг, получать компенсации за отмену работы, не выходя из приложения.

Мы зарелизили систему в августе 2018 года в AppStore и Google Play. Работа над приложением продолжалась вплоть до ноября 2018, поскольку компания решила внести ряд изменений после анализа поведения клиентов.

Результаты

На настоящий момент GoTrashy 2.0 находится в стадии поддержки. Мы помогаем клиенту с любым вопросом : большими и маленькими изменениями, новой функциональностью или доработками. Мы разработали большую Uber-like экосистему в довольно короткий срок, приступая к разработке которой мы крайне мало знали о первой версии проекта.

GoTrashy – удивительный пример стартапа, который не остановился в развитии после запуска. Компания проанализировала ошибки, допущенные в первом релизе, чтобы не допустить их повторения. Мы очень рады, что нам удалось поработать с таким проектом!

другие наши проекты

Мобильное приложение Straw для быстрого создания опросов

Мобильное приложение Straw для быстрого создания опросов

Мобильное приложение Straw для быстрого создания опросов

Мобильное приложение Straw для быстрого создания опросов

Интерактивная карта НГУ

Интерактивная карта НГУ

Адаптация SharePoint под мобильные устройства

Адаптация SharePoint под мобильные устройства

Дополненяем реальность для Метрополитен-музея (США)

Дополненяем реальность для Метрополитен-музея (США)

Мобильное приложение с дополненной реальностью по достопримечательностям Новосибирска

Мобильное приложение с дополненной реальностью по достопримечательностям Новосибирска

Мобильное приложение по доставке багажа из Американских аэропортов

Мобильное приложение по доставке багажа из Американских аэропортов

Мобильное фитнес-приложение Activ5

Мобильное фитнес-приложение Activ5

Интерактивная Карта Офиса

Интерактивная Карта Офиса

Мобильное приложение для диагностики авто и быстрого поиска СТО для ремонта

Мобильное приложение для диагностики авто и быстрого поиска СТО для ремонта

Виртуальные билборды на Мальте

Виртуальные билборды на Мальте

Система Сопровождения Контрактов (ССК)

Система Сопровождения Контрактов (ССК)

Давайте найдем решение для вашего бизнеса!

Давайте найдем решение для вашего бизнеса!

Пожалуйста, заполните 'Имя'
Пожалуйста, заполните 'Телефон'
Пожалуйста, заполните 'Емейл'
Пожалуйста, заполните 'Сообщение'

Пожалуйста, заполните 'Имя и фамилия'
Пожалуйста, заполните 'Телефон'
Пожалуйста, заполните 'Емейл'
Выберите файл
Пожалуйста, выберите файл 'Резюме'
Выберите файл
Пожалуйста, прикрепите файл 'Код / ТЗ'