So, why should you use Containers?
Chronicles of Containers - Part 11
Hey there! 👋
Mixa here again and this time I bring you my personal POV on “why should you consider using containers”. Be mindful that this is fully based on personal opinion and it could be lacking some official reasoning :) As usual, we go with infographic first, and then with additional details below.
(click on image to expand)
First things first - I love the OCI Runtime Specification definition that says:
The goal of a Standard Container is to encapsulate a software component and all its dependencies in a format that is self-describing and portable, so that any compliant runtime can run it without extra dependencies, regardless of the underlying machine and the contents of the container.
Source: OCI Runtime Spec
This is beautiful because it sets the ground for what Containers are supposed to be. A unit of software delivery. A well-defined and self-contained piece of binary that can be distributed and started on any platform without requiring any additional dependencies.
Aside from being easily distributable, as you probably learned by now (todo: list articles), Containers provide Isolation from the other containers and processes. And this is amazing because it ensures that whatever you do won’t interfere with other processes. Hell, even ovewriting system-critical files won’t make much of a change due to ephemerality of containers!
Speaking of ephemerality, containers are just perfectly built for playing and versioning. Built a new layer, but you figured that maybe you’re better without it? No problem! You can experiment by adding and removing layers at will! Union mount all the way!
Another amazing thing is the sheer existence of some amazing tools like Kubernetes and Service Fabric. These tools are perfectly tailored to orchestrate, monitor & scale number of containers and services and at this point got so advanced that it makes sense NOT to use them!
Finally, Containers are just built for the Cloud. The ephemerality & ease of distribution fit just perfectly with the premises of the Cloud. All major providers (Azure, AWS & GCP) are likely to advise you to use containers to deploy your workloads.
And that’s about it :) I’m sure there’s tons more reasons but the ones I outlined should be a solid ground to at least evaluate the idea of using containers!
Next time I’m going to talk about Container Runtimes and then a bit about Kubernetes at how it fits this picture. Until then, if you missed some of the previous articles, do make sure to check them out: