«Одна версия кода, один бэкенд, 600 приложений»

Белорусская Onde разработала SaaS-решение, которое позволило локальным сервисам такси отобрать долю рынка у Uber и других. Основатели стартапа рассказали изданию dev.by историю Onde и почему в Африке и Азии перспектив больше, чем в Европе.

«Одна версия кода, один бэкенд, 600 приложений»

Onde — это SaaS-решение, которое включает в себя мобильное приложение на Android и iOS, диспетчерскую панель и облачное хранилище данных. Клиенты компании получают приложение под своим брендом, круглосуточную поддержку, обновление и маркетинг. Регистрация на платформе происходит по телефону или SMS-коду. Система поддерживает более 50 языков.

Главным архитектурным решением, позволившим стартапу взлететь, в Onde считают доведённый до максимума процент переиспользования кода. В ближайших планах — полностью перевести систему на Kotlin и произвести реворк архитектуры сервера.

Уволился в среду, а в четверг начал стартап

«История 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 удовольствием подключился, мы встретились с командой на конференции в Амстердаме, обкатали идею, получили фидбек. Я оставил работу в Дании и вернулся в Белоруссию. Думал, что ненадолго, на год. Тогда у нас не было долгосрочного планирования. Никто не знал, во что превратится проект».

«Одна версия кода, один бэкенд, 600 приложений»

«Белорусские службы такси убеждали нас, что люди привыкли звонить»

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

«С деньгами инвесторов проект мог развиваться иначе. Но я считал, что привлекать инвесторов имело смысл при наличии команды в каждом конкретном регионе запуска. В итоге решили, что сфокусируемся на разработке технологии, а заказчики, используя наш софт, будут сами запускать сервисы-аналоги Uber на своих рынках», — поясняет Игорь Зубчёнок.

Публичная версия Android-приложения для водителя и пассажира появилась в январе 2013 года. Сначала компания называлась TaxiStartup. Первым клиентом белорусских разработчиков стало «Cowboy Taxi» из Канады «с небольшим автомобильным парком и сайтом "привет из 90-х"».

«Изначально было две модели подписки, — вспоминает Евгений Сусло. —Дешёвая стоила $99 в месяц плюс $5-20 за водителя. Компании работали не на брендированных, а на наших дефолтных приложениях. Дорогая подписка уже на брендированные приложения под каждого клиента стоила $300 в месяц плюс $5-20 за каждого водителя. Но в итоге мы отказались от такой модели монетизации».

Клиенты, которые заказывали брендированные приложения, платили за один-два месяца и уходили, инвестиции не окупались.

Евгений Сусло, гендиректор Onde

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

Функционал приложения был ограничен. В первой версии не было даже расчёта стоимости поездки: водитель ехал по своему таксометру. Эту фичу разработчики добавили в первую очередь. Дальше важно было обеспечить пассажирам возможность связи с водителем по SMS и телефону.

За 2013 год у компании появилось пять клиентов, в том числе один из Белоруссии. Но при этом было много лидов. Других похожих сервисов на рынке фактически не было. Сайт компании был на первых строчках в Google по запросам типа «Apps Like Uber».

«База лидов росла в основном за счёт такси-компаний, и они были готовы платить за сервис. Правда, не везде. Изначально мы позиционировали продукт на существующие такси-компании и хотели оптимизировать их работу в Белоруссии.

Но службы такси не понимали, зачем им что-то менять. Нас убеждали, что приложение не будет популярным, так как люди привыкли звонить. Они поняли, как ошибались, уже через три-четыре года, когда Uber начал отбирать у них бизнес», — вспоминает гендиректор Onde.

Как это сделано. «Новая фича разрабатывается на трёх платформах и в три раза быстрее»

«Все понимали, что рынки разные, и каждый сервис захочет свой набор фичей. Это значит, что для каждой компании надо создавать отдельное приложение, и встал вопрос реализации», — отмечает Евгений Сусло.

Первый вариант — разделить код. Но у нас команды уже был опыт использования множества версий кода, и «все понимали, что это путь в никуда». В итоге команда решила, что должна быть одна версия кода и один бэкенд.

«Писать поменьше кода и побольше его использовать — самое главное архитектурное решение, — уверен lead backend developer Артём Шабан. — У Оnde есть большая кодовая база, которая используется одновременно для клиентов и в бэкенде».

«Одна версия кода, один бэкенд, 600 приложений»

«Мы не делаем копии системы под каждого отдельного клиента, а создаём одну для всех и продаем как уникальный 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 платформах. Все приложения обновляются автоматически в режиме реального времени.

«Мы целенаправленно сделали ставку на автоматический апдейт. Если приложения не обновляются полгода, то умирают. На этом, кстати, сломались некоторые конкуренты», — отмечает Евгений Сусло.

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

«Одна версия кода, один бэкенд, 600 приложений»

Кроме мобильных приложений у платформы Onde есть диспетчерская онлайн-система для Web. Она позволяет диспетчеру создавать и отслеживать заказы, мониторить зоны повышенного спроса, движение водителя и пассажира. Своим сервисом компании могут управлять в админке.

Монетизация

Onde экспериментировала с разными бизнес-моделями, в итоге остановилась на Revenue Share. Ежемесячно заказчики платят 2-4% от оборота. Также компания ввела единоразовый платеж за разработку приложения: $7,5 тысяч, $15 тысяч и $45 тысяч в зависимости от тарифного плана, в которые включены маркетинговые пакеты.

«Самый дешёвый тарифный план включает App Store оптимизацию, два других — ещё и продвижение, — поясняет Head of Product Growth Анна Лозицкая. — Например, в самый дорогой маркетинговый пакет входит помощь по запуску проекта, создание медиа-контента, формирование концепции позиционирования, обеспечение пассажирского трафика. Мы помогаем компаниям правильно оценить, сколько на начальном этапе им нужно водителей и пассажиров, чтобы занять определённую долю на рынке при наличии конкурентов».

Плюсы развивающихся рынков

Клиентская база Onde уже насчитывает 200 компаний в 75 странах мира. На платформе зарегистрировано более 500 тысяч водителей, из них больше 100 тысяч активных пользователей, которые принимали хотя бы один заказ в месяц. За прошедший год количество активных водителей выросло в 3,5 раза, количество заказов — в пять раз до 10 млн в месяц. Количество активных пользователей — пассажиров превышает 1,3 млн человек.

«Сегодня мы начали больше фокусироваться не на существующих такси-компаниях, а на стартапах с потенциалом роста в большие компании. Наши целевые рынки — страны Латинской Америки, Африки, Ближнего Востока и отдельные страны Азии», — отмечает Евгений Сусло.

— Например, в Африке еще некоторое время назад не было доступа к интернету. Сегодня технологии беспроводного интернета становятся дешевле, развивается 3G, люди покупают дешевые смартфоны за $20, получают доступ в интернет и ко всем онлайн-сервисам. И этот рынок быстро набирает обороты», — продолжает он.

По словам гендиректора Onde, на развивающихся рынках новые сервисы строятся с нуля, а не перекраивают рынок. Например, чтобы в Европе запустить приложение онлайн-заказа такси, придётся разбираться с такси-ассоциациями, юнионами и следовать местным строгим законам. Это убивает весь профит такого бизнеса. На развивающихся рынках такой проблемы нет, потому что часто такие сервисы — это единственная опция.

«Показательный пример — Судан. Там нет общественного транспорта и ограниченное количество личного транспорта, так как это дорого. Tirhal, наш клиент в Судане, стал самым популярным сервисом для среднего класса с базой в 30 тысяч водителей», — говорит Сусло.

Многие клиенты Onde успешно конкурируют на местных рынках с Uber и другими гигантами.

В Азии есть крупный игрок — Grab с оценкой в $14 млрд. Это не помешало PassApp (наш клиент в Камбодже) его обойти.

В Саудовской Аравии ещё один наш клиент Kaiian является лидером несмотря на присутствие Uber и Careem — крупнейшего игрока на Ближнем Востоке в сфере пассажирских перевозок, в марте 2019 года его купил Uber за $3 млрд.


Евгений Сусло, гендиректор Onde

Впрочем, развивающиеся рынки имеют свои особенности, время от времени мешающие Onde продвигаться. «В Африке случаются военные перевороты, один из них произошёл относительно недавно в Судане. В результате в стране на полторы недели отключили интернет, и наш сервис все это время не работал. Похожая ситуация с отключением интернета была в Эфиопии», — говорит Сусло.

«Одна версия кода, один бэкенд, 600 приложений»

Перевести систему на Kotlin

Сейчас команда Onde изучает возможность полностью перевести систему на Kotlin, используя Kotlin Native для iOS и Kotlin JS для Web приложений, вместо аналогичных компиляторов для Java. В планах — произвести реворк архитектуры сервера: разбить на модули и настроить общение между ними. Это обеспечит больше стабильности и корректности работы системы, поможет решить проблему с синхронизацией.

На данный момент основной фокус Onde — это пассажирские перевозки.

«Но клиенты компании уже запустили и другие типы сервисов: эвакуаторы, вызов плотника, сантехника, врача на дом, — отмечает Евгений Сусло. — Есть, например, медицинское такси. Контакт с водителями и медцентрами осуществляется через нашу платформу. В перспективе хотим стать платформой для любых оn-demand сервисов, как, например, доставка еды».

dev.by — сайт об информационных технологиях в Беларуси и в мире.

Статьи по теме:

  • С помощью белорусского стартапа такси-конкуренты «сделали» Uber в Саудовской Аравии и Камбодже.
6868
58 комментариев

Одна версия кода, один бэкенд, один иксбет.

27

"Я оставил работу в Дании и вернулся в Белоруссию"
он что на машине времени в СССР попал?))
с 1991 там вроде Беларусь. Даже в оригинале статьи на русском языке прочитайте.

6

"Я оставил работу в Danmark и вернулся в Беларусь".
Так пойдёт?

41

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

31

Не надо путать разные языки. Для россиян это Белоруссия. Разные языки, разные слова. Вот возьмем слово "русский" оно существует только в головах у россиян. У соседних стран Украина и Польша - такого слова в словаре даже нет. Есть только россиянин.

3

А ещё там буськи и шуфлядки, и многие знают русский язык.

2