[CASE STUDY]
AUTOMOTIVE RETAIL CUSTOMERS
SUPER REGIONS
OF DATABASE ROWS
Like many startups, Shopmonkey’s initial focus was finding product market fit. As such, they put together a hodgepodge of technologies and tried to make the system work as they rapidly added customers. In the beginning, this supported their business, but as they started to scale, it was not sustainable.
They were using MongoDB, PostgreSQL and ElasticSearch to run their platform along with multiple different ORM frameworks, dozens of microservices, and Kafka. They were running in a single AWS region and had to implement several workarounds to make the technologies talk to one another.
Not only was this system difficult to scale, but it was also difficult to maintain and guarantee uptime. They also needed a solution that would allow them to deliver low latency to all their retail customers regardless of their location (spread over in the US and Canada).
In summary, Shopmonkey’s requirements included a solution that could…
Guarantee always-on availability
Scale out to multiple regions as needed
Help them adhere to sensitive distance and latency requirements
Simplify their architecture
When CTO Jeff Haynie came aboard he suggested that the team evaluate CockroachDB to solve their challenges.
"I had been following CockroachDB for years, but never used it before. When I came to Shopmonkey, it was the first time that I had seen these really sensitive geographic, latency, and availability requirements. CockroachDB was really the only solution in the market."
-Jeff HaynieCTO, Shopmonkey
After some initial testing, the Shopmonkey team determined that CockroachDB would be a great fit to build their geo-aware platform. Next they had to re-architect their infrastructure and ultimately rebuild their entire application stack on CockroachDB.
Shopmonkey delivers a software-as-a-service that runs in the cloud (on GCP), and they have physical retail locations that the software runs in. Jeff reports that it’s an “interesting architecture” because they run the full stack in three regions with three CockroachDB nodes in each availability zone.
They set up a private link connection between each of the three data centers so they talk to one another. They also leverage CockroachDB’s change data capture (CDC) tool so that they can process real-time changes downstream.
Even though they are running in multiple regions, each region is still considered independent of one another. They use CockroachDB’s regional by row locality feature so the data is stored as close as possible to the physical location of their customer’s shop. The region that is closest to the customer services requests and ensures that they aren’t experiencing high latency.
By running in three regions, Shopmonkey has created a resilient setup. If one region fails, or there’s too much load, they can easily access data from another region.
Since Shopmonkey delivers an end-to-end platform, this encompasses many different types of applications that perform different functions such as front office accounting, customer acquisition, point of sale transactions, supply chain management, etc. They actually have billions of records of data that help their customers run their shops.
Because they built their platform on CockroachDB, they can ensure that their customers can always access applications, guarantee the consistency of their data, and scale out to accommodate new business. This new setup also reduced the amount of time they spend on maintenance and streamlined their infrastructure.
CockroachDB gives us the ability to spin up a new region and our infrastructure just continues to work. We just balance that load to the region where their physical store is located. It’s amazingly simple.
-Jeff HaynieCTO, Shopmonkey
When it comes to getting started with CockroachDB, Jeff’s word of advice is to “think about distributed SQL differently”. He mentioned that they had to retrain their engineers to understand that CockroachDB doesn’t operate like a normal PostgreSQL database, and that it’s made for more advanced application requirements.
For example, they hone the data in various regions that the store is physically located, so needed to think about how they run queries differently. They also needed to design their tables differently since some data would be global and live in every region, where some of their data would be tied to a specific region. Essentially they had to tune CockroachDB much differently than a traditional single-region database.
A second piece of advice from Jeff is to “pay for Cockroachdb consulting and services - they’ve been amazing”. Shopmonkey selected the managed version of CockroachDB and also engaged in support services to help them rebuild and tune their platform.
"It’s been a really big benefit to have Cockroach Labs consulting services. While the documentation is phenomenal, at the end of the day, you still want to talk to the experts and have that life line available. Our relationship with the team has been really invaluable."
-Jeff HaynieCTO, Shopmonkey
Today, Shopmonkey has over 6,000 customers in the US and Canada. They are focused on expanding their presence in Canada and eventually will expand into Mexico. They hope to grow their customer base by 4,000 over the next year. With over 350,000 automotive care retail locations in the US and Canada alone, there’s a pretty big market for their services.
When it comes to competition, they are really competing against themselves. They need to change automotive care retailer’s mindset about putting down the pen and paper and switching to a digital platform. So far, Shopmonkey has been very successful and will be able to scale out into the future with CockroachDB.
Go hands-on with 100% free CockroachDB Serverless. Spin up your first cluster in just a few clicks.