Creating an Iterative Software Development Lifecycle with Docker
Using Docker to create web development workflows
Challenge: Access to expert information, best practices
Jeremy Derr, a Software Engineer at Djed Studios, found himself responsible for picking up the pieces of a hodge-podge DevOps solution after a colleague left the organization.
With little documentation or understanding of the original strategy, Derr wanted to wipe the slate clean and create a DevOps solution that supports a high-performance development model. He wanted a way to encourage an iterative software development lifecycle that enables a degree of self service IT by reducing the infrastructure team’s time spent on supporting the local development environment.
Having heard about Docker containers from a colleague, Derr started to evaluate Docker as the center of a push-button solution to deploy code to the dev team and create production-like environments for testing code changes. Djed Studios’ stack is in Python, a skill set that not all the developers are proficient in.
A push-button reset and automated code deployment process helps developers test the impact of new code, create a streamlined web development workflow, and foster a selfservice culture that reduces the workload for the infrastructure team.
However, Derr didn’t feel confident he understood exactly what Docker did and its potential. Docker documentation, practical advice on troubleshooting Docker, and published Docker case studies were scarce.
“I hadn’t yet figured out how Docker worked on a Mac. I just felt I was missing some key concepts that were needed to make the project successful,” Derr said. “Docker seemed almost an abstraction of a virtual machine. It was difficult to get a picture of what actually happens on the VMs.”
Solution: Expert Knowledge of Docker and DevOps
Derr recently sought information at his local DevOpsDays event. Unable to attend, he found Flux7 CEO Aater Suleman’s talk “Using Docker to Improve Web Developer Productivity” from DevOpsDays Austin 2014. You can see those slides here.
During a brief consultation, Suleman explained the key concepts behind deploying Docker containers. He shared a variety of scenarios for Derr to consider, all aimed at optimizing infrastructure and creating a web development workflow to support increased productivity. “He (Suleman) was the primary source for getting the first version of our application created. He explained it was like a virtual machine for a single process, and it just snapped. I realized what made it so special, and I couldn’t wait to get it running,” Derr said.
Result: Automation for Improved Web Developer Productivity
|Efficient iterative software development||Improved developer productivity|
|Automated developer workflows||Quicker deployments|
Following the consultation, Derr said he went into his cave for a bit and came up with an application called Soos, named after the character in the Disney XD show Gravity Falls. Soos is a shell script that automatically sets up a VM, installs Docker, downloads Docker images, and brings up the correct arguments and version of the app code. It pulls up the full stack to get new developers running quickly.
For existing developers, it automatically sets up the application code and environment for testing. It accesses a shell to test the code and builds all the static assets. The impact Soos has made on Djed Studios’ development is significant.
Derr explained: “It has helped our developers become more experimental with code. If they go down a path to the dark and dangerous, they can just reset the environment. Where it used to take an hour and multiple resources, now developers can return to their previous state in a minute and a half, with no assistance.”
This new flexibility enables Djed Studios’ developers to be more creative, play with the code, and get innovative results. It has also led to faster software iterations and increased productivity by spending less time maintaining local development environments. “I recommend anyone looking for practical answers about Docker and DevOps approaches speak with Flux7. If we need additional help with this, Aater [Suleman] is the first person I will call,” Derr concluded.
Derr’s Soos application can be found here on Github https://github.com/jcderr/soos