Hello everyone, my name is Anton Tupikov, I am the team lead of B2B Development in Gett.
Gett is not just a taxi service, but a dynamic marketplace. This is a highly loaded system: tens of thousands of drivers and millions of customers in 120 cities around the world use Gett services every day.
Developing initially as a B2C application, Gett in the last 6 years has launched several “startups inside startups”. These were experiments with delivery, minibuses and corporate sales. Many of them later turned into successful business areas. For example, a B2B solution successfully works for more than 15,000 large corporations, including brands such as Google, Visa, Gucci, LVMH, Nestle, etc.
The next major challenge Gett faces is getting an IPO next year. We believe that the new generation product will help our IPO become successful, and that is why it was decided to combine the efforts of the best Gett and Juno engineers to achieve this goal. It is about developing innovative product solutions from scratch using the most advanced technology stack.
I want to invite everyone to the meeting in Minsk on September 12 with the support of the GoWay community, where my fellow developers will talk about the technical challenges they face daily and a little about what we have to face in the future working on new solutions.
At the meeting, speakers will talk about which technical challenges are solved in Gett using the Go language.
Speakers:
- Sasha Grunin , Gett, Senior backend engineer at B2B Development team - History of development on Go in Gett 2018-2019.
Gett is a classic story when, after several years of developing a monolith, it turned out to be more expedient to divide the monolith into services than to refactor it. The transition to Go is not an instantaneous process: along with the evolution of technology, the processes around have also evolved.
In this report, Sasha will talk about how the company developed development on Go and how the development processes and technologies are arranged now.
- Sagi Kritchbets , Gett, Senior backend engineer at Pricing Team - State of the art engineering (talk in English)
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 (talk in English)
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.
In addition to useful reports from cool speakers, you will find a sea of networking and, of course, afterparty! To participate,
registration is required.
And now a little about why, right now, we decided to join forces with Juno.
Given that from the very beginning Gett B2B segment was operationally profitable (and subject to a strategy for overall profitability), this prompted Gett to restructure its value proposition around corporate customers and their needs.
In April 2017,
Gett bought Juno , a startup operating in New York with a development center in Minsk. Juno is a ride-sharing service founded in 2015. From the very start, Juno made a loud statement about himself: the service was launched in New York in May 2016, and already in September 2016 the number of trips exceeded half a million a month. In September 2017, the number of successful trips exceeded 1 million. Today, Juno has one of the leading positions in the online taxi transportation market in New York.
Gett now has priority in technological updating of B2B solutions, for these purposes it was decided to combine the efforts of the Minsk office of Juno and the Moscow and Israeli Gett RnD teams.
The B2B platform closes all corporate issues related to the trip: from ordering a car and monitoring it, to controlling expenses by the financial department and generating reports.
The Juno team, together with Gett, will work on several areas of the service:
Employee Connection
Often, in corporations, employees cannot independently use the taxi and delivery services: sometimes an application for a trip is posted through a separate employee / service. Each company has its own travel policies, and the task of Gett B2B is to adapt as much as possible to the specifics of each client: customize your personal account, take into account all the rules and policies.
Cost control
One of the most tangible problems for a client that Gett B2B solves is the transparency of corporate transportation costs. Transparency concerns not only the details of the accounts of each trip, but also the possibility of aggregation in one place of all expenses that the corporation bears in each city or country. In the future, these reports are used, for example, for VAT refunds.
Gett B2B solves these problems by automating the manual work of administrators and financial services. They no longer need to collect checks, find out travel details, make cost requests to different departments, enter information for each employee manually and double-check several times. Customers can sync SFTP data or create API trips.
In addition, Juno and Gett will work together in the areas of Billing, Consumer Services and Vendor Connection.
The choice
of B2B Solution technologies is aimed at efficiently solving the problems facing a modern digital product:
- AWS & Kubernetes help adapt to the floating load typical of the ride-hailing market and scale effectively
- to be able to daily delight customers with new functionality is obtained through Continuous delivery of processes tied to Jenkins
- at the points of the highest system load, efficiently and flexibly use resources, keeping up with the times is possible with Go and Redis
- Respond quickly and implement product changes, delivering a great user experience, perhaps thanks to React / Redux & Ruby
- to be part of the microservice architecture while maintaining data consistency, thanks to CloudAMQP
- monitor the performance of the product and be sure of high quality and it is possible with the help of an ecosystem for monitoring and searching for anomalies, including PagerDuty, Airbrake, New Relic, Datadog and Continuous integration processes with built-in unit, component, integration tests for Java / testNG / Selenium
If you have any questions, I will be happy to answer them in the comments to this post. And see you at the meeting!