Containers: Radically changing how we develop software
Containerisation is going to be huge. Huge.
It’s going to turn the world of software development upside down.
Sound a bit Trumpian?
Well, hopefully not, because unlike a lot of what the big orange man says, it is fundamentally true.
Container technology is already radically changing the way enterprise software and applications are deployed, in the same way virtualisation did a decade ago.
Back in 2001, we were developing software applications to run on physical hardware. Even though the hardware was treated as a commodity (typically hosted on blade servers) the servers very quickly became obsolete, as the demand for functionality and application use mushroomed. We needed more RAM, more CPU, more storage. Add more servers, buy more racks and quickly please!
I recall one incident where someone on our team realised that the recently upgraded user desktops were more powerful than some of our older servers in the production server farm. Throw another million at the problem!
Virtualisation offered us the ability to spin up additional server capacity in hours rather than weeks and it was a game changer for everyone. Now we had the flexibility we craved to spin up and tear down software environments on demand, without the long lead times involved in physical hardware commissioning.
A couple of years later and virtualisation exploded, it was everywhere. By 2004, virtualisation had begun to enable the cloud as we now know it.
How disruptive and powerful has the cloud become?
The biggest strength of the cloud is how it supports lightning fast innovation. It has allowed companies like Netflix, Microsoft, Google and others to do things that could not even have been imagined a couple of decades ago.
So, why will containerisation turn the world upside down?
A huge amount of effort in software development gets invested in moving newly developed code through a testing and change process and across environments to make sure we iron out the defects and don’t break anything in production.
By packaging software inside single containers with all the services you need to run it, the code becomes easier to install and run on multiple platforms regardless of the environment. It’s a highly efficient use of resources because you build it once and can run it anywhere.
Timing is perfect with the two key cloud vendors, Amazon and Microsoft, embracing this trend. We can now develop software on Azure, create a full build, test and deploy pipeline using containers, and with a little bit of configuration, light up a complete operational monitoring suite through tools like Application Insights. For guys like me who have seen software development done the hard way, it’s a bit like jumping off a bicycle into a Ferrari.
There are two key things to consider in the world of containers:
- The skills we will need on our teams are completely changing
- With this power and agility we need to keep a level of discipline in how we architect the pieces of the systems to work together (Microservices)
Skills for Containers
Traditionally, you would have separation, one group specialising in infrastructure, firewalls and networks, and the other group concentrating on software development.
Now the lines are being blurred – people who can understand and apply both disciplines are incredibly valuable because this is exactly what containerisation needs.
How we design Microservices will be key
As always, poorly designed systems can become difficult to support; and there are pitfalls to using containers. We need to retain visibility of what functions are being deployed in each of the components. The ability to think like an architect about long term costs of supporting the system, managing technical debt and roadmap for upgrades is absolutely crucial.
Despite the challenges and considerations, this power and flexibility means that we can now create working software at a fraction of the cost and time than ever before.
For software and tech-heavy industries like insurance, banking, telecoms, healthcare etc., we can see a wave of innovation and disruption right around the corner. For companies that are ready with the right people and the right tools, they can innovate and bring new services to market almost in real time.
Like I said, huge.