How Virtualization Led to Container and Serverless Technology
From Physical Servers to Virtualization
The start of the mass migration to the cloud was largely initiated by the inception of virtualization, which has made moving to the cloud more easily achievable, according to DataCenter Knowledge. Essentially, we began with physical servers, which required racking and stacking the physical box and deploying an operating system onto it—after which we would layer on specific application software to perform the desired task on that system. Then came virtualization, using those same servers, but rather than installing a single operating system and running a single workload on that one box, we installed a hypervisor OS and set it up to support multiple virtual machines or virtualized servers that could run many different workloads all at the same time on that one physical box. This enabled much better capacity utilization, and provided a much easier way to instantiate new workloads.
While on-premise data centers are still integral to the IT strategies of many enterprises, the majority of businesses are beginning to migrate systems infrastructure from physical data centers to the cloud.
- 94% of IT professionals say that cloud and hybrid IT are among the top five most important technologies in their technology strategy (SolarWinds IT Trends Report 2018).
- 95% of IT professionals have migrated some part of their infrastructure to the cloud from 2016-2017.
- Organizations have migrated applications, storage and databases to the cloud more than any other area of IT in the past from 2016-2017 (SolarWinds IT Trends Report 2017).
Keeping IT entirely on premise introduces the age-old challenge of resource, cost and management restrictions, which the scalability of cloud platforms mitigate.
…and Cloud to Containers
Container technology is a natural next step in virtualization. Containers are designed to provide a much lighter weight compute environment on which to run the parts of an application. They are much faster to startup than a virtual machine, don't require a full blown operating system or its maintenance, and provide portability across platforms (on premise, cloud, etc.).
Containers have generated a significant amount of hype in the past few years, and today, actual usage is on the rise. IT organizations are making investments in containers to solve the challenges commonly associated with cloud computing, both on and off premise, as well as to enable innovation.
- 44% of IT professionals rank containers and container orchestration as the most important technology priority today.
- 38% of IT professionals rank containers and container orchestration as the most important technology priority three to five years from now.
Containers effectively give you a similar functionality to a virtual machine, but in a much lighter weight fashion. The big difference between virtual machines and containers is that the container doesn’t have to maintain all the baggage of the entire operating system that a virtual machine has to maintain. Consequently, rather than burden the container with overhead, they run on a container manager and share the same operating system resources, designed to run on a hardware box or virtual machine and orchestrate stand up and tear down.
As far as orchestration solutions are concerned, Kubernetes and Docker Swarm are the most popular choices. Each container can start up quickly, and the software that runs on them is usually designed to do one task, or multiple threads of one task, ultimately resulting in a highly scalable implementation. This allows you to split up your app into component parts that can run on different containers, while various independent parts communicate with each other from container to container. This concept, coupled with the agile development methodology, has become the new norm for software development, and it’s very much complementary with cloud.
It’s worth noting, while containers offer a number of benefits, their use does result in loss of ability to provide discrete networking. Using a container manager with multiple containers may results in less secure networking between container workloads. One solution to this is offered by VMware, which has an integration with its NSX product that provides a networking and security layer around each container. While its necessity depends on the workload and what kind of control is desired between data flows and apps, it’s available for those who desire greater control of networking and security with containers.
What About Serverless?
Then there’s serverless technology, often mentioned in discussions of containers. Of course, it’s not actually serverless. Rather, from the perspective of the consumer of a public cloud environment, they aren’t responsible for its management (thus, serverless). As a developer or operator, you’re enabled to focus exclusively on your application, while the cloud provider will give you an environment in which you can deploy your application without concern for virtual machines, operating systems or container managers. You can focus on your app while your chosen cloud provider will supply you with a container runtime that they maintain for you.
In many cases, it’s more economical to run serverless technology because while you’re paying for some level of compute, not paying for individual instances or virtual machines, which is how cloud providers traditionally charge customers for usage. Serverless environments require less overhead and management. However, if you need more control over the OS you’re running or the capabilities that exist on the container, serverless may not necessarily be a viable option for you. Some examples of serverless cloud solutions would be Google’s App Engine or Amazon’s Elastic Beanstalk. These are also referred to as Platform as a Service (PaaS) and on premise examples include Pivotal Cloud Foundry and Red Hat OpenShift. While the on premise PaaS offerings aren’t really serverless, they do offer similar functionality where the software developer doesn’t need to be concerned with operating systems and patching. Instead they can focus all of their energy on designing and building their software solution or application.
Exploring Today’s Virtualization Options
There are many uses cases for cloud, containers and serverless technology. It all depends on the focus and goals of your organization, IT group and developers. If you’re in search of more information on how container technology applies to your business, we’re happy to share our insights. Reach out to August Schell today, or call us at (301)-838-9470.