What are Containers: How Video Games Have Inspired My Containerization Journey
Tags: containers, beginners, containerization, firstpost
Published: 2021-02-12 16:44:41

{% youtube rYHCiyQ4Otg %}
# 🕹From Cartridges to Containers🕹

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/sg2ia1iteyo064asij8x.jpg)

When I was a kid, I absolutely loved my Nintendo 64 (N64) gaming console. Of course it was because of all the awesome games I was able to play with my siblings and friends, but there was also a small feature about the N64 that made it stand out from other consoles at the time; It was its game cartridge.

The reason the N64 game cartridge stood out to me was because its portability. Not just that you could take it to your friends house to play but that it also brought along with it all your save files, customizations and personalization that you had in your game. That little gray cartridge **contained** everything you needed to play the game, no matter whose N64 gaming system you were playing on.

Now as an adult and as a professional programmer and developer, I am seeing echos of one of my favorite features in gaming emerging in code development and deployment. That feature now resides in the the power of **Containers**.

# Why Containers Matter

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/0ql1o3em00877di22bm8.png)

If you have spent any time coding, either in a professional or personal setting, you've probably come to understand the importance of having the appropriate dependencies to build and deploy your code. Your dependencies are crucial to your project and are made up of your configuration files, libraries, runtimes and any other things you may need to run your code. If it's building a compact NodeJS server that manages a micro-service for a larger application, or creating a customized website to hold your personal portfolio, your dependencies matter. 

And that's where containers shine⭐️! Containers allow you to move your application to different environments without making changes, keeping your dependencies intact. It allows for reduced migration efforts, quicker deployments, and freedom to move your application anywhere you desire.

Traditionally, when working on a project, you couldn't really bring your dependencies with you. Anytime you wanted to deploy your code into a new environment, you would almost be starting over. I can't count how many times I have had code running perfectly in my local environment (on my computer), only for it to run into a crippling error when attempting to deploy it into the cloud. I would spend hours and hours trying to fix the issue, only to find out that the cloud server I was attempting to deploy to was configured to use an older version of some library or runtime and that my local configuration needed to change to match (causing code re-work and sometimes complete removal of features).

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/0mg8r2qvswhy5th7fuuw.jpg)

With the immense portability allowed with containers, frustrating😣 situations like this in development and deployment will be a thing of the past. Understanding the power of containers is truly going to become one of the top skills for all future programmers, developers and engineers.

# 🔥Containers: The Highlights🔥

So what do Containers bring to the table that conventional development and deployment methods don't? Here is a look at a few high-level benefits of containers:

* **Extensive Portability**: Containers allow you to move your application and its dependencies between environments. As long as your new environment supports containers, you are good to go.

* **Standardization**: Using containerization tools (e.g. Docker) ensures more consistent procedures of application deployment and implementation.

* **Faster Deployment**: Containers allow for developers to deploy to different environments with less code changes or re-work to application code or configurations. Containers ensure that the application in your local environment will work the same in any containerized environment you deploy to.

* **Deployment Flexibility**: Containers allow teams to deploy to varying hosting environments. That includes on-premise, public cloud or private cloud hosting environments.


In summary, just like my time playing the N64 with friends wherever I went as a kid, containers now give you the power to take your application wherever you go. It ensures that your application code and dependencies transfer intact from environment to environment which allows for standardizing deployments and allowing for maximum application portability with increased deployment speed and flexibility. Containers are an extremely powerful tool and there is no better time than now to dig deeper into containers and learn all about them.

Thank you for reading and look out for my next blog post, where I will continue my personal learning journey with Containers and will dive into the powerful containerization tool Docker and how to start using it.


====================

# BONUS LEARNING

Here are some great articles and videos that are a great start for **YOUR** Container journey:

### What are containers and why do you need them?
[What are containers and why do you need them?](https://developer.ibm.com/blogs/what-are-containers-and-why-do-you-need-them/)

### Containerization Explained
{% youtube 0qotVMX-J5s %}

### Containers vs VMs: What’s the difference?
{% youtube cjXI-yxqGTI %}


==== FOLLOW ME ON SOCIAL MEDIA ====
Twitter: [Bradston Dev](https://twitter.com/BradstonDev)
Dev.to: @BradstonDev 
Youtube: [Bradston YT](https://www.youtube.com/channel/UC6Ky8s71RP65akLb_XV1_OA)