Have you ever gotten one of those bug reports that you look at once and say to yourself... "That's not a bug. They must be doing it wrong."
You tell tech support as much, so they impersonate the user and record a screencast of the bug occurring.
So, you go to your development machine, repeat the steps, and voilà! Works on my machine!
So, you go to your staging environment... Broken there...
How did no one catch this?
Wouldn't it be nice to have caught this in development? Why does it work here, but not there?
Well, the not so subtle difference between my development machine and the server in production has been that I have a nice shiny MacBook Pro that is serving an app to a grand total of 1 user.
The production machine is a linux server that has the entire internet bombarding it with stuff.
Plus, all those nice binary packages are compiled for linux instead of for Mac. A minor version difference is sometimes all it takes to put your app over the edge.
Imagine your development environment looked exactly like production, but you still got to use your favorite tools to do the coding.
I can build with Visual Studio Code and immediately see the changes just as in production without running a deploy script?! Sweeeeeet!
One of the most popular of these tools is Docker.
The cool thing about Docker is that besides making development look like production, you can also ship a container to a Continuous Integration system and have it test a production-like system.
And, you can deploy those containers to production once you've verified that they work.
And we got an IBM engineer coming to show us how to do it at DevOps Remote Conf!
Don't miss Chris Rosen's talk! And don't miss the 50% off Early Bird tickets through Sunday (Dec 18)!
I'm looking forward to seeing you there!