BattlefyBlogHistoryOpen menu
Close menuHistory

Continuous Deployment at Battlefy using Docker, NodeJS, Jenkins, AWS, and Screener

Battlefy May 8th 2014

At Battlefy, we believe that our engineering culture is what empowers us to boldly disrupt the eSports industry.

Our mission: to make organizing tournaments easier and connect gamers around the world to the competitive scene of eSports. Ultimately, eSports wouldn’t be what it is today if we didn’t have that an ecosystem of organizers, pro gamers, and people who are passionate about competitive gaming. That said, our engineering team focuses on automation, speed of delivery, and risk mitigation.

In this blogpost, I’ll outline some of the core technologies and tools we employ in our current delivery process.

Docker

Docker

In order to streamline the process of deploying applications across our infrastructure, we use Docker to make it super easy to get setup and manage applications using Fig. As we started to accelerate our product development with our heroic roadmap, we found ourselves hamstrung by deployments. From configuration issues to having to login to specific servers to complete deployments. This all took up way too much time so we decided to invest more time in automating our deployments using Docker and Fig.

On top of that, there are so many Docker images and the community is growing every day. It is really easy to find support on StackOverflow and we found that it was really easy to experiment — For example, we decided to spend a little bit of time investigating the performance gains we would get by swapping Mongo for TokuMX (Docker image). TokuMX claims 20x performance on reads and based on a few quick stress tests, we found that to be true (not 20x for our use cases but we did see massive performance gains).

Docker has really enabled our engineering team to move fast and find solutions quickly.

Jenkins

Jenkins CI

Jenkins is a highly popular CI server which basically has every plugin you could hope for. Whenever a pull request happens on any of our repositories, Jenkins pulls down that branch, runs tests on it and notifies GitHub (in the Pull Request View) whether or not the branch passes or fails CI. We can then click into that and it deep links into our Jenkins build console. Additionally, we use Jenkins to automate deployments to our mobile beta users. If a pull request gets merged into “develop” branch, it automatically pushes the mobile app to TestFlight and TestFlight distributes it to the engineering team. If a pull request gets merged into “master”, it automatically gets pushed out to our Beta users.

Screener

Screener: Automated Visual Testing Tool

Screener is an application that makes it easy to do visual diffs for pages and states across a multitude of web browsers and resolutions (for mobile responsive). We currently queue up builds in Screener after we deploy a Docker application to an environment (this happens once we merge a pull request into develop) and then Screener runs through several core use cases detecting any changes and surfacing any visual diffs. Once the tests are complete, Screener notifies us of any changes (side-by-side diffs or overlay diffs) via a webhook.

Our team currently uses JIRA for all issue tracking and Screener’s ability to take screenshots and automatically upload them to JIRA when a visual diff is found makes it even easier for us to track bugs.

Logstash, Kibana, and Elastic Search

With good insight into our environments, we’re able to detect bugs and strange behaviours quickly. LogStash, Kibana, and Elastic Search provide us with the ability to see exactly what is going on in different environments. Debugging NodeJS apps can be tough especially when you have distributed systems talking to each other — having logging in place is absolutely essential to gaining valuable intelligence that you can use to prevent problems ahead of time! Nobody likes being at up 2am and trying to figure out why something is broken on production!

The Grand Perspective

Our Pipeline

For the last month, we’ve been hard at work focusing on making it possible to deliver fixes and features faster and more effective than ever. We’re extremely happy with Docker and Screener as they have been vital tools for accomplishing our continuous delivery to a pre-production environment.

Did you know? We’re always looking for talented software engineers and growth hackers that are passionate about gaming and eSports.

Follow us at @Battlefy!

Bracket Generator
May 30th 2014

2024

  • MLBB Custom Lobby Feature
    Stefan Wilson - April 16th 2024

2023

2022

Powered by
BATTLEFY