Containers are a key technology in cloud-native development.
They’re the go-to for most microservices architectures, and compared to their long-toothed cousins (VMs) they’re more scalable, environment agnostic and have a greater affinity for practices like agile and DevOps.
However some are still in the dark about this now-common piece of tech.
So we thought we’d answer a few of the most common questions
What is containerisation?
If you understand VMs, containerisation is not a difficult concept to grasp, as it’s essentially just another form of virtualisation.
The same as VMs…
Both containers and VMs exist to isolate space (resources) within a physical server and to use that space to run a virtualised computer within that larger, real computer.
In that sense, they are both like boxes placed in water, their boundaries allowing for things to be put in without leaking out.
This is what virtualisation really means.
Simulating discrete computers within much larger computers so people can run multiple apps in those computers.
Voila, you understand cloud.
The difference lies in the make-up of these imaginary computers, or, to use the industry nomenclature, virtual machines.
Whereas VMs have their own OS (operating systems), which communicate with the host through something called a hypervisor, a container has no OS.
Instead, the orchestration tool (more or this below) manages all communication between the host OS and each and every container.
- Lacking an OS makes containers much ‘lighter,’ (in the megabyte range) which makes them much cheaper, less resource-intensive, and more scaleable
- Because they have no OS to speak of, containers gel better with a range of hosts, meaning they’re more portable
- They’re also more operationally stable and have a greater affinity with practices like CI/CD (continuous integration/continuous delivery) agile and DevOps
What is container orchestration?
For a full explanation, read this, but essentially, orchestration tools like Docker and Kubernetes simplify operations – deploying and creating new containers according to user-defined rules.
When you’re running a containerised app, there’ll be far too many containers to be managed manually
So, orchestration tools:
- Simplify operations – deploying and creating new containers automatically
- Add resilience – managing failure and container lifecycles automatically
- Add security – removing breaches due to user error and automating security best practices
Containers in the tech industry
As we said in the beginning, containers are a key part of a lot of modern development practices.
A MACH application – which is the go-to model for many – is a set of microservices packaged in containers (for an explanation of microservices, read this).
Meanwhile, Gartner predicts that 70% of organisations will be running at least two containerised apps by 2023.
However, it’s also worth noting that VMs still have some tricks under their OSs…
VMs vs containers
Containers really are the future, and when it comes to modern development practices, they’re going to come out on top every time.
However, VMs are still useful:
- VMs are better for running a monolithic application you don’t intend to modernise
- VMs can be better for provisioning infrastructure
- Having an OS means a VM can virtualise another OS for apps that require one
Plus, it’s care to have a workload that uses no VMs whatsoever. So xxx
Using containers to save you money
The ways in which containers save you money, or can save you money, are simple enough, once you understand what containers are:
- Containers are quite literally cheaper in terms of scalability and resource consumption
- Containers enable money-saving practices like DevOps and CI/CD (these do a lot more than save you money, but it all comes down to a bottom line)
- Containers are generally part of a move toward cloud-native development, which is more efficient all round
If you have a legacy app you want to move toward cloud-native, containers would likely be part of that journey. For more detail, check out our modernisation service.
- Containers are like VMs, both are forms of virtualisation designed to make better use of server space and contain applications.
- However, containers share their host’s OS, making them ‘lighter’ and cheaper
- Containers aren’t preferable to VMs in every situation – when you’re running a monolithic application or an app that requires a virtualised OS, VMs are your guy
How we can help
As a cloud-native MSP, we can take you through the process of modernising an existing application, building a brand new containerised infrastructure from scratch, or supporting an existing app.
To find out how far we could take you, or for anything else, just get in touch.