Due for a DisruptNext year AWS turns 10 years old. The cloud is getting extremely mature and there are multiple cloud providers touting their individual features that makes each unique in value. There is a huge following (myself being one of them) that "the next cloud" will be containers. The AWS for containers will be Docker. I have attended a few Meetups regarding Docker specifically, and I am always impressed with the innovations that are constantly being released. Docker version 1.8 was released this week and I see it as the first release that makes the solution enterprise friendly. There are a few items to call out specifically in this release that makes getting started with Docker that much easier, most notably Docker Toolbox. One of the items I do not see discussed enough is the overall value containers bring to each group within the software development life cycle. Containers are not just a new way to develop and deploy applications. Containers provide significant value to each team who interacts with an application. Let us investigate how containers impact development, deployment, operations, and business teams.
Take a look at any downloaded application, and you will see something like this:
To get each one of these icons, developers have to create specialized libraries specific to each operating system. Imagine a world where this is not needed. Imagine the reduction in work required by a developer to produce an application that can be ran on any operating system. Imagine if a developer did not have to push out fix packs for supporting a new security patch. This would fundamentally cut down on the time required to reach all potential users of that application. Do you want to develop faster? Containers are the option for you!
Microservices Deploy Faster
It only takes one syntax error to break a deployment. Too many times have I been sitting on a deployment call where someone fat fingered a host name or forgot to open a port and the whole deployment failed. Microservices are the answer to address these items, and containers effectively ensure that microservices are deployed correctly. If there is an issue with a single configuration, it is easily identifiable from the containers perspective and will only impact one microservice as opposed to corrupting the whole push. There is a lot of players developing container management solutions, and in turn are making microservices extremely easy to manage and control.
Growing Elastically for Production
An item I always ask customers is; "How many concurrent users do you have?" When I do get an answer (which is very infrequently), it is often wrong and not true for every scenario. Virtualization was the original answer to address the requirement for elastic environments. This did work for a time, but now environments are becoming too large to manage. An application developed in containers can grow horizontally and vertically to account for any event (even catastrophic outages). Getting ready for black Friday? Add more containers. Want to cut down on cloud charges during non peak hours? Scale down your containers. Want to embrace continuous deployment/integration? Containers allow for the smallest of small incremental changes and are built to handle true A/B testing in any environment! Containers allow for 100% availability of any application that can still be constantly improved without impact to the end user!
Protecting the Brand
I have the impression that the business is the hardest group to convince containers are the best going forward strategy. Docker's image of a whale carrying shipping containers does not paint a picture that reflects simple and easy.
However, there is significant value to the brand when utilizing containers. One of the terms business/feature folks always seem to know is six-sigma, or the guarantee that the application will be running practically all of the time. Containers are THE way to ensure that end users are not impacted by hiccups within the delivery chain. On top of this, with the reduction of development time required for cross OS level support, new features can be added into the product more efficiently and can be market tested to a subset of users before deploying it to everyone. If you are the key feature driver of the application, and have ever asked "why can't we get this in quicker", you should have your team investigate containers!
The Better Way is Here!
Will containers become the standard for application development? I strongly believe the answer is yes. Living in the software world, I often see key solutions that benefit a specific group. Containers are a technology that has a key value prop regardless of what team you sit on. I for one am going to hitch my brain to this Docker wagon and see how much value I can derive!