5 Secrets for Developing Software Like a Pro

By | LBi Dynasty | Leave a comment

How We Developed Software for a New Pro Sports League in 6 months

software development

The Story

It was April 2020 and LBi Software was very happy to have landed a new client! Athletes Unlimited (AU) is the new sports league on the block. They describe themselves as, “A network of new professional sports leagues where athletes compete in fantasy-inspired games in softball, volleyball, and lacrosse.”

We are one of the leaders in the sports software field. We have done pivotal work for high-profile clients like MLB, NBA, NFL. We have also developed proprietary software for six different MLB teams as well as several teams from the NFL and NBA.

Creating software for a new sports league was something right up our alley. Little did we know, within one month of signing this new contract our office would be closed due to COVID-19. We had no idea if fans would be in the stands for games. Would fans want to tune in to a new sports league during a pandemic? With everything going on in the world there was a lot of uncertainty.

1. AWS

Amazon Web Services (AWS) is one of the leading cloud service platforms (CSP). We leverage their services for hosting a number of our applications. They offer fully managed services that allow teams to focus on building products rather than deploying and maintaining hardware.

AWS utilizes a shared responsibility model. This offloads many of the responsibilities involved in managing infrastructure for building web applications. AWS is responsible for the security “OF” the cloud. We are responsible for the security “IN” the cloud. AWS plays a pivotal role in our ability to develop highly available and reliable web applications.

2. Containerization

One thing that helped reduce our uncertainty was utilizing the powerful tools of AWS. We choose to go with AWS Elastic Container Service (ECS) to deploy a number of microservices. This was a seamless process. Many of our web applications had already been containerized using Docker. This allowed for zero-downtime deployments which were a real game-changer for us. This feature gives us the ability to deploy new software without having to notify all the users.

Containerization is something that has really improved the developer experience (DX) at LBi Software. Docker has significantly improved the onboarding process between projects. You can now switch between projects or microservices in a matter of minutes. This is especially useful for some of our older projects that require older versions of software such Angular, Node.js, or Gulp.

3. CI/CD

We integrated AWS ECS with our Jenkins Continous Integration/Continous Deployment (CI/CD) pipeline. What resulted was a very reliable service to deploy each service to one of our three environments. We utilized Jenkinsfiles to be able to create reusable deployment scripts. These scripts were stored in source control. We followed the GitOps best practices to be able to treat our deployments/infrastructure as code (IaC).

I cannot stress enough how important it is to have an automated and reliable deployment system. We have one-click deployments for eight microservices in three different environments. We have complete faith that our services are going to be deployed when we want, where we want, and with the correct codebase.

4. Managing Fully Remote Work

Working with a fully remote team was also something that was new to us. Communication was vital to our success. We were big advocates of Zoom. We held daily standups. This not only helped us stay on top of our goals but encouraged human interaction in a time when no one was leaving their home. The standup gave our teammates something to look forward to in the morning.

We were able to make very good progress on the products we were developing. We had to spend a few weekends doing the heavy lifting to ensure that we could accurately score games in real-time. It was worth it in the end. Our first weekend was a giant success! It is times like those where our team felt intense feelings of satisfaction and fulfillment. Everything just came together in a sense of synergy.

5. AWS Insights to The Rescue!

Another core component of our success was more AWS tools! We utilized AWS Relational Database Service (RDS) to manage our database in the cloud. This is a managed database service. This allowed us to scale out our infrastructure with just a few clicks. We were able to diagnose bottlenecks and expensive queries in real-time. This helped us to avoid deadlocks and unwanted latency. As our database grew, we needed to make improvements by implementing query optimizations and using proper indices as our database. AWS RDS made finding these areas for optimizations a breeze.

Lastly, one of the most important AWS services we leveraged was AWS CloudWatch. This was our “Command Center”. We used it while we were consuming real-time data. This was vital to being able to support live sports games. We wanted to be able to keep an eye on important metrics like traffic, CPU, and memory utilization to ensure that our microservices and databases were performing optimally.

Conclusion

In conclusion, this project was a massive success! AU is a growing sports league. They have been picked up by some major sports channels and have established a really engaging fan base. Their scoring system is starting to be widely used at multiple levels of sports organizations. They have wrapped their first softball and volleyball seasons. Lacrosse (LAX) is on deck for this summer. They already have plans for a season 2 of softball! We could not have done it without the help of the scalable and highly available tools and services provided by AWS!

In the exciting world of software development, this was a very challenging project for us. We learned a lot and were pushed to think outside the box. We had to establish new ways of communicating during a crucial time in history. We grew not only as individuals but as an organization. I am proud of my team. I am happy to be a part of such a powerful and inspirational movement.

Cheers LBi!