How Kiwi.com is accelerating travel with Cloud SQL
Milos Vyletel
Principal Engineer, Kiwi.com
Try Google Cloud
Start building on Google Cloud with $300 in free credits and 20+ always free products.
Free trialEditor’s note: Here we look at how a leading travel provider saved ten database administrators worth of work and accelerated delivery of door-to-door transportation options for users by migrating to Cloud SQL for PostgreSQL.
Kiwi.com’s mission is to reveal unique travel options and pricing that customers can’t find anywhere else. The company helps users reach their destinations easily and under budget by providing travel itineraries for nearly any scenario. The innovative underlying technology combines air travel and ground transport from various carriers and third parties, into one easily managed itinerary backed by a customer support team that can help in the event of travel disruption. In this blog post, the Kiwi.com team details their migration experience to Cloud SQL for PostgreSQL.
Last year we began a large migration to the fully managed database service Cloud SQL for PostgreSQL. By moving from AWS managed database services to Google Cloud, we were able to use the built-in automation and managed services available in Cloud SQL, which was equivalent to the work it would take ten additional database administrators (DBAs) to complete otherwise. The intuitive UI and unique provisioning and management features offered through Cloud SQL streamlined our set-up and build processes, allowing our developers to focus on creating new services and tools instead of manual upkeep. For example, we added Revolut Pay to help manage payments and refunds, we built a travel restriction widget during the height of the pandemic, and deployed a chatbot to answer commonly asked questions.
We need that kind of focus as we grow, so we can develop new ways to handle the 100 million searches and 40,000 seat bookings that occur every day through Kiwi.com.
Paving a runway for innovation
In order to deliver on our unique value proposition, we must coordinate hundreds of data sources and run millions of scenarios that factor in the customer’s preferences. At the database layer, our technology stack consists of around 200 databases, and each performs a critical task. For example, the authentication database stores users’ identities and permissions. The bookings database is responsible for the entire lifecycle of a customer’s booked reservation.
Over the years, we’ve used several different types of databases depending on the workload, including Cassandra, Scylla , MySQL, and PostgreSQL. Cassandra and Scylla run from on-premises hosting centers where our infrastructure team of 13 engineers manage everything. That’s 13 engineers in support of 400 developers, who all want to find better, faster ways to create value for customers. As we continued to grow and expand our offerings, we knew we needed to make sure infrastructure management wouldn’t get in the way of innovation.
Leaving on a jet plane — for the cloud
Back in 2019, we began entertaining the idea of migrating our PostgreSQL databases to Cloud SQL for PostgreSQL so we could use our expertise and resources to help customers search and book flights and other forms of travel — not run the latest software updates. We chose Google Cloud’s fully managed services to restore and operate our databases, which saved us from hiring ten database administrators to manage 200 databases ourselves. Our new philosophy is to use managed services whenever possible. After all, we’re a travel technology company, not a database company.
Since running our first PoC, we’ve been continuing to grow our estate on Google Cloud. We use Cloud SQL for PostgreSQL to run two of our largest services including bookings, which is 2 TB in size with a 1 TB replica, 10 CPUs, and 65 GB of memory, and our internal customer support services, which is also 2 TB in size, with 12 VCPUs, and 45 GB of memory. We use 100 - 200 instances of Memorystore for caching various processing like API calls, and we use Cloudflare with Google Cloud HTTP(S) Load Balancing as our content delivery network (CDN) layer. Additionally, we have more than 40 Google Kubernetes Engine (GKE) clusters that handle various services like bookings, payments, the frontend of searches, and the creation of our backend. The backend runs Bare Metal Solution on OVH.
Making connections with a unified data lifecycle
One of the major advantages of moving to Google Cloud is that it helps us unify our data lifecycle for intelligent applications. For example, we’re planning on migrating our largest analytical database to BigQuery, the serverless data warehouse, so we can take advantage of its scale and analytical capabilities from the same platform where our Cloud SQL databases run. We’re also working on developing a dynamic credentials solution to unify 250 internal users and 300 services between databases using the Cloud SQL IAM database authentication feature.
All in all we’re very happy with our experience on Google Cloud. We haven’t had any issues with the fully managed database services, and our developers love how easy it is to integrate with other industry-leading data and AI services. Looking into the future, we’re excited about using the speed, scale, and innovation we get from Google Cloud to make travel better for our customers.
Read more about Kiwi.com and Cloud SQL for PostgreSQL. And check out our recent blog on how Cloud SQL extends PostgreSQL 9.6 version support beyond end-of-life.