This post is an introduction to containers for non-technical folk.
My company Machine Box delivers machine learning models as Docker containers. Without containers, we’d have a much harder time getting customer adoption, and our cost of customer acquisition would be extremely high.
Docker might be the new electricity. Remember when it was difficult to run a company without electricity? Today, it’s going to be difficult to run a company without some kind of container strategy. Although there are some subtle differences between containers and the presence of an electric charge, the fundamental relationship between resources and output is the same.
Allow me to start with the basics. We’re talking about software containers, not those plastic cubes and rhombuses you can put your clothes into. Containers were popularized by a company called Docker, who blew past a billion dollar valuation back in 2015. Perhaps the best way to explain what a software container is, is to compare it to something you might be more familiar with; a virtual machine. A virtual machine is essentially an operating system inside another operating system. You can run Windows inside of a MacOS for example, as a virtual machine. You spin up some software that understands what a virtual machine file looks like, open the file within this environment, and an entire operating system will boot up, isolated from its surroundings (sort of).
It has benefits because you can scale this to accommodate large workflows where some specific software needs to be installed and run in a dedicated way. Its also an easy way for vendors of complex software to deliver their product to you without requiring lots of installation and configuration.
But when you spin up a virtual instance of Windows, you’re also spinning up all the stuff inside that operating system that you don’t need. All those drivers, applications, settings, and instances of Solitaire get booted up every time you run that VM. At scale, that is a lot of wasted resources.
This is where containers comes in. Docker describes it best:
A container image is a lightweight, stand-alone, executable package of a piece of software that includes everything needed to run it: code, runtime, system tools, system libraries, settings.
It excludes everything you don’t need. They are lean, mean, application machines. Properly architected containers don’t have a byte of unnecessary computerness™ inside.
If you’ve made it this far, you might be asking yourself “If developers are making the containers, then what do I need Docker for?”
Docker does many things, but primarily it is an agreement between an operating system, and what is inside your container. Just like the software that runs a virtual machine on your computer (of which there are many).
Ok, so now you’ve gotten a hold of a container and it runs great on my computer, but how do I scale? Great rhetorical question! This is where the true ROI comes into play, and why companies must start seriously thinking about how they’re going to approach their infrastructure going forward as it pertains to containers.
Keep a close eye on something called Kubernetes. Remember all that overhead you’re saving by using a container instead of a virtual machine? Well that really starts to save you money when you consider scaling. Kubernetes is a container orchestrator, which means you can use it to manage millions of containers to work together. This is how the cloud works today. Companies like Google use Kubernetes to manage billions of people searching things every second of every day around the world. Google is a single platform; a single website with a single purpose. Yet it can be used by everyone on Earth, all at once, and somehow not breakdown or bankrupt the company. Think of all the challenges that one is presented with when building a system to scale to that size; load-balancing, security, segmentation, data management, etc. It turns out, combining containers with tools like Kubernetes (there are others to) lets any company scale to Google’s size (sort of), without breaking the bank. That, my friends, is a return on your investment.
It won’t be possible to provide the kind of scale customers expect without considering a container strategy. So hire a devlops engineer and get started sorting that out now.
Machine Box puts state of the art machine learning capabilities into Docker containers so developers like you can easily incorporate natural language processing, facial detection, object recognition, etc. into your own apps very quickly.
The boxes are built for scale, so when your app really takes off just add more boxes horizontally, to infinity and beyond. Oh, and it’s way cheaper than any of the cloud services (and they might be better)… and your data doesn’t leave your infrastructure.
Have a play and let us know what you think.