We were asked to assist a US-based gaming company in rewriting their backend to improve scalability, performance, and stability by breaking down a monolith architecture into micro-services. They sought help with rebuilding their critical transaction engine amidst a fragmented legacy stack with diverse libraries and languages.
We assembled a team of expert engineers with relevant experience who could quickly understand the fragmented legacy codebase and devise a solution despite limited client availability. We delivered the project in small batches to effectively track progress. Starting with an analysis of the Groovy (Grails) codebase, we divided it into logical units for parallel implementation, defined data models, and established contracts between the new micro-services and the remaining monolith, which helped shape our project backlog. We scaffolded the project using Backstage, creating a transaction engine in Go capable of processing hundreds of requests per second using a moderate instance, integrating with PostgreSQL, Redis, and AWS SQS queues. The new application was deployed in an AWS EKS cluster using a GitOps approach with Helm, Helmfile, and ArgoCD, while IAM and supporting resources were managed through Terraform, overseen by Atlantis integrated with the client’s GitHub. We ensured compatibility through end-to-end tests, each reflecting specific tournament types that served as our milestones, ensuring the new independent micro-services met all requirements.
The project was completed in six months and was ready for rollout as per the client’s timeline. We developed an internal Go library with reusable components and leveraged our experience from previous projects to build robust end-to-end tests. Our involvement extended beyond the initial scope, as we also assisted in fixing the client’s infrastructure as code (IaC) issues, updating outdated Terraform resources, and integrating manually created resources into Terraform. The new system significantly outperformed the legacy version, with a faster, smaller codebase that enhanced debugging capabilities and extensibility, demonstrating our commitment to delivering a comprehensive, high-quality solution.


