Container services – Core Azure Resources

Container services

This section introduces container services, a compute service that you must understand for the Describe Core Azure Services exam.

The two container services outlined for the exam are ACI and AKS:

  • ACI is a PaaS service for containers running in Azure.
  • AKS is a container hosting platform and orchestration service for managing containers at scale.

Before we look at the ACI and AKS container services further, we will look at the differences between virtualization and containerization.

Virtualization versus containerization

First, let’s define these two different compute services approaches:

  • Virtualization is an approach where the hardware is abstracted; this allows many compute instances (VMs) to share a single host’s hardware resources. Each compute instance runs with its own isolated OS.
  • Containerization is an approach where the OS is abstracted. When we say abstract, what we mean is to remove; that is, remove the requirement to provide that layer. We make the abstracted (removed from thought and consideration) layer the cloud provider’s responsibility to provide, keep available, maintain, and so on; we still consume resources from it, but it is a layer that we no longer need to know or care about.

Containers, as a concept, are built around encapsulation and creating standardized software units, packaging an application’s code and its dependencies that can be deployed equally seamlessly into a development or production environment with expected, repeatable, and consistent results. The value and benefits of containers are that they are intended to be portable, self-contained computing environments.

A container is a compute unit, similar to a VM; they both have the same goals: host and execute code. However, VMs have a lot of overhead, are big, utilize a lot of resources, and have slow boot times. We can consider a container an anti-VM as their characteristics are the complete opposite; they are lightweight, small in size, utilize little resources, and have quicker boot times. You can consider them as being lighter-weight, more agile, having more efficient compute units than a VM, and being a perfect fit for our digital transformation journey and modernizing our data center and workloads. We may even be brave enough to say that containerization, at some point, will do to virtualization what virtualization did to the process of installing an OS on the physical server bare-metal approach.

This containerization approach allows many compute instances (containers) to share the host software resources of one OS of a single host. Thus, it can be thought of as more of an application delivery model than a virtualization model.

The following diagram visualizes the concepts of virtualization and containerization against the traditional physical approach:

Figure 4.5 – Traditional versus virtualization versus containerization

Let’s look at the preceding diagram in more detail, which visualizes the different approaches that can be used to host your application:

  • Traditional approach: Before virtualization and containerization technologies, applications were installed on an OS that was installed directly on the hardware; you will see this referred to as being installed on bare-metal. This means there was no software (such as a hypervisor) between the OS and the hardware.

The early physical approaches installed many apps on one OS and one physical server (referred to as a piece of tin), but this often resulted in resource starvation, where the resource-hungry app would consume all the resources or software conflicts with processes and libraries (referred to as dynamic link libraries (DLL) hell).

This was solved by running each application on its physical server, but this brought other problems as we had over-resourced and under-utilized servers costing a lot of money and doing very little. In addition, it brought physical tin sprawl across the data center, which meant that we needed more physical rack space, which needed more floor space, cabling, power, cooling, and so on. Finally, this meant we needed to focus on data center capacity management, which distracted engineers from the job of deploying and operating apps for the business, which should be their core task.

The bottom line is that the ability of one physical server to deliver one app introduced a scale and inefficiencies problem that was seen as a cost to the business. To IT, this was seen as a cost center, not an innovation or value creation center.

  • Virtualization approach: Virtualization was an opportunity to change the scenario we saw previously of one app, one physical server; this change was brought about by the ability to abstract (remove dependency from) the hardware.

The benefits virtualizations provided were that they tackled the two key challenges of the traditional physical approach: scale and utilization. Virtualization meant that we could run multiple VMs and, therefore, multiple applications from one physical server; this gave greater resource utilization and less floor space, power, cooling, and so on than what was required.

The bottom line is that fewer physical servers are required to deliver more apps, translating to fewer costs to deliver the same applications to the business. Due to this, we have a leaner, more agile, and tangible value-delivering IT team.

  • Containerization approach: Containerization is another evolution in delivering applications to a business; as we learned earlier, this approach changed from abstracting the hardware to abstracting (remove dependency from) the software that brought about the benefits of containerization.

The key benefits and metrics are greater resource utilization/efficiencies/isolation, smaller sizes, faster boot-up, agile app deployment, and no need to provide a guest OS for each app; the app shares the underlying host OS kernel.

The bottom line is that fewer physical servers and OS instances are required to deliver more apps, which, again, means fewer costs to deliver more applications to the business and in a more demand-driven, agile, and standardized manner.

This section introduced containerization, described what containers were and their benefits, and compared containerization with virtualization. In the next section, we will look at ACI.

About the author

Leave a Reply

Your email address will not be published. Required fields are marked *