Why Container Technology?
No software exists in isolation. Applications require not only computers to run but also quite a few other things; at the very least, they can be summarized in two words: dependencies and configuration.
Deploying an application in production, then, requires not only installing its source code, but also making sure that a myriad of components, libraries, frameworks, language runtimes, configuration files, and many other components are properly installed, and configured, and ready to use. This complexity varies from programming language to programming language, but even the smallest application can fail if its needs are not properly met.
The complexity of setting up the proper environments for software to run, coupled with the increased rhythms of deployment in our modern business world, has prompted the industry to come up with innovative solutions in the past 20 years. From Java Archives to configuration management systems like Puppet or Ansible, to Virtual Machines, engineers have been trying to solve this problem over and over again.
The latest, and probably the most ground-breaking of these innovations is, precisely, Container Technology.
The Container Breakthrough
Following the idea of shipping containers, invented in the 20th century to solve the Millenium old problem of shipping goods overseas, Container Technology allows applications nowadays to run seamlessly from a laptop to a hyperscaler, from an IoT device to a mainframe, without changes, and without any added complexity. Just pull the container from its registry, and run it.
A container encapsulates everything needed by an application to run: its binaries or source code, but also its dependencies, and even its configuration. All of this information is encoded in a single package, ready to be shared and run, from the biggest cloud provider to the smallest computer you can think of.
The Container Advantage
Container Technology provides an environment of choice for applications to run:
- They are fast because they do not require the overhead of a complete virtual machine to run.
- They are lightweight because they only encapsulate a single application and its dependencies, and nothing else.
- They are configurable to only access the required amount of resources from the host machine, from disk space to network, to RAM, and even CPU time.
- They offer a secure environment, from which it is virtually impossible to escape, reducing the attack surface of compromised systems.
Container Technology offers the perfect building block for microservice applications running on top of Kubernetes.