Hello everyone, in something of a departure from the norm, this post is about something VERY fashionable. As anyone who's been to an IT conference will know, the venn diagram of fashionistas and IT workers has a very limited crossover area. But this is not haute couture, it's haute technologie. That's right, we're going to talk about containers. What they are, and what they do.
Simply put, containers are a dense, scalable solution to help organisations to ship in a more efficient fashion.
But Lodz I hear you cry, this is supposed to be about IT, not freight? Oh but it is, the types of containers I'm talking about help you to ship CODE faster, IT containers.
For the purposes of this intro, we're going to compare and contrast with something similar that you're more likely to be familiar with; virtual machines.
Just like virtual machines, containers utilise clever software to multi-tenant applications on top of shared infrastructure. But while VMs use a hypervisor and install a guest OS for each individual machine, container abstraction occurs ABOVE the OS level. You install a singular OS to the machine, and then the container engine gives all containers that run over the top access to the shared resources, libraries etc that are needed. One analogy is that Virtual Machines are like houses, and Containers are like apartments. While both offer all the 4 walls, locks on doors and accoutrements you'd expect in a home, apartments utilise a far greater degree of shared services. This by nature allows them to be more dense and efficient. You can even run containers and VMs together, or containers within VMs, as this diagram from market leader Docker shows:
Much of the adoption of IT containerisation has been due to its suitability when running applications as 'microservices'. The idea behind a microservices architecture is that you can modularise your applications, where each service performs a singular function, for example, message queuing or querying. These services typically are loosely coupled, often via a REST API. This naturally lends itself to the DevOps, continuous integration model of development, allowing for updates to be deployed to a lightweight image of only the service you wish to change, rather than having to update a whole monolithic application.
In fast moving cloud and webscale environments, this approach has obvious benefits, increasing agility, and reducing time to value. In addition to that, the inherent portability of containers is an interesting factor when considering hybrid cloud, with both Docker and Mesosphere DC/OS offering much smaller degrees of heavy lifting to move applications around a multicloud environment.
Despite these benefits, containerisation is only now starting to make a big impact in enterprise environments and outside of very development intensive organisations. As with many technologies, enterprise adoption requires a broad ecosystem and strong supportability in order to reduce the risk of moving away from more mature platforms. Thankfully, organisations like Red Hat, Vmware, Docker, Mesosphere, Puppet Labs, Ansible and even Microsoft have embraced containers, and are now offering a wide range of services to support containerisation, as well as the wider DevOps ecosystem.
While we are still a long way from traditional enterprise applications moving wholesale to containers, we are seeing more support from software vendors, and an increasing consideration of containers and microservices in greenfield conversations. With the increased support of the big vendors and cloud providers, these technologies are here to stay, and becoming more influential in the market.
For organisations looking to dip their toe into the water, odds are that right now, you'll need to be pretty development intensive as an organisation. However, even if you don't write and ship code, in an increasingly hybrid cloud world, it's important to consider the future of your applications. Running large applications as microservices in the public cloud will offer more flexibility, and be more cost effective on a pound to performance basis. As part of any cloud and software strategy, we recommend that companies take a look at how they can most efficiently run their applications, as well as ensuring portability to and from the public cloud.
However, compute and applications are only a part of the overall journey to digital transformation. DevOps in particular is more of a people and process change than a technological one. Organisations cannot afford to see these technologies in isolation, but rather a loosely aggregated group of services that deliver value to the business. But unlike microservices, the aggregation layer is not an API, but the IT team within the business that help stitch everything into a smooth operation.
If you'd like to find out more about containerisation, DevOps, and how these could play a part in your overall digital strategy, contact your Softcat account manager, or throw a stamped, self-addressed brick through our windows.
We would love to hear any comments you have about this article!