Containers, virtual machines, or bare metal?

Containers, virtual machines, or bare metal?

A maze
Image by : 
Opensource.com

Which technology will you use to deploy your next big application?

The data center is changing. Again. In the olden days, really not all that many years ago, pretty much every server that sat on a rack in a data center was fairly straightforward (if you could call it that). Each machine ran a single operating system, and often many programs, each requiring their own updates, upgrades, and patches. It was, putting it nicely, a hard situation to maintain, though many management tools emerged to help administrators keep all of their machines safe, secure, and up-to-date.

Then virtualization came along, and the world shifted a little. No longer were you limited to a single operating system per machine; you could stack many, many different applications, each running their own precisely-configured operating system with only the needed libraries onto a single commodity server, treating each as if it were its own server, because in effect each one was. Virtualization helped begin a shift, helped along by projects like OpenStack, from imagining each machine and application as a special snowflake, to one where applications became elastic and could grow and contract across machines as demand required and still function if one or more nodes suffered problems.

Finally, the new buzz: containers. As Docker entered the scene, making application deployment faster and easier, containers have been the rising star of the past few years as developers, system administrators, and architects must decide which applications are a good fit for building as small, composable parts run across many systems, and how they will take advantage of tools like Kubernetes to orchestrate these many pieces.

Not to be outdone, what's old is new again, and both virtual machines and bare metal solutions have kept up with their own sets of updated solutions. Bare metal and virtual machines can be managed with much of the ease of containers as the tools and technique and lessons learned from each technology cross-pollinates, and tools like Ansible, Puppet, and others can be used across all three. Tools like Vagrant bring much of the developer ease of Docker to virtual machines. And bare metal hasn't gone anywhere yet, as application use cases like big data require maximum performance from each machine they operate across.

In the modern world, we're now lucky to have three different tools, each specialized to excel as a particular type of problem, and each with many open source tools helping them to remain innovative solutions to any problem at hand. When we think about the future of the data center, we shouldn't be thinking about containers, virtual machines, and bare metal deployments as either/or choices. Instead, as each continues to innovate, we can choose the best tool for the job, depending on what the problem we are trying to solve is.

All three are probably here to stay, at least for the foreseeable future. But it's still interesting to ask those among us who administer systems and applications: For your next project, how do you plan to deploy? Bare metal, virtual machines, containers, or some combination of the three?

Topics

About the author

Jason Baker - I use technology to make the world more open. Linux desktop enthusiast. Map/geospatial nerd. Raspberry Pi tinkerer. Data analysis and visualization geek. Occasional coder. Sysadmin. Web maker. Red Hatter since 2013.