Improving the resilience and scalability of the Bongo’s Bingo ticketing system by creating an AWS DevOps culture
What is Bongo’s Bingo?
Bongo’s Bingo is a bingo-based club night founded in Liverpool in 2015. It has since exploded in popularity to the extent that over 500 Bongo’s Bingo events were held UK-wide and worldwide in 2019, including nights in Amsterdam, Paris, Ibiza and Sydney. Events consist of several rounds of bingo mixed with rave intervals, dance-offs and catwalks.
Why Lambert Labs?
Bongo’s Bingo came to Lambert Labs for help with maintaining and improving their ticketing application and underlying AWS infrastructure because of our expertise with Python and AWS DevOps. They needed:
- The ability to release application changes more frequently and more reliably.
- Advice on how to move from a culture of having separate teams responsible for development and operations to a DevOps culture.
- Expertise on how to make their ticketing system autoscale to be able to handle traffic volume spikes during ticket launches.
What we did
We built a highly scalable website deployment using AWS Elastic Beanstalk. The application has over 300,000 users and the website sold more than 170,000 tickets in 2019.
A particular area of focus for the project was the creation of a DevOps culture by performing the following tasks:
- Setup continuous integration and deployment for all services using CircleCI.
- The CI pipeline automatically lints and unit tests all code when it is committed, thus allowing the development team to build features more quickly and reliably.
- The CD pipeline automatically deploys to the staging and production environments, thus allowing the team to release application updates more quickly.
- Deployed a Django web application using AWS Elastic Beanstalk, Amazon Elastic Container Registry, PostgreSQL on Amazon RDS and AWS Certificate Manager.
- Used infrastructure as code (CloudFormation) to help us manage the staging and production environments in a repeatable fashion, thus saving time and cost.
- Because the website/app experiences huge surges in traffic around ticket release times we implemented a highly scalable solution to minimise hosting costs incurred during quiet periods but maintain reliability during surges.
- Setup robust database backup and restoration processes.
- Our DevOps-styled implementation allowed us to make application updates and infrastructure changes at pace while maintain reliability for Bongo’s Bingo’s customers.
Python application code:
- Worked on an existing Django web application.
- Maintained and improved an existing Stripe integration in order to streamline the customer payment process.
- Added API functionality to the Django application via the Django Rest Framework.
- Used the Django ORM to optimized database queries, thus ensuring that the ticket purchasing process works correctly for all users when under heavy load.
Testing and quality control:
- Built an automated browser test suite using Python and Selenium. The test suite runs against both the local, staging and hotfix environments to ensure no bugs creep into production.
- Built an automated app test suite using Python and Appium. The test suite runs against iOS and Android versions of the app to ensure no bugs creep into app releases.
- Configured and implemented linting across all microservices, including Python, CSS and JavaScript.
Logging and monitoring:
- Configured dashboards in Amazon CloudWatch to monitor application and database servers in production and staging environments.
- Setup CloudWatch alarms and uptime alerts using AWS Simple Notification Service.
Workflow:
- Implemented daily standups on Google Hangouts.
- Setup task management on Jira, integrated with GitHub.
- Migrated all team communication to Slack. Integrated CircleCI with Slack so that CircleCI build failures are reported to a dedicated Slack channel.
- Wrote robust documentation using GitHub Wiki.
- Setup a robust code review process so that all work is comprehensively peer-reviewed before being released.
At Lambert Labs we use Django to build robust and scalable web applications. Find out more about our Django development services.