Wayne Gibbins, CCO of Wercker, discusses the fundamentals of containers: what are they, how are they used, and are they worth the hype?
Docker announced itself with a bang in 2013 and since then software container technology has grown significantly both in terms of efficacy and popularity.
Container technology would not be possible without an appropriate ecosystem in which to grow. There has been huge progress in this space with a number of companies trying to capitalise on the emerging technology. Scheduling and orchestration tools like Google's Kubernetes, Docker's Swarm and Mesosphere have helped to stabilise and standardise how developers work with containers in a practical sense. Still at a relatively early stage of development, there is no common consensus on container technology: is it just a passing fad, or are containers really here to stay, and if so, what does that mean for cloud-enabled businesses?
What does 'container technology' really mean?
In simple terms, containers are a means of software abstraction used by developers. Abstraction gives developers increased flexibility and is a far cry from the days of 'bare metal' - when software was designed with specific hardware capabilities in mind. The ability to be flexible is a key weapon in any developer's arsenal - for this reason virtual machines (VMs) were the next step up from 'bare metal' in the evolutionary chain that eventually leads to containers.
By using software known as a hypervisor VMs enable developers to abstract their work away from hardware. A hypervisor replicates hardware capabilities such as CPU, storage and networking and allows more tasks to be run concurrently on multiple VMs per physical device. This replication process using VMs can prove a significant drain on system resources. Containers, on the other hand, do not need a virtual copy of the host hardware and can be thought of as a lightweight version of VMs.
In addition, containers do not require a full copy of the host operating system to be installed. These two factors combined make containers significantly more lightweight and flexible than their VM predecessors. Developers can fit far more containers onto a single server than they would be able to using VMs - this gives developers increased potency in addition to increased flexibility.
The benefits: portability and security
One of the most appealing aspects of containers is that they can run virtually everywhere: from a single developer using their laptop to an entire production cluster running on Amazon Web Services. Containers are therefore seen as a solution to the issue of portability: they allow developers to work on increasingly complex applications in a much more flexible manner than was possible before.
Before the advent of container technology code had to be dealt with in its entirety. This model, often referred to as the 'monolithic model' meant that every time developer teams wanted to fix an error they would have to analyse all their code, identify the issue and rectify it without breaking any dependencies in the process.
Containerising software should lead to increased reliability and security. The ability to compartmentalise software allows developers to isolate any errors or bugs that exist to an individual container. The faulty container can then be removed, remedied and re-inserted with minimal loss of service. Containers allow for multiple languages to be used within the same application: this can be very useful for IT teams, minimising cross-compatibility issues and enabling developers with different language specialisms to work together in teams more closely than was possible before. Clearly, containers have made the process significantly easier and reduced the opportunities for human error.
Satya Nadella of Microsoft claimed that the majority of modern businesses these days are software companies. What this often means in a practical sense is that the primary way to differentiate themselves from the competition is to improve the quality of their software services. Businesses have recognised the importance of software quality to their operations, a recent study states that 81% of businesses are planning to increase their investment in container technology.
Containers are fast becoming ubiquitous and some of the most high-profile investors in the technology may come as a surprise. American investment bank, Goldman Sachs, has invested around $95m into Docker and plans to move 95% of its workloads onto the platform over the next two years. Tech giants Amazon, Microsoft and Google are some of the other high-profile supporters of Docker technology.
The advancements in cloud technology over recent years are another key driver for container technology. Container technology helps businesses unlock the full potential of the modern cloud by enabling developers to work more quickly and effectively across cloud-native applications. The adoption of container technology as a means of improving software quality is likely to be a key differentiator for businesses as more and more services move to the cloud.
Wercker was founded to make developers' lives easier. Yes, at the heart of the issue there is software but the solution is designed with humans in mind rather than machines. The full automation platform helps developers build, dev and deploy multi-tiered cloud-native applications. Now, we are seeing some huge companies adopt containers in their production process which is a real indicator of progress.
As more businesses and technology companies adopt container technology we are really looking forward to what happens next. Container technology enables developers to compartmentalise and manage complex code, and has the potential to bring us closer to software development automation. "Automate everything" has been a cliché for some time, but with container technology it may become reality sooner than you think.