Registration Reminders by Email

Imagine effortlessly discovering the best local motorsport events from the world's largest collection, tailored just for you - this is the story of transforming that dream into reality.

Imagine effortlessly discovering the best local motorsport events from the world's largest collection, tailored just for you - this is the story of transforming that dream into reality.

Introduction

In the dynamic world of motorsport, our client stands out with the largest global events calendar, offering enthusiasts a comprehensive platform to search for events based on various criteria, including location. Their website, powered by a blend of ColdFusion and NodeJS applications within a monolithic architecture, has been the go-to destination for motorsport events. Additionally, the client offered a REST API, albeit used by a limited customer base, to retrieve event information. Central to their system was a Postgres database, serving as the backbone for both their primary applications and the REST API.

Challenge

The ambition was to elevate the user experience by introducing a cutting-edge GraphQL API complemented by an HTML widget. This widget, designed for integration on customer websites and other motorsport platforms, would draw its data from the REST API. The new GraphQL API aimed to incorporate automatic geolocation for visitors, ensuring that search results were localized and relevant. Furthermore, it needed to support various ad hoc search criteria.

A significant concern was to ensure that the increased load from the GraphQL API would not adversely affect other systems relying on the shared Postgres database. The existing REST API, while functional, risked creating noisy neighbor problems due to its legacy architecture. The challenge was twofold: devising an architecture for the GraphQL API that was efficient and cost-effective and developing the HTML widget in-house.

Solution

Our approach was to harness AWS AppSync for the GraphQL API, with Lambda resolvers providing the necessary flexibility. To facilitate geolocation, AWS CloudFront was employed, taking advantage of its native geolocation headers.

We opted for a dual data store strategy: DynamoDB for primary data storage and OpenSearch to facilitate ad hoc search queries. AWS Database Migration Service (DMS) played a crucial role, seamlessly replicating data from Postgres to DynamoDB. This replication not only ensured real-time data synchronization but also protected the Postgres database from potential overload.

The entire infrastructure, including the AWS CDK, was managed using Infrastructure as Code (IaC) principles, which streamlined the deployment process across different stages - from development to production.

Outcome

The result was a robust, scalable GraphQL API capable of handling high traffic volumes without impacting other systems. The API's speed and efficiency, combined with the well-managed costs due to AWS's serverless services, proved a game changer. This setup ensured optimal performance during both peak and off-peak times. Furthermore, the confidence in deploying changes was bolstered by our commitment to IaC, allowing swift and secure updates to the architecture and code.

In conclusion, this solution not only revolutionized how motorsport events are discovered and accessed but also set a new standard in leveraging modern cloud technologies for seamless and efficient digital experiences.

Client
Part of Hagerty Motosports, MotorsportReg specializes in providing services and online tools to help organize and manage motorsports events. It's widely used by over 750 motorsport clubs, race tracks, and sanctioning bodies and has been instrumental in organizing more than 18,000 events.
Related Work

MotorsportReg's Journey to a Scalable and Cost-Effective GraphQL API

Transforming the world's largest motorsport event calendar into a more dynamic, scalable, and globally accessible platform.

Remote Development on EC2

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce commodo fermentum justo, at fermentum lacus tempor ac. Aliquam id euismod mi.