Одна версия кода, один бэкенд, 600 приложений. Как белорусы из Onde помогли такси-сервисам разделаться с Uber
Белорусская компания Onde разработала решение, которое позволило онлайн-такси сервисам в разных странах отобрать долю рынка у Uber и других конкурентов.
Главным архитектурным решением, позволившим стартапу взлететь, в Onde считают доведённый до максимума процент переиспользования кода. В ближайших планах — полностью перевести систему на Kotlin и произвести реворк архитектуры сервера.
В интервью dev.by разработчики рассказали, как Onde из простого приложения для заказа такси превратился в глобальный сервис и почему в Африке и Азии перспектив больше, чем в Европе.
Уволился в среду, а в четверг начал стартап
— История Onde началась в июле 2011 года, — рассказывает СТО компании Игорь Зубчёнок. — На тот момент я работал в аутсорсинговой компании и писал программы под Windows Mobile. Но интерес к телефонам на этой системе уже затухал, несмотря на весь пиар, и клиент в итоге закрыл проект. В компании возник вопрос, что со мной делать дальше. Клиент много платил за мою работу, и я получал очень хорошую зарплату. Я был готов остаться работать только на прежних финансовых условиях, но компания уже не могла себе этого позволить. Для меня это был хороший повод, чтобы рискнуть всё бросить и начать свой стартап. Вот так 7 июня 2011 года я проснулся безработным и решил взяться за разработку мобильного приложения для вызова такси. Уже через неделю появился какой-то прототип приложения. Помню, мы с женой Аней бегали вокруг дома, тестировали его. В Google Maps тогда ещё не было шеринга локейшенов.
Над приложением я поработал около трёх месяцев, привлёк к проекту друзей. Но понял, что в таком составе не хватает экспертизы. Ближе к зиме у меня появился партнёр Илья Атрашкевич. У него был опыт в области GPS-мониторинга. Параллельно Илья начал заниматься командой. Именно он переманил из Дании Женю (Евгений Сусло, СЕО Onde — прим. dev.by).
— На тот момент я жил в Скандинавии уже около шести лет, — вспоминает Евгений. — Успел закончить университет в Швеции (Lunds University, MSc in Computer Science and Efficient Algorithms) по специальности разработка эффективных алгоритмов, работал в Дании системным аналитиком в крупной компании Maersk. Но интереснее было заниматься разными проектами. Например, одним из проектов после моего ухода с основной работы был сервис Noromance — аналог Tinder до его появления. Правда, проект так и не развился. Мой партнёр переехал в другой город, а с разработчиками на удалёнке было сложно взаимодействовать. Пришлось опять пойти на работу, что меня не радовало.
В какой-то момент со мной связался Илья. Я c удовольствием подключился, мы встретились с командой на конференции в Амстердаме, обкатали идею, получили фидбек.
Я оставил работу в Дании и вернулся в Беларусь. Думал, что ненадолго, на год. Тогда у нас не было долгосрочного планирования. Никто не знал, во что превратится проект.
«Белорусские службы такси убеждали нас, что люди привыкли звонить»
Ещё до появления первых клиентов у команды было понимание, что надо делать глобальный продукт и не фокусироваться на местном рынке. Но встал вопрос финансирования: для запуска своего сервиса в каждой конкретной локации требовались внушительные инвестиции.
— С деньгами инвесторов проект мог развиваться иначе. Но я считал, что привлекать инвесторов имело смысл при наличии команды в каждом конкретном регионе запуска. В итоге решили, что сфокусируемся на разработке технологии, а заказчики, используя наш софт, будут сами запускать сервисы-аналоги Uber на своих рынках, — поясняет Игорь.
Публичная версия Android-приложения для водителя и пассажира появилась в январе 2013 года. Сначала компания называлась TaxiStartup. Первым клиентом белорусских разработчиков стало «Cowboy Taxi» из Канады «с небольшим автомобильным парком и сайтом «привет из 90-х».
— Изначально было две модели подписки, — вспоминает Евгений. Дешёвая стоила 99 долларов в месяц плюс 5-20 долларов за водителя. Компании работали не на брендированных, а на наших дефолтных приложениях. Дорогая подписка уже на брендированные приложения под каждого клиента стоила 300 долларов в месяц плюс 5-20 долларов за каждого водителя. Но в итоге мы отказались от такой модели монетизации.
Клиенты, которые заказывали брендированные приложения, платили за 1-2 месяца и уходили, инвестиции не окупались.
Поэтому вскоре мы добавили к месячной подписке единовременную плату за выпуск брендированных приложений.
Функционал приложения был ограничен. В первой версии не было даже расчёта стоимости поездки: водитель ехал по своему таксометру. Эту фичу разработчики добавили в первую очередь. Дальше важно было обеспечить пассажирам возможность связи с водителем по sms и телефону.
За 2013 год у компании появилось пять клиентов, в том числе один из Беларуси. Но при этом было много лидов. Других похожих сервисов на рынке фактически не было. Сайт компании был на первых строчках в Google по запросам типа «Apps Like Uber».
— База лидов росла в основном за счёт такси-компаний, и они были готовы платить за сервис. Правда, не везде. Изначально мы позиционировали продукт на существующие такси-компании и хотели оптимизировать их работу в Беларуси. Но службы такси не понимали, зачем им что-то менять. Нас убеждали, что приложение не будет популярным, так как люди привыкли звонить. Они поняли, как ошибались, уже через три-четыре года, когда Uber начал отбирать у них бизнес, — вспоминает CEO Onde.
Как это сделано. «Новая фича разрабатывается на трёх платформах и в три раза быстрее»
— Все понимали, что рынки разные, и каждый сервис захочет свой набор фичей. Это значит, что для каждой компании надо создавать отдельное приложение, и встал вопрос реализации,— отмечает Евгений.
Первый вариант — разделить код. «Но у нас уже был опыт использования множества версий кода, и все понимали, что это путь в никуда». В итоге команда решила, что должна быть одна версия кода и один бэкенд.
— Писать поменьше кода и побольше его использовать — самое главное архитектурное решение, — уверен lead backend developer Артем Шабан. У Оnde есть большая кодовая база, которая используется одновременно для клиентов и в бэкенде.
— Мы не делаем копии системы под каждого отдельного клиента, а создаём одну для всех и продаем как уникальный White Label (брендированный) продукт по подписке. Дальше мы развиваем не десять разных продуктов, а один, поэтому расходы сокращаются в разы, а клиенты всегда получают приложения и систему последних версий, — отмечает Артём.
Новая фича разрабатывается сразу на трёх платформах (Android, iOS, Web) и в три раза быстрее. Есть общий модуль, написанный на Java, и UI-часть для iOS, Web и Android, т. е. они просто транслируют общий код. Такой подход имеет огромные плюсы, констатирует Артём. Приложения получаются нативные, работают как написанные на одном языке, «а кода нужно писать вдвое меньше и багов в разы меньше».
Недавно компания внедрила брокер сообщений Apache Pulsar. Это позволило в полной мере реализовать архитектурный подход.
— Для обеспечения пересылки координат водителей и пассажиров необходима связь в реальном времени и без задержек между сотнями тысяч клиентов и водителей. С технической стороны для нашего случая это более грамотное решение, чем Kafka (сейчас считается эталоном), так как позволяет создавать сотни тысяч топиков, — поясняет Игорь.
Один Java модуль используется как бекенде, так и на всех клиентах, включая не только Android, но также и iOS и Web.
— Модуль содержит общие реализации протокола и другой логики. Так же есть отдельные Java модули для клиента, водителя, оператора, которые транслируются и используются в iOS, Android и Web. Они содержат всю логику приложений, представляя общую кодовую базу для нативных приложений. Всё, что можно написать на Java — написано на Java. В нативных приложениях реализован лишь тонкий слой UI и обертки вокруг нативных сервисов.
«Новые фичи все клиенты получают автоматически, даже если за разработку заплатил кто-то один»
В App Store и Google Play сейчас доступно более 600 активных приложений (разработанных Onde) для водителей и пассажиров на Android и iOS платформах. Все приложения обновляются автоматически в режиме реального времени.
— Мы целенаправленно сделали ставку на автоматический апдейт. Если приложения не обновляются полгода, то умирают. На этом, кстати, сломались некоторые конкуренты, — отмечает Евгений.
Новые фичи все клиенты получают автоматически, даже если за разработку заплатил кто-то один под свои потребности. Таким образом, например, для всех клиентов появилась возможность предзаказа и оплаты за проезд кредитными картами.
Кроме мобильных приложений, у платформы Onde есть диспетчерская онлайн-система для Web. Она позволяет диспетчеру создавать и отслеживать заказы, мониторить зоны повышенного спроса, движение водителя и пассажира. Своим сервисом компании могут управлять в админке.
Монетизация
Onde экспериментировала с разными бизнес-моделями, в итоге остановилась на Revenue Share. Ежемесячно заказчики платят 2-4% от оборота. Также компания ввела единоразовый платеж за разработку приложения: 7,5, 15 и 45 тысяч долларов в зависимости от тарифного плана, в которые включены маркетинговые пакеты.
— Самый дешёвый тарифный план включает App Store оптимизацию, два других — ещё и продвижение, — поясняет Head of Product Growth Анна Лозицкая. — Например, в самый дорогой маркетинговый пакет входит помощь по запуску проекта, создание медиа-контента, формирование концепции позиционирования, обеспечение пассажирского трафика. Мы помогаем компаниям правильно оценить, сколько на начальном этапе им нужно водителей и пассажиров, чтобы занять определённую долю на рынке при наличии конкурентов.
Плюсы развивающихся рынков. «В Азии есть крупный игрок — Grab с оценкой в $30 млрд. Это не помешало PassApp (наш клиент в Камбодже) его обойти»
Клиентская база Onde уже насчитывает 200 компаний в 75 странах мира. На платформе зарегистрировано более 500 тысяч водителей, из них больше 100 тысяч активных, которые принимали хотя бы один заказ в месяц. За прошедший год количество активных водителей выросло в 3,5 раза, количество заказов — в пять раз до 10 миллионов в месяц. Количество активных пользователей — пассажиров превышает 1,3 миллиона человек.
— Сегодня мы начали больше фокусироваться не на существующих такси-компаниях, а на стартапах с потенциалом роста в большие компании. Наши целевые рынки — страны Латинской Америки, Африки, Ближнего Востока и отдельные страны Азии.
Например, в Африке еще некоторое время назад не было доступа к интернету. Сегодня технологии беспроводного интернета становятся дешевле, развивается 3G, люди покупают дешевые смартфоны за 20 долларов, получают доступ в интернет и ко всем онлайн-сервисам. И этот рынок быстро набирает обороты, — отмечает Евгений.
По его словам, на развивающихся рынках новые сервисы строятся с нуля, а не перекраивают рынок. Например, чтобы в Европе запустить приложение онлайн-заказа такси, придётся разбираться с такси-ассоциациями, юнионами и следовать местным строгим законам. Это убивает весь профит такого бизнеса.
На развивающихся рынках такой проблемы нет, потому что часто такие сервисы — это единственная опция.
— Показательный пример — Судан. Там нет общественного транспорта и ограниченное количество личного транспорта, так как это дорого. Tirhal, наш клиент в Судане, стал самым популярным сервисом для среднего класса с базой в 30 тысяч водителей.
Многие клиенты Onde успешно конкурируют на местных рынках с Uber и другими гигантами.
— В Азии есть крупный игрок — Grab, который оценивается в 30 млрд долларов. Но это не помешало PassApp (наш клиент в Камбодже) его обойти. В Саудовской Аравии еще один наш клиент Kaiian является лидером несмотря на присутствие Uber и Careem — крупнейшего игрока на Ближнем Востоке в сфере пассажирских перевозок, в марте этого года его купил Uber за 3 млрд долларов, — отмечает Евгений.
Впрочем, развивающиеся рынки имеют свои особенности, время от времени мешающие Onde продвигаться.
— В Африке случаются военные перевороты, один из них произошёл относительно недавно в Судане. В результате в стране на полторы недели отключили интернет, и наш сервис все это время не работал. Похожая ситуация с отключением интернета была в Эфиопии.
Перевести систему на Kotlin
Сейчас команда Onde проверяет идею полностью перевести систему на Kotlin, используя Kotlin Native для iOS и Kotlin JS для Web приложений, вместо аналогичных компиляторов для Java. В планах — также произвести реворк архитектуры сервера: разбить на модули и настроить общение между ними. Это обеспечит больше стабильности и корректности работы системы, поможет решить проблему с синхронизацией.
На данный момент основной фокус Onde — это пассажирские перевозки.
— Но клиенты компании уже запустили и другие типы сервисов: эвакуаторы, вызов плотника, сантехника, врача на дом, — отмечает Евгений. — Есть например, медицинское такси. Контакт с водителями и медцентрами осуществляется через нашу платформу. В перспективе хотим стать платформой для любых оn-demand сервисов, как, например, доставка еды.
8 актуальных и интересных курсов по Rust (июнь 2023) + бонус от GitHub
Рассмотрели преимущества и особенности языка Rust, а также сделали подборку курсов по нему, которые будут интересны как новичкам, так и опытным программистам.
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.