Vagrant vs Docker: The Development Environment Challenge
Earlier this June, I gave a talk at DevOpsDays DC about a tool called Vagrant. Vagrant is an application that simplifies the process for setting up a virtual machine, and is compatible with Windows, Mac, and Linux operating systems.
The general goal of the DevOps movement is to improve collaboration and synergy between the…
Earlier this June, I gave a talk at DevOpsDays DC about a tool called Vagrant. Vagrant is an application that simplifies the process for setting up a virtual machine, and is compatible with Windows, Mac, and Linux operating systems.
The general goal of the DevOps movement is to improve collaboration and synergy between the Development and Operations infrastructure in an organization. My talk focused on a simple DevOps challenge: Use automation to make your development environment as similar as possible to the production environment. The benefit is reduced risk of surprises in production and reduced overhead when onboarding new developers.
I proposed Vagrant as an ideal solution for solving this problem. Vagrant integrates with the popular provisioning tools, such as Puppet, Chef, Ansible, Docker, and Salt, to deploy your development environment the exact same way as production.
I only had five minutes to talk, so I didn’t have time to get too in depth. There was one topic that I wish I had time to address: How does Vagrant compare to Docker for development environment automation?
Docker is a relatively new tool in the community. It takes advantage of LXC capabilities in Linux to create very lightweight, and isolated, software containers. Essentially, Docker solves the exact same problem I addressed with Vagrant: Create one automated environment, and use it in both production and development. Compared to Vagrant, Docker with Docker Compose is significantly more lightweight and quickly deployed.
Given that, I was not surprised when a developer at the conference asked, “why are you talking about Vagrant for a solution that Docker does better?”
The answer is simple: Many organizations are not ready to adopt Docker.
Small organizations may be able to refactor their entire infrastructure to work with Docker quickly. Most medium to large organizations aren’t so lucky. Ignoring the technical challenges of changing a production pipeline, you also have to consider procurement processes for training and support, security evaluations, etc. In fact, there’s a decent chance your current baseline operating system doesn’t even support Docker.
If your production system is already using provisioning software (even shell scripts!) the process for porting that to a Vagrant environment is much simpler. Additionally, the bureaucratic hurdles should be relatively non-existent, as you aren’t actually changing anything in production.
The reality is that Docker and Vagrant are both suitable tools for creating a development environment that closely reflects your production environment. If you’re stuck between these two options for your organization, you can pick either one or use both. Regardless of your choice, I encourage you to embrace the challenge of designing an automated development environment that matches production.
Want to hear more of my talk? Check out the video and slides
Video Link: https://livestream.com/uspto/DevOpsDay2015/videos/89951019
Slides Link: https://slides.com/m3brown/vagrant-for-non-developers
Do you use Docker or Vagrant? Tell us more about your experiences here!
You Might Also Like
How to Deliver Impactful Software with Doguhan Uluca and Keith Mealo
In case you missed it, Excella Principal Fellow, Doguhan Uluca, and Senior Engagement Manager, Keith...
Burton White Announced as a 2023 WashingtonExec’s Chief Officer Awards Finalist
“Excellians are Passionate About Making the Tech Community More Diverse” – Burton White. WashingtonExec announced...
The Shift Left and the Future of Tech with John Gilroy and Jeff Gallimore
In case you missed it, Jeff Gallimore, Excella’s Chief Technology and Innovation Officer, joined long-time...