ENROLL NOW

 

The SaaS Savvy Blog

Understanding the Context: A Deep Dive into Containers & Docker

cloud technology devops Oct 09, 2023
Docker software container logo

 

In this blog I discuss The Man Who Would Build a Computer the Size of the Entire Internet by Cade Metz (Wired, 2013).

 

The Man Who Would Build a Computer the Size of the Entire Internet 

 

Context to Learning about Software Containers If You Don't Code

When you start learning about cloud-based software, you quickly learn that there’s:

  • A frontend that displays the user interface (UI)

  • A backend made of a web server, an application server, and a database

    • The web server hosts static files like HTML and images;

    • The app server hosts the app source code;

    • And the database stores all the data the app collects.

The frontend sends requests to the backend app server, which hits up the database and sends back a response. Rinse and repeat. This frontend-to-backend, web server-app server-database is a handy assessment for a high level understanding of software architecture.

But as you delve deeper into all things software and cloud, at some point you’ll come across containers, Docker, and Kubernetes orchestration and you’ll realize that there’s a lot more going on than just this simple backend trifecta.

Containers, Docker, and Kubernetes are nothing you can’t understand, but context is helpful to grasp what has made them so groundbreaking in the world of SaaS and distributed systems like Amazon Web Services and Google Search.

 

My Journey to Learn What on Earth Containers and Docker Are

A few months ago I was struggling to find that context, specifically as it pertained to SaaS.

“A container packages code and its dependencies so an application can run quickly and reliably across many computing environments.” 

These words make sense … but why? Why does an application need to run across computing environments? Isn’t it just on sitting on an application server doing its thing?

I needed someone to give me a fuller picture I couldn’t get from SEO-optimized blogs hawking developer tools or coding bootcamps. I needed some litch-rah-chure, for someone to gracefully provide some meaningful background.

So I turned to Cade Metz, my favorite NY Times tech journalist formerly at Wired. He has the gift of blending the eloquence of an English major with a grounded understanding of web technologies, taking tech beyond simple definitions to a fuller, dynamic picture.

As he explains, “A Google application like Gmail doesn't run on a particular server or even a select group of servers. It runs on the data center, grabbing computing power from any machine than can spare it.”

 

Why Does Software Need a Container?

There are many use cases for and benefits of containers, but I’ll focus on apps here.

See, as applications grow in traffic and users, they need to scale to remain available and performant (ie, up and running).

Developers can scale an app vertically by running it on more powerful servers, but at a certain point, the server taps out. The more common alternative is to scale horizontally, which involves replicating an application and database across many servers, and using software called load balancers to divvy up traffic.

The tricky thing is, all these servers in the mix might be come from different manufacturers (ex, Microsoft vs IBM) and may run different operating systems (ex, Linux vs Windows Server). You need to run a different version of The Sims to run on your Mac vs a Windows PC, and servers in a data center running SaaS applications are no different.

So how can developers ensure that their code will run on whatever machine it lands on when replicating and scaling across servers in a data center?

Enter containers.

Just like shipping containers box up stuff so they could be moved efficiently across boats, ships, and trains, software containers box up an app so it can run on any machine.

 

What are Docker Containers?

Writes Metz, “A Docker container holds not only a software application but just about everything else that application needs to operate, all the software libraries and other application-related code normally included with an operating system. These additional software libraries are known, in developer parlance, as ‘dependencies.’”

In other words, containers package up code and all the things it needs to run so that you can plop an app on any server and boom, let it rip.

Docker is a platform built to allow developers to “containerize” their applications. Containers can quickly get unwieldy, so orchestration tools like Kubernetes were built to manage and coordinate them across machines in a data center.

This Wired article was written in 2013 when the company Docker was ushering in a new and improved open source version of containers that would go on to transform software development and usher in the DevOps movement. While over the past decade the company struggled to find the right commercial model, according to The Information they’ve led quite the comeback and now sell a desktop hub that helps developers build apps with containers.

THE PROSPERITY NEWSLETTER

Want Helpful Finance Tips Every Week?

Lorem ipsum dolor sit amet, metus at rhoncus dapibus, habitasse vitae cubilia.