I have had a version of the following conversation more than a few times with community members trying to sort out where to run their containerized apps in production:
User: So, where should I run my containers? Bare metal or VM’s
Me: It’s not a question of “either / or” – that’s the beauty of Docker. That choice is based solely on what’s right for your application and business goals – physical or virtual, cloud or on premise. Mix and match as your application and business needs dictate (and change).
User: But, surely you have a recommendation.
Me: I’m going to give you the two word answer that nobody likes: It depends.
User: You’re right, I don’t like that answer.
Me: I kind of figured you wouldn’t, but it really is the right answer.
There are tough questions in the world of tech, and the answer “It depends” can often be a cop out. But in the case of where to run your containerized applications it really is the best answer because no two applications are exactly the same, and no two companies have exactly the same business needs.
Any IT decision is based on a myriad of variables: Performance, scalability, reliability, security, existing systems, current skillsets, and cost (to name just a few). When someone sets out to decide how to deploy a Docker-based application in production all of these things need to be considered.
Docker delivers on the promise of allowing you to deploy your applications seamlessly regardless of the underlying infrastructure. Bare metal or VM. Datacenter or public cloud. Heck, deploy your app on bare metal in your data center and on VMs across multiple cloud providers if that’s what is needed by your application or business.
The key here is that you’re not locked into any one option. You can easily move your app from one infrastructure to another. There is essentially zero friction.
But that freedom also makes the process of deciding where to run those apps seem more difficult than it really is. The answer is going to be influenced what you’re doing today, and what you might need to do in the future.
So while I can’t answer “Where should I run my app” outright, I can provide a list of things to consider when it comes time to make that decision.