Containerisation offers performance and efficiency gains, depending on the application you deploy and the expertise of your development team.
The SaaS industry has a new buzzword – containerisation. Few innovations have been adopted quite as quickly as containerisation is being embraced right now by SaaS companies.
This lightweight approach to virtualisation, where applications are encapsulated and retain their operating environment, has some strong advantages over the hardware virtualisation method. However, it also has some scarcely discussed cons too.
So how do containers stack up against Virtual Machines (VMs)?
The pros of containerisation
1. Improved performance
Without the requirement of a hypervisor between the application and the CPU, or a VM OS, container apps run faster, suffer less lag and are much more stable.
2. Condensed file sizes
Containers do not need to hold an OS, only the application and it’s required libraries to run. This means containers are significantly smaller than their VM equivalents; a container may only be tens of megabytes in sizes, whereas VMs may be several gigabytes.
3. Rapid boot ups
Due to being lightweight compared to VMs, containers can be started in seconds, compared to minutes for VMs. Faster start up means faster development, testing and deployment.
4. Greater flexibility
Again, due to containers being much more lightweight, they can be copied, moved and backed up a lot quicker and easier than a VM.
5. Improved hardware efficiency
Many more containers can be installed on any one host, compared to VMs. This provides better capacity utilisation and consolidation on less machines.
6. Run anywhere
Container apps can be installed on any server running the right OS, without having to customise the config or recreate the development environment. This is because they are shipped with everything they need to run, so they can easily run on a wide variety of platforms.
7. Promotes cloud-native development
Harnessing the elastic cloud is easier when you virtualise at the OS level, like containerisation does, instead of the server level, like VMs. Containerisation is a microservices approach that enables function-specific containers which can be easily replicated and deployed.
8. Better supports DevOps
Containerisation offers greater flexibility to DevOps with the ability to run containers on a wide range of platforms. It also streamlines operations by removing manual installation, configuration and OS maintenance.
The cons of containerisation
Containerisation is generally limited to Linux OSs and applications, as it has evolved from the Linux Containers (LXC) environment. However, Microsoft is working on a container environment for Windows applications, named Drawbridge, which is yet for a release date.
2. Security complications
Containers introduce some new security challenges. Firstly, the way in which Linux container apps relate to their host machine and it’s OS kernel potentially creates vulnerabilities. Critical kernel subsystems, such as SELinux and Cgroups are not secured by default, but it is possible to secure these. Secondly, the emergence of a growing ecosystem of container template sharing provides cybercriminals with opportunities for distributing malware. Shared containers need to be rigorously screened before usage.
3. OS choice limitations
Since containers share the OS of the host, the OS has to be compatible with the bare metal server to begin with. Hypervisors overcome the major challenge of running legacy or obscure OSs on modern hardware.
4. Unfamiliar development methodology
Whereas writing applications for VMs, which are in effect the same as physical machines, was a straightforward transition for development teams, containerisation is a new approach to application development and testing. You may need to train or hire new staff to embrace this approach to virtualisation.
5. Container sprawl
Single VMs will often run multiple applications, but containerisation promotes a one-container one-application infrastructure. This means containerisation tends to lead to a higher volume of discreet units to be monitored and managed.
Clearly there’s a lot to consider before embracing containerisation for application deployments. For some applications, it's easy to see if containers can be beneficial. For lots of others, it's not.
To find out more about containerisation, how it can be applied in your application hosting and what’s involved in adopting it, download our introduction to containerisation eBook.