Docker: Containerize your startup!

In the recent past how many times have you heard the buzz around DevOps and Docker? Ever wondered why containerization suddenly gained popularity? I have been wondering this for a while and have finally decided to dig in. In my attempt to educate myself I thought of looking at it through the lens of a startup and trying to figure out how it may be relevant. Stay tuned to this tutorial series to learn more!

The History & Relevance to Startups

As I read about docker I realized that this is something that I had already worked with before. In my previous role as an engineer working with AIX, I had already worked on a technology called WPAR – work load partitions which was similar to Containers in Solaris (no surprises there!). The application was primarily tuned towards isolating workloads in a partition (think of partition as an OS) and executing them for backward compatibility as the latest versions of the OS did not support some legacy applications. Point being, this technology has been here for a while. This led me to think, what made Docker popular now? The answer seemed pretty obvious as the other container technologies were limited to their ecosystem and install base, where as Docker is an open sourced project with a wider install base and supported applications. Definitely there is a lot more to its popularity but more on that later.

Now to understand DevOps: A comment that I had read a while back about how would you differentiate Dev & Operations. If you are in praise of the success of a website, you are generally the dev but if you are to blame when it is down, you are in operations. Now, both these worlds are collaborating than ever before and the lines between them are blurring.

If you think about a Startup in this perspective, this is exactly what happens. There are limited resources and often the developer has to take care of both the operations and the dev side - hence the term DevOps. Thus if you think about it, DevOps is actually centric to the startup culture. By definition, startups adopt Devops as a means to a quicker way to get to market as it allows them to adjust quickly, develop quicker and scale accordingly. Yes, I agree, today DevOps is more in tune with the enterprise context and I wonder that it actually is more inherent in Startups by design where as the Enterprise is advancing towards DevOps to become more efficient and nimble as an organization.

The Technology

Containerization as a technology can be thought of as a logical transition in hosting technologies and virtualized environments. We have essentially moved from hosting an application on a OS which resided on a physical server, to hosting an app on a OS which resided on a virtual server (or machine) and now the logical transition seems to be abstracting the OS layer itself and not stop at abstracting the below hypervisor or physical server.

The diagram above describes the technology and its components. As you can see on the left is the VMs with guest OS’s hosting apps sharing Hypervisor where as containers essentially isolates and emulates the environment to execute the apps on the same OS running over the Docker Engine ( in this case) sharing binaries and libraries (unlike in VMs).

Now lets view this from the lens of a startup:

The advantages are pretty clear, you don’t have additional OS licenses for each app deployment. What does that imply? Money savings – resource savings. As a startup, every dollar saved is a dollar earned

From a horizontal scaling perspective, you don’t have to spin up additional VMs to host multiple instances. Rather use the same instance to host multiple containers which hosts the application in an isolated and secure environment. This yet again translates to cost savings and again, every dollar saved is a dollar … (fill in the blanks ).

VM hypervisors essentially emulate virtual hardware which makes them heavy on system requirements. Containers on the other hand emulate the OS – infact it shares the OS with other containers – which makes it a lot lighter in terms of system resource – allowing for quicker deployments, quicker dev/test and thus quicker to market.

Now, just to give you Startups an idea, enterprises are adopting Docker at a rate like no other technology before. It is in it’s hype cycle primarily because of the cost savings in power, hardware and virtual resource costs. Do you guys need any further reason to explore how Docker or adopting a good DevOps strategy benefits your startup?

Stay tuned as I dive in deeper from a technical point of view of how to use and deploy Docker in subsequent posts in this series. Reach out to me @AdarshaDatta if you want anything in particular to be covered.