Maintaining Docker Portability in a Multi-Cloud World
In just a little over 3 years, Docker has seen incredible growth, citing numbers like over 5 billion+ Docker Hub pulls, 600,000+ unique Docker Hub users, and 600,000+ Dockerized applications. This attraction to its platform hasn't come from media attention and promises alone, but in the follow-through of providing a portable and scalable solution that works across all platforms and environments. In today's IT economy where cloud vendors are competing at new levels for market share (just look at the latest numbers from Microsoft), what does true application portability look like that takes advantage of all the cloud offerings we have today?
Using Docker as the foundational container solution, portability is defined as the ability to move workloads across different infrastructure environments, maintaining consistency while enabling Hybrid Cloud and multi-cloud for the enterprise. What this means in practice is the seamless ability to be running your application stack(s) in AWS one minute and perhaps Azure or back to on-premise bare-metal the next. In Docker's Containers-as-a-Service platform, you can not only enjoy these benefits but be rest assured that you will be forever free of PaaS vendor lock-in as Docker's open source offering continues to be the standard for running containers across all infrastructures.
AWS, Google, and now Azure support running Docker containers within their platform, utilizing proprietary services that guide you further into their solution. While many enjoy the multiple offerings of these providers (as they surely have been transformational to IT infrastructure the last few years), relegating yourself to vendor service lock-in is restricting yourself from the true portability that a Docker containerized solution can provide. Deploying within Amazon Web Service's EC2 Container Service (ECS) for instance, would now force you to utilize proprietary hooks that only correlate to ECS. Once there, you will now also be encouraged to make further integrations to other AWS-specific services that most likely will not correlate to any supported service outside of AWS. While these are great tools AWS provides, your application stack would no longer be able to seamlessly transition between providers when costs decrease or say a decision comes down from management. In an environment where we see Microsoft providing substantial discounts to encourage movement to Azure, this scenario is very realistic, but often overlooked.
Using a centrally-located and open orchestration and management platform for containers, such as Docker's Docker Datacenter, apps can be supported between multiple cloud providers or on-premise. Nodes are spun up from each respective provider needing only the Docker Engine installed – no vendor-specific services besides the ones providing vanilla hosts. Workloads can transition seamlessly across hybrid infrastructures and from one cloud service provider to another, as shown at a high level in the below graphic.
Using the correct tools and setting a standard for continually testing portability as your development progresses will ensure ultimate flexibility when you need it most. The best part about it is, containerization takes care of the hardest parts for you. Simply setting up your container environment in the optimal way with Docker Datacenter for portability will ensure these standards for you moving forward.