Client Context
GoTours is a multinational travel booking platform. It allows users to discover, book and confirm tour packages and hotels. This platform handles a high amount of constantly changing data (Like hotel schedules and room availability with user profiles and reservations). GoTours has modern microservices based architecture written in Go, which is useful to handle billions of records efficiently, especially in a peak travel season or in offer durations. They needed a robust and scalable database solution to keep delivering a smooth user experience.
The Challenge
- Scalability: GoTours needed a database that could easily handle large amount of data (even at a holiday or sale traffic) by using horizontal scaling across multiple servers.
- High Availability: Downtime was never an option, because even a short downtime can mean in booking loss and customer dis-satisfaction.
- Low Latency: GoTours required consistently fast response, even under heavy load. Because the user’s expectation is for instant search results in milliseconds.
- Flexibility: As travel data is continuously changing (like travel guidelines and pricing), they needed a flexible database that could quickly adapt new data, without any type of costly migration.
These challenges naturally point towards NoSQL solution like Apache Cassandra.
Collaborative Approach
We carefully approached the challenge by beginning with research and hands-on implementation of Apache Cassandra. We deployed a small single node of Cassandra cluster in GoTours distributed environment, and this single node gradually grew to multiple nodes. This helped to understand Cassandra’s unique architecture, which includes node communication and resilience against node failures.
The engineering team tested Golang’s compatibility with Cassandra by using GoCQL driver and GoCQLx toolkit. By using these, the integration of Cassandra into their existing microservices was totally straightforward. We also explored managed Cassandra service from AWS and Azure by consulting cloud experts for better understanding of ease-of-use and control over it.
Ultimately, we confirmed that Cassandra met GoTour’s performance, availability and flexibility needs.
Solution Overview
After careful evaluation, we chose Apache Cassandra via AWS Keyspaces, which is a fully managed serverless service compatible with Cassandra. This gives benefits of Cassandra without the operational hassle of managing clusters.
AWS Keyspaces automatically replicates data across multiple availability zones which ensures durability and availability of data. GoTour’s system interacts with their data using Cassandra Query Language (CQL) by using the GoCQL driver in Golang.
Core Components
Cassandra Cluster Architecture
Basically, Cassandra’s distributed design has no point of failure. It is because data is automatically replicated across multiple nodes. If one node fails, other notes will immediately pick up the workload. This ensures complete and continuous uptime with super scalability.
NoSQL Flexibility & Go Integration
Because of Cassandra’s flexible NoSQL model, it was easy to adapt GoTour’s database schema which was dynamic and semi-structured with travel data. The use of GoCQL and GoCQLx made the integration seamless for GoTour’s microservices and database integration.
AWS Keyspaces Configuration
We set AWS Keyspaces to manage replication of data across three availability zones (Replication Factor = 3). We used QUORUM consistency setting, which ensures at least two replicas must confirm data read-write operations. This provides a practical balance between data accuracy and data availability. AWS Keyspaces also has functionality of auto throughput scaling based on demand. Which is useful to provide consistent performers during sudden traffic spikes.
Azure Comparison
We also considered Azure’s managed Cassandra service. Basically, it provides more manual control (like node selection in custom setups), but it also comes with more operational work. So, we go with AWS Keyspaces for GoTours because of its simplicity and reduced maintenance complexity.
Technical Implementation
We configured AWS Keyspaces environment for GoTours with Replication Factor (RF)=3 and consistency=QUORUM. This is to ensure that data is always up-to-date and it gracefully handles the node failure. We also fine-tuned data models of GoTours by designing tables around specific query patterns (Like hotels searches by city and date) to maximize the performance.
The GoCQL driver has also become very useful to handle node discovery and to ensure smooth failover, if any not become unresponsive. We simplified their code by using query builders provided by GoCQLx for minimizing errors.
Measurable Outcomes
✔️ 5-10ms Significantly Lower Latency
The system handles 8× more than normal traffic with zero downtime and maintains a minimal response time of under 300ms during peak holiday promotions.
✔️ 3x Scalable & Robust Performance
We saved cost with pay-per-use pricing and by eliminating a fixed stack of servers.
✔️ 99.99% High Availability
Their new microservice based setup allowed quick deployment of function, without affecting the entire system.
✔️ 100% Strong Consistency
Achieved 99.99% uptime since launch, with failovers automatically handled by AWS services.
✔️ 20% Reduced Operational Overhead
The reduced site slowdown has boosted the overall user experience and revenue.
Key Learnings
Through this implementation, we gained a strong understanding of how to balance Cassandra’s replication and consistency levels to achieve both reliability and performance. The flexibility of NoSQL proved valuable, enabling us to adapt data models quickly in response to business needs without downtime or complex migrations. GoTours also recognized the advantages of managed services, which significantly reduced operational overhead compared to self-managed setups. Experiencing Cassandra’s cloud-native features—such as auto-healing and seamless scalability—reinforced a cloud-first mindset for building resilient systems. Finally, extensive testing and close collaboration with cloud providers and GoTours’ operations teams ensured a smooth rollout, highlighting the importance of thorough preparation and teamwork for successful implementation.
Future Outlook
We are planning to deploy multiple active setups across different AWS regions to improve global latency and strengthen disaster recovery capabilities. In parallel, we intend to run self-managed, multi-node Cassandra clusters in a test environment to deepen our technical expertise and explore advanced features. Additionally, we are keeping the option of using Azure-managed Cassandra open to gain greater flexibility and control, while also exploring hybrid and multi-cloud deployment strategies as part of our long-term roadmap.



