One of the promises of Docker is to make it easier for your dev teams and your systems administration or DevOps teams to work together. For many though it’s not clear how to deliver on this. At Myriad Mobile we have integrated Docker into a seamless workflow with clearly delineated responsibilities between teams.
At Myriad Mobile we’ve been able to take advantage of Docker’s ability to separate concerns when building customer platforms. In order to do this we had to take the time to understand the fundamentals of containerization.
With this in mind we were better able to understand how best to tease out the strengths of our Web and Systems teams. Separating out these strengths was a bit tricky at Myriad. We have a lot of passionately curious engineers who know a lot about what they do and a quite a bit about everything else.
After some thought it was clear that our Systems team’s core strength is in configuring and managing infrastructure. On the other hand, the Web team is best at building platforms. We kept our teams strengths in mind as we delineated responsibilities for portions of a Docker container’s lifecycle.
The life of a Docker container starts with it’s inception. Creating a Docker image often requires a good understanding of the OS that the container is built upon. This made it pretty clear our Systems team would create the images and keep them up-to-date. Next the images are used to build a platform.
Once the image is ready the Web team takes over. When building a platform the Web team decides how to configure the Docker container. This either takes the form of modifying the Dockerfile or determining which environment variables need to be made available to the container. The beauty of Docker really starts to shine at this point in the process.
In the building phase our Web team is able to make rapid adjustments to the configuration of the Docker container. More often than not these adjustments require no intervention from the systems team. Previously, these sorts of changes would have to be agreed upon by everyone and the infrastructure would have to be updated. Now our Web team is able to rapidly configure and deploy containers many times a day if necessary. This leaves the final part, maintenance, to the systems team.
Maintenance has become much less of a burden for our systems team with Docker. This is primarily because the infrastructure that runs the containers can be transient. If hardware starts to fail another machine can easily be brought up to replace it with minimal requirements and configuration. This has been great because now our systems team can focus on what they love most: managing systems.
Docker is a great tool whose benefits can be far greater than they may initially appear. As you adopt Docker take the time to see how it can enhance how your teams divide their responsibilities. In the words of Chris, our systems engineer, “Containerize all the things!”