Docker Empowers You by Letting You Use the Best Tools for the Job
When you don't need to worry about how to install something, it really opens the door to letting you pick whatever technology fits best.
Once the burden of having to install an application and its dependencies are removed, you can become much more aggressive with trying out new technologies.
If you’ve ever worked with Ruby or Python, you know how troublesome it can be to set up a working development environment. You may even be discouraged from trying them out because you have vivid memories of you failing for 2 days while you tried to get rvm or something similar working, so you’ve trained yourself to only stick with technologies that are familiar to you.
Being free to choose whatever technology stack works best for your project is very empowering. It lets you experiment with new web frameworks and services without having to feel the pains of installation complications or feeling like you’re polluting your main system with a bunch of services you may not use.
Trying out Elixir (or Anything) in 2 Minutes
For example, I recently taught myself Elixir. I was able to get the latest version of Elixir up and running on my Docker driven dev environment within 2 minutes of running a single command.
That’s 2 minutes to go from not having Elixir installed, to having a version controlled instance of Elixir code running in a REPL. Also, 90% of the time was spent waiting for the download to finish on my average cable connection.
The best part is, the pattern to do this can be repeated for most languages and services.
Ruby, Python, NodeJS, Golang and dozens of other programming run-times all have very similar installation instructions. You can try them out in minutes, and if you decide you don’t like it, then all you have to do is run 1 command to delete everything.
There’s no annoying process of having to hunt down a million installation files to ensure you really removed everything.
Oh and if you’re wondering, yes you can have multiple versions of a single programming language installed at the same time with Docker. It’s no sweat and very straight forward.
Breaking up the Monolith Is Easy with Docker
Over the years of having used Docker, I feel like it has also helped me better architecture my applications. Now I design my apps in such a way that I know I am free to try new things out.
That encourages me to create smaller applications that talk to each other over an API rather than create monoliths.
Now, I’m actually not one of those die hard people who thinks “monoliths are horrible and you should have 700 micro-services running from day 1 or you’re a newbie not prepared for web scale”.
However, for some projects, it does make a lot of sense to write small parts of your application in a different web framework than the rest of your app and Docker makes this easier for you in the end.
I no longer see having extra run-time dependencies and services as a burden and I am free to pick the best tools for the job. That’s pretty awesome.
Using the best tool for the job is only 1 of many advantages of using Docker.
What web frameworks and technologies would you like to try with Docker?