...
The goal of containerization is to package a software component together with its runtime dependencies such that it becomes portable and can run on any host. This is important for scalability, because we want to be able to dynamically deploy instances of a software component on demand and consistently on potentially different host systems. Containers also provide very fast startup time, compared to VMs (virtual machines), because they feature a light runtime environment sharing the operating system kernel with the host, further facilitating dynamic deployment. To deploy an application on a new host, all that needs to be done is its image must be built or a prebuilt image needs to be pulled (downloaded) and then it can be run as a container. Containers also offer isolation from the host system and other containers, which provides security. We strive to deploy all of our services as containers to make use of their advantages.
...