A Docker Deployment Workflow

Docker is an amazing technology and it just simplifies both workflows and communication. Traditionally, the cycle of getting an application from local development to production is a pain and if you want to know “ask the developers”.

code-test-deploy

Say, you are in verse to setup a startup company.Bringing forth a new idea and deploying a new application into production can take weeks for a complex new system. That’s definitely not an effective approach, not even production though. The gap between Dev and Ops starts to contradict blaming each other at every point of getting the code run on laptop to development environment, from development to production and finally to Cloud.

If you are part of large enterprise, it often requires a lot of effort and communication between teams of people. This process can often be both technically challenging and expensive, but even worse, it can limit the kinds of innovation that development teams will undertake in the future. If deploying software is hard, time-consuming, and requires resources from another team, then developers will often build everything into the existing application in order to avoid suffering the new deployment penalty.

Hence, a typical Deployment workflow looks like:

WithoutDocker_workflow

  1. Application developers request resources from operations engineers.
  2. Resources are provisioned and handed over to developers.
  3. Developers script and tool their deployment.
  4. Operations engineers and developers tweak the deployment repeatedly.
  5. Additional application dependencies are discovered by developers.
  6. Operations engineers work to install the additional requirements.
  7. Loop over steps 5 and 6 N more times.
  8. The application is deployed.

With Docker, it becomes quite easier. Let us see that complexity to simplicity diagram:

Docker_Workflow

  1. Developers build the Docker image and ship it to the registry.
  2. Operations engineers provide configuration details to the container and provision resources.
  3. Developers trigger deployment.

Did you know how the simplicity was achieved? The reason is Docker.

Docker allows all of the dependency hell issues to be discovered and fixed during the development and test cycles. By the time the application is ready for first deployment, that work is done. And it usually doesn’t require as many handovers between the development and operations teams. Now that’s magic what Docker brings on the table. Of course, there is a lot of innovative stuffs happening behind the curtain.

~ Source: Docker Up and Running