Всем привет, меня зовут Антон Тупиков, я – тимлид команды B2B Development в Gett.
Gett – не просто сервис такси, а динамический маркетплейс. Это высоконагруженная система: десятки тысяч водителей и миллионы клиентов в 120 городах по всему миру пользуются сервисами Gett каждый день.
Развиваясь изначально как B2C приложение, Gett в последние 6 лет запускал несколько «стартапов внутри стартапа”. Это были эксперименты с доставкой, маршрутками и корпоративными продажами. Многие из них позже вылились в успешные направления бизнеса. Например, B2B решение успешно работает для более чем 15 000 крупных корпораций, среди которых такие бренды как Google, Visa, Gucci, LVMH, Nestle и др.
Ближайшая важная задача, которая стоит перед Gett – это выход на IPO в следующем году. Мы рассчитываем, что продукт нового поколения поможет нашему IPO стать успешным, и именно поэтому было принято решение объединить усилия лучших инженеров Gett и Juno для достижении этой цели. Речь идет о разработке инновационных продуктовых решений с нуля c использованием самого современного технологического стека.
Хочу пригласить всех желающих на митап в Минске, который пройдет 12 сентября при поддержке GoWay-комьюнити, где мои коллеги разработчики расскажут о технических челенджах, с которыми они сталкиваются ежедневно и немного о том, с чем нам предстоит столкнуться в перспективе работы над новыми решениями.
На митапе спикеры расскажут о том, какие технические челенджи решаются в Gett при помощи языка Go.
Спикеры:
- Саша Грунин, Gett, Senior backend engineer at B2B Development team – История разработки на Go в Gett 2018-2019.
Gett — классическая история, когда после нескольких лет разработки монолита, оказалось более целесообразно разделить монолит на сервисы, чем рефакторить его. Переход на Go – не одномоментный процесс: вместе с эволюцией технологий эволюционировали и процессы вокруг.
В этом докладе Саша расскажет про то, как в компании развивалась разработка на Go и как устроены процессы и технологии разработки сейчас. - Sagi Kritchbets, Gett, Senior backend engineer at Pricing Team – State of the art engineering (доклад на английском языке)
In Gett much of the functionality is location based. During each order there is a need to retrieve configuration data based on GPS locations. Geo services are handling large number of requests and are on critical path of the business flow. It is required that the service will respond quickly and will be scalable. Legacy area service in Gett was fully based on PostGIS, which lead to bottleneck on DB. Sagi are going to talk about new area service and its in memory distributed geographic cache implementation based on hex grid and redis pubsub. Sagi will go through basic geometry algorithms used in the solution and challenges we had to overcome.
- Ron Ludmer, Gett, Senior Backend Developer at Matching & Ride Exchange Team – Redis-based Semaphore (доклад на английcком языке)
As the popularity of microservices architecture style increases, the risks that rise from working with a distributed system are getting more focus. One common problem is having our shared resources being accessed from multiple instances simultaneously, causing data inconsistency. What is the best way to ensure correctness with minimal damage to efficiency? Arguably, the simplest way is using locking mechanism. Ron are going to talk about different approaches to distributed locking, and the ways they tackled this issue at Gett, leading up to our current solution: Redis-based distributed lock implemented in Golang.
Кроме полезных докладов от крутых спикеров вас ждет море нетворкинга и, конечно, афтепати! Для участия необходима регистрация.
А теперь немного про то, почему же именно сейчас мы решили объединить свои силы с Juno.
При учете того, что с самого начала Gett B2B сегмент был операционно прибылен (и при условии стратегии на общую прибыльность), это подтолкнуло Gett к перестроению своего ценностного предложения вокруг корпоративных клиентов и их потребностей.
В апреле 2017 года Gett купил Juno, стартап, оперирующий в Нью-Йорке с центром разработки в Минске. Juno — это райд-шеринг сервис, основанный в 2015 году. С самого старта Juno громко заявил о себе: сервис был запущен в Нью Йорке в мае 2016 года, а уже в сентябре 2016 года количество поездок превысило полмиллиона в месяц. В сентябре 2017 года количество успешных поездок превысило 1 миллион. На сегодняшний день Juno занимает одну из лидирующих позиций на рынке онлайн такси перевозок в Нью-Йорке.
Сейчас у Gett в приоритете технологическое обновление B2B-решения, для этих целей было принято решение объединить усилия минского офиса Juno и московской и израильских команд Gett RnD.
Платформа B2B закрывает все вопросы корпораций, связанные с поездкой: от заказа машины и ее мониторинга, до контроля расходов финансовой службой и формирования отчётов.
Команда Juno совместно с Gett будет работать над несколькими направлениями сервиса:
Подключение сотрудников
Часто в корпорациях сотрудники не могут самостоятельно пользоваться сервисом такси и доставки: иногда заявка на поездку размещается через отдельного сотрудника/сервис. В каждой компании существуют свои политики поездок, и задача Gett B2B – максимально подстроиться под специфику каждого клиента: кастомизировать личный кабинет, учесть все правила и политики.
Контроль расходов
Одна из наиболее осязаемых для клиента проблем, которую решает Gett B2B — это прозрачность затрат корпораций на транспорт. Прозрачность касается не только детализации счета каждой поездки, но и возможности агрегации в одном месте всех расходов, которые корпорация несет в каждом городе или стране. В дальнейшем эти отчёты используются, например, для возврата НДС.
Gett B2B решает эти проблемы, автоматизируя ручную работу администраторов и финансовой службы. Им не нужно больше собирать чеки, узнавать детали поездок, делать запросы по затратам в разные подразделения, вносить информацию по каждому сотруднику вручную и перепроверять несколько раз. Клиенты имеют возможность синхронизировать данные по SFTP или создавать поездки по API.
Кроме того, Juno и Gett будут совместно работать в направлениях Billing, Consumer Services и Vendor Connection.
Выбор технологий B2B Solution направлен на эффективное решение задач стоящих перед современным диджитал-продуктом:
- подстраиваться под плавающую нагрузку характерную для ride-hailing рынка и эффективно масштабироваться помогают AWS & Kubernetes
- иметь возможность ежедневно радовать клиентов новым функционалом получается за счет Continuous delivery процессов, завязанных на Jenkins
- в точках наибольшей нагрузки системы эффективно и гибко использовать ресурсы, быть в ногу со временем удается с Go и Redis
- быстро реагировать и воплощать продуктовые изменения, предоставляя отличный пользовательский опыт, возможно благодаря React/Redux & Ruby
- быть частью микросервисной архитектуры, сохраняя консистентность данных, удается благодаря CloudAMQP
- следить за работоспособностью продукта и быть уверенным в высоком качестве и возможно с помощью экосистемы мониторинга и поиска аномалий, включающей PagerDuty, Airbrake, New Relic, Datadog и процессами Сontinuous integration со встроенными unit, component, integration тестами на Java/testNG/Selenium
Если у вас есть вопросы – с удовольствием отвечу на них в комментариях к этому посту. И до встречи на митапе!
Автор: Anton Tupikov