This was quite a new audience for me and it was great to
be the person who showed them what Microsoft is doing in the era of container
technologies, using both Microsoft Azure and Windows Server 2016 Technical
Preview 4.
The big picture
One of the key things to point out is that containers are
“just” a part of the big picture that we are seeing in these days.
The following graphic shows where we are coming from –
and also where we’re heading.
Starting at the bottom, the early generation in this
industry used to have a lot of physical machines to run their business. We all
know that having workloads and applications on physical machines is not where
we want to be today, because that is not flexible, scalable and for sure want
do any good for our demand for utilization.
Above physical machines we can find machine
virtualization. This should all be quite common now and we have been very good
at virtualizing servers for quite some time. In fact, we are now not only
virtualizing servers – but also the other infra components too, such as
networks and storage.
Machine virtualization in this context is showing us that
we are abstracting the compute resources from the underlying physical machine –
which introduces us to the first stepping stones towards flexibility,
scalability and increase the utilization.
Further, we have infrastructure hosting which can be seen
as the early days of cloud, although the exact service model here is not
defined. This means that “someone” would do the investment and ensure the
required amount of capacity for you as a customer, and you can have your
workloads and applications hosted in the hosting datacenter. This was machine
virtualization at scale.
The next step is the more familiar service models we can
consume from a cloud, such as Infrastructure as a Service, Platform as a Service
and Software as a Service. Although these service models are different, they
share the same set of attributes such as elasticity, self-servicing, broad
network access, chargeback/usage and resource pooling. Especially elasticity
and resource pooling is a way to describe the level of flexibility, scalability
and utilization we can achieve. I expect you as the reader to be quite
comfortable with cloud computing in general, so I won’t dive deeper into the
definition at this point.
Next, we are now facing an era where containers are lit
up – regardless whether you are a developer or IT-pro. Containers builds on
many of the same principals as machine virtualization, where abstraction is
key. A container can easily be lifted – and shifted to other deployment
environments without having the same cost, luggage and complexity as a virtual
machine – as a comparison.
In the Microsoft world we have two different runtimes for
containers.
Windows Server Containers that are sharing the kernel
with the container host which is
ideal for scalability, performance and resource utilization.
Hyper-V Containers gives you the exact same experience,
only that the kernel in this case isn’t shared among the containers. This is
something you need to specify during deployment time. Hyper-V Containers will
give you the level of isolation you require and is ideal when the containers
aren’t trusting each other nor the container host.
Microsoft has also announced that they will come with
their own Azure Container Service in the future, as a first-class citizen
resource provider managed by ARM.
Last but not least, we have something called “microservices”
on the top in this graphic. In the context of Microsoft we are talking about
Service Fabric – which is currently a preview feature in Microsoft Azure today.
Service Fabric is a distributed system platform where you
can build scalable, reliable and easily managed applications for the cloud. This
is where we are really seeing that the redundancy, high-availability,
resiliency and flexibility isn’t built into the infrastructure – but handled at
the application level instead.
Service Fabric represents the next-generation middleware
platform for building and managing these enterprise class, tier-1 cloud scale
services.
Also, as part of
Windows Server 2016 Technical Preview 4, we will be able to leverage Nano
Server for containers too, so you can get the optimal experience for your
born-in-the-cloud applications.
So, that was me trying to put things into context and why
I spent some time that day to have a workshop on Containers using Azure.
Getting started with Containers in Microsoft Azure
I created an ARM template that will:
·
Create a new storage account
·
Create a new Network Security Group
o Create
a new vNet and associate the new subnet with the NSG
·
Create a new network interface
o Associate
the vNic with a public IP address
o Associate
the vNic with the vNet
·
Create a new virtual machine
o Associate
the VM with the storage account
o Associate
the VM with the network interface
o Use
Custom Script Extension that will create x amount of Windows Server Containers
based on the parameter (count) input
If you deploy this from GitHub and follow the ps1
examples you should be able to simulate the life-cycle of containers in Windows
Server 2016 TP4.