Like many of you I'm constantly questioned by upper management types to describe Docker. The questions I'm constantly asked by these people range from - "What is Docker", "How will Docker benefit my business or team?", "How much does it cost?"
It's easy to jump right into the technical benefits of Docker. However, many times with management you will quickly notice their eyes quickly gloss over or roll back in their heads and give you that deer in the headlight look as you excitedly describe how to push a container or explain your favorite CI/CD workflows.
Put on your management hat and backup. Describe Docker from a very high level view. What has worked well is presenting a diagram of the comparison between a VM and a Docker container so your audience can visualize Docker. Next, describe the large community behind Docker and give a demo of Docker Hub. Finally, install a Wordpress container or any image you like as a quick demo on a server local in your office.
At this point your audience is usually hooked into your conversation. Now, we need to start building our Docker business case on why you need Docker for xyz. Here's where we transition into a sales role. Put on your sales hat on as we are now going to discuss how Docker will reduces costs, standardize our infrastructure and consolidate resources all while reducing time to market on delivering your company's product or service.
What drives most management decisions when selecting a new product? Reducing costs yet raising profits all while staying within budget is the usual suspect.
How can Docker reduce costs you ask? Docker enables businesses to optimize infrastructure resources, standardize environments and reduce time to market.
Flexibility is also a huge cost savings tool. Docker enables users to run their containers wherever they please either in a Cloud or on-premise. You ask how can I save money with flexibility? No more vendor or Cloud lock-ins. Move your containers to any Docker host on any infrastructure from Amazon, Google, or Azure to the server under your desk.
Regardless if a container is running in a Cloud or on a laptop, Docker makes it easy to standardize your environments from Development to Production. Package your application and all it's dependencies into a single container removes common inconsistencies that are present between Development and Production and allows you to run the same container in any environment.
Easily reproduce production or test environments, setup and distribute new environments. This allows for standardized environments which can be easily managed and updated.
No longer is it required to run a separate VM per application. Now, Docker empowers you to run as many containers as your infrastructure can handle.
During my DockerCon presentation I presented an actual use case where we had a Database as a Service where every Database was provisioned inside it's own VM. At one point we had upwards of 200 VM's running 200 Databases. This was not only expensive both from a resource and cost perspectives, it was also extremely inefficient.
After moving to Docker we were able to consolidate the 200 Databases into 200 Docker containers running on just 20 VM's. This allowed us instantly to reduce costs and at the same time our infrastructure became easier to manage.
Did I mention this saved us money?
Time to Market
Time is something we can never get back. However, Docker reduces the amount of time it takes to install an application, scale to meet customer demands or simply start new containers. Every precious second that you can save is also money saved. Now you determine when when your product is available on the market and not your infrastructure.
Docker also easily integrates into all the popular Continuous Integration/Continuous Delivery pipelines enabling Development and Testing to deliver seamless updates to production much more efficient. However, in the event of a problem you can now easily roll back to the previous version as quick as as it was installed intially. Even in failure situations it is easy and quick to rollback.
I've pitched Docker a ton of times from large corporations with huge development teams to single developers and everything in between. What is common between the different pitches is everyone is interested to solve their particular problem. These problems I find are always unique to the person, project, or company. For example, I have X application I need to deploy in a standard environment, or I need a test, dev, and production CI/CD, or improve infrastructure efficiency, etc etc. Be sure to adapt your business case to your audience and do your homework.
Docker is really not just a tool, but actually a tool belt that helps drive down costs, standardize, consolidate resources and reduces time to market.