Historically for graphic design marketplace firm 99designs, the focus was to build modularised production systems, and it was able to do so with the provisioning of Amazon Web Services — where stacks were quick to spin up and down without impacting on other running services — however the company discovered this was not the case in its development environments.
To help resolve this dilemma, 99designs became one of the first companies in Australia to look towards Docker, an open source container solution to enable developers to build, ship, and run multiple applications at once on the same operation system.
"The initial appeal of Docker was that it brought parity between our production methodologies ... and our development environments," said.
The company shifted its single "monolithic" development virtual machine to 12 Docker containers, and within six months had its whole development team using Docker for development, and two teams using it for production.
"Each container has a specific purpose and looks very much like its production equivalent. We build each of these containers in our continuous integration process, so developers can be up and running with stable, tested collection of containers in under an hour, as opposed to most of a day for our monolithic virtual machine," Donald said.
"Beyond that, we are positioned to have perfect parity between development and production by moving our production infrastructure to run the same containers that have been used in development."
While the approach for 99designs was to move its development work across to Docker as quickly as possible, Donald said in retrospect it would have been "wise to slow the rollout to the development teams".
"There is a huge amount of development being done in the broader community around how to use Docker in development and production. Early adopters pay the price of forging frontiers and I think we definitely paid that price," he said, admitting that it has taken "some time to adjust" to the containerised system.
Donald said going forward solutions such as Docker will only be "game changing" if its percolates through an entire technical team, and the distinction between a developer and ops role is eliminated.
"All of your development team should be involved in how code is deployed and how the production systems are run. Moreover, these processes should be simplified and automated to the extent that the most junior member of a team can operate them at 4am if need be," he said.