Healthy Astronauts & Cheap Apps: Benefits of Containerizing
Every one of us is designed and configured for life on Earth. So much so that if we were put in a different environment, we would die within minutes. Let’s take Mars, for example, if we didn’t implode due to the low atmospheric pressure, we would freeze to death. If we didn’t freeze to death, we would suffocate due to lack of oxygen. And if somehow we were still alive… we would die from surface chemicals, UV radiation, or lack of food and water.
The body is a system, and like most systems, it is very tightly coupled to the environment that it runs in. This tight coupling becomes a problem when we want to move environments. However, if we can decouple a system from a given environment, we can move the system without worry. This is called containerization.
That sounds cool. What Does it Have to do With Apps?
While there are many benefits to containerization, the most powerful is portability. A system is very useful when it works in multiple environments. This is true for not just lifeforms but also developing applications.
When NASA wanted humans to ‘work’ in space they containerized them. We can containerize a human by sticking them in a spacesuit. The more of the human you get inside the space suit, the more reliable their survival will be when you put them in space, or on Mars, or in AWS data center.
A space suit supplies and restricts elements so that it contains just what a human requires for life. It has Oxygen, it’s pressurized, it blocks UV radiation, and provides climate control.
In much the same way, we can containerize an application (An application can be virtually any program from API servers to databases to jobs) to require just what it needs to run in any environment that supports our containerization software. Doing so creates several benefits:
Why does Containerization Matter to Me?
Ease of Deployment and Configuration
The most important benefit of containers is simplifying and speeding up the process of deployment and configuration.
Containerization allow you to scale only the desired functions without impacting on the entire application
Increased Overall Productivity
Containers allow developers to achieve next-generation efficiency in software delivery or allow product managers to save time and resources by settling many of the challenges that they face with traditional virtualization.
Fixing a bug takes 30 times longer than writing a line of code
This means that if something breaks when you are moving your code from one environment to another, you will not only lose productive time but also spend that much more money fixing it. More importantly, there is no upper limit to how long a bug will take to fix leaving your project at massive risk.
Containerization allows us to run applications under the exact same conditions whether we are developing on a local machine, testing on a quality assurance machine, or running in production. The result is faster development times, higher quality code, simplified deployment, and less dead astronauts.