#40: Containers, Docker, Kubernetes and Serverless - explaining virtualisation

Over the next few episodes I want to introduce a number of technologies from modern Software Delivery.

These are:

  • Containers
  • Docker
  • Kubernetes
  • And Serverless

There are "hot" technologies with Software Development at the moment.

They are helping Software Teams:

  • Get Better ROI when spending on Computer Server resource
  • Improving the speed to market
  • Allowing for more complex and ambitious solutions

These are technologies that your Development Team may want to use or may even be using.

Over the next few episodes I will be giving an overview of what the technology is, how they help with ROI and why your Development Team maybe trying to convince you that they are a good idea.

In this first episode, I want to explain Virtualisation.

A technology that makes those others possible.

Or listen at:

Published: Wed, 13 May 2020 18:12:06 GMT


Wikipedia describes virtualisations as:

"virtualisation refers to the act of creating a virtual (rather than actual) version of something, including virtual computer hardware platforms, storage devices, and computer network resources.

Virtualization began in the 1960s, as a method of logically dividing the system resources provided by mainframe computers between different applications."

While virtualisation has a long history, for the purposes of this podcast I want to explain in terms of more recent history.

When I started working in industry, if we needed a computer server, if would be a major investment.

We would be purchasing a large system from the likes of IBM. The system would have to be delivered, installed and then maintained by IBM staff.

I remember once having to move a relatively small one 10 miles between two sites.

We had to arrange for an IBM engineer to power it down, disassemble it and package it.

We then needed specialist movers to transport it.

And then a second IBM engineer to unpackage it, reassemble and power it back up the other side.

The hardware was so expensive that to do anything else was simply an unacceptable risk.

It because considerably easier and cheaper when commodity computer servers became available.

To all intents and purposes, they are where just more powerful versions of the PC's we all started to have on our desktops.

But with these we could rack them.

We could stack them into metal cabinets and build our own data centres.

We'd have a "server room" dedicated to host them.

It would be a special room with restricted access, fire suppression and a massive amount of cabling for power and networking.

And dominating these rooms would be the computer racks. 6 foot high metal cabinets with computer servers stacked on top of each over.

Each filled with a dizzying display of flashing LEDs and cabling.

When we found ourselves needing a new server;

We would purchase a new physical server. These would generally not be cheap and could take weeks if not months to purchase.

Once we had the physical server, we would put it into our computer rack, get it all cabled and configured and ready to go.

That is of course, assuming that is we had enough space left in our computer rack, enough electricity, enough networking, etc.

And once we had it powered on, we'd then need to install the operating systems and configure all the relevant software.

At this point we then had our shiney new server ready for the whatever key project we need it for.

It really wasn't uncommon for projects to be delayed months or even years while waiting for complex server setups.

If nothing else the commercial outlay on its own was considerable.

Due the long leads times, you'd want to make sure that our server was large enough for what we needed ... And to have anticipated capacity to handle any predicted growth.

And then we'd probably want to build in some slack.

So not only would we have been investing a considerable money upfront, we would have had quite a delay before we even started to see a return and we will have invested for more than we would likely need.

Then came virtualisation.

As Wikipedia described it;

"virtualisation refers to the act of creating a virtual (rather than actual) version of something, including virtual computer hardware platforms, storage devices, and computer network resources."

What this amounted to was using one physical server, and turning it into multiple virtual ones.

The key to this was that most of the physical servers we had bought where under utilised.

Partly because we had to buy big to allow for potential growth and partly because very few of those servers where busy all of the time.

You'd generally find that those servers has busier times of the day, week or month dependant on the workload.

Think about this like an office building.

You purchase an the entire building, but you may only need a fraction of the space.

So you split up the building and start to rent out floors or even partial floors to other business.

It makes sense to utilise that spare resource rather than letting it go empty.

By doing this you get a better return on your investment.

And this is what virtualisation gives us.

It allows us to utilise our investment better.

For our projects, virtualisation meant that we could have a much shorter lead time for our servers.

Assuming we had the spare capacity within our physical server, we'd be able to provide the servers in a matter hours.

You would find businesses investing in larger servers ahead of time to provide that capacity.

As their existing capacity reduced, then addition servers would be purchased - ideally ahead of exhausting that capacity. Allowing there to always be that capacity to create those virtual servers as projects required.

This made a massive improvement in ROI. Not only where we able to get more from the physical investment we made, but we also reduced the time in project deliver.

So that's virtualisation; the ability to gain greater utilisation of physical resources by splitting them down into virtual representations.

On its own, virtualisation has and continues to be massively useful technology.

Many other advancements wouldn't have been possible without it - but more on that in the coming weeks.

Next week I will introduce Containers and the Docker Container format - possibly one of the most useful advancements in recent years in providing repeatable and reliable software distribution.

In this episode, I introduced Virtualisation.

A technology that has allowed us to gain greater utilisation of physical resources by splitting them down into virtual representations.

A technology that allows us to get more from the investment in physical computer servers - thus providing a better return on investment.

A technology that allows us to reduce the time to provide Computer Servers for our key projects - thus reducing the time to market.

A technology that provides the foundation for other technologies - such as Containers which I will cover in next week's episode.