Containerization is when developers bundle together code, a runtime engine, tools, libraries, and settings all into one package. Rather than just writing the code for an application to run on any PC, the idea of containerization is to build out exactly what requirements it needs rather than using up all of the PC’s resources. This is what enables the software to be portable and more efficient. It is also much easier to deploy in new environments since you are removing more variables from the equation. Containerization is a relatively new concept which took off less than a decade ago. It has been popularized and is starting to be adopted in many large corporations as well as the new standard for building apps. Containerization was popularized by the introduction of docker engines so it is often referred to as dockerization as well. Before cloud computing, machines all came with their own OS installed on them which led to their programs breaking and more downtime. Virtual machines run on top of just the hardware and a hypervisor. This means that the software running on a VM is running on a guest OS which means that there’s less of a chance breaking than if it was running on the host OS.

Before containers, developers built monolithic applications which means that all the features and functionality from the UI to the  back end code, to the database were all bundled together. However, now with containers developers are able to break these applications into tiny pieces. For instance, if you are building a shopping application, you would be able to build, test, and run the various components such as the front end catalog UI, the user/profile management system ,and the payment portal all separately. Then you can put these together. This is a benefit for many reasons.If for some reason one portion of the application needs to be fixed or updated, it can easily be done without affecting the rest of the application. This allows for less downtime and more efficient use of resources to maintain the apps. This concept is called microservices. These separate microservices can then be “combined” by connecting them through APIs. This also allows them to scale much faster when needed. 

Benefits of containerization include:

  1. More resource friendly- it maximizes efficiency which frees up more resources for other apps and can even save on electricity costs. 
  2. It is more portable since it can be dropped into any environment and still function properly.
  3. It is much more lightweight so it can load instances and applications much quicker than a VM

This is a great image which depicts the lightweight nature of a container vs a virtual machine. Containers can utilize the host OS which allows them to run much quicker and spin up in a fraction of the time of a virtual machine

Some great resources that were used are listed below. Feel free to give these a read for more information or for a different perspective: