Gaming Software: From Monolith to Reliable, Scalable, and Secure
When monolithic modules require manual processes and don’t meet compliance requirements, it’s time for a change. That’s what our client realized as they assessed their software systems for their gaming terminals. The company was ready to build up their software development team to architect, design and build a usable, scalable, and reliable software system. They turned to SPR for assistance with the complexity of the requirements to meet their goals.
Wrangling Gaming Data
Our client provides gaming terminals, including slot machines, and redemption terminals to bars, restaurants, convenience stores, truck stops, and fraternal and veteran establishments across the United States. They collect massive amounts of data from the gaming terminals and many third-party websites on a daily basis. This data allows them to track their revenue, operational efficiency and determine where to increase or decrease gaming terminals depending on demand.
Originally, the client had a team of data scientists working on building Python modules to scrape and collect data from terminals and third-party websites. However, they had built many monolithic modules, manually copying and pasting them from their local development computer to a virtual machine without proper testing, error handling, or maintaining historical versions of their code to track changes. This led to many issues, including an inability to meet SOX compliance requirements. Additionally, a large amount of manual processes and a lack of version control created a data science process that was inefficient and not sustainable. The team faced an inefficient cloud deployment and a high cost of ownership. They were unable to deploy changes to production in a repeatable, reliable, and secure way.
Our client did not have an established software development team or department, so they engaged SPR to eliminate these issues and create SOX-compliant software and automated processes. We began by bringing together key business stakeholders and data scientists to understand requirements and existing pain points to define the goals for the project.
Designing New Architecture
Working closely with the client to understand their requirements, SPR designed a new architecture that would help them meet their goals. By designing an Azure Cloud Infrastructure and leveraging PaaS (Platform as a Service) services, our client gained a system that would automate the data ingestion and integration processes from end to end, enable source code version control, and allow for continuous integration and continuous delivery/deployment (CI/CD) of ongoing updates and new features through Azure DevOps CI/CD release automation.
The SPR team built the necessary components and led the client’s data scientists in modularizing the monolithic modules into well-optimized Azure functions, which are seamlessly scalable and run on pre-defined schedules or can be invoked from on-demand from other integration endpoints like Azure Data Factory (ADF) or any HTTPS clients. Additionally, all security credentials were moved to Azure KeyVault to safeguard the sensitive information and meet SOX compliance requirements.
As we built the software, we also worked closely with the client to help explain what we were doing and the importance of each step in our process and module we built.
Meeting Compliance Requirements
The tool now features a complete set of development, testing and production hosting environments in Azure Cloud. When changes are approved and checked into the source control repositories, the tool triggers automated builds and deployments to each of these environments. This eliminates all previous manual steps, speeds up the deployments, and eliminates any errors involved with manual deployments. The system now meets the SOX compliance requirements by keeping a complete history of code changes and deployments over time and by safeguarding all sensitive information in a KeyVault.
With the new system, our client can deploy frequently and more reliably, and their software is easier to maintain. There is now less downtime and business disruption, and lower operational expenses. The platform no longer relies on burdensome manual processes.
The system was built on the Azure Cloud Platform using Azure Function-Apps, Azure KeyVault, Azure Storage/Data Lake, Azure Data Factory, Azure SQL Databases, Azure Virtual Networks, Azure Active Directory, Azure DevOps CI/CD pipelines for continuous integration and continuous delivery, Python modules and libraries, GitHub for source-code version-control, Visual Studio Code for development, Docker Containers for packaging and deploying Python modules as containers, Azure Container Registry and Azure Communication Services to send emails.