Virtualization and Cloud computing

Introduction to Virtualization and Cloud Computing

This is an introduction to virtualization and cloud computing. Here we will talk about the basic concepts that make all of this possible and a high-level overview of the topics. We will start getting a general understanding of virtualization and hypervisors as well as their purpose and requirements. Then we will talk about cloud computing and the different models that agreed upon, highlighting who carries responsibility for each part of the service.

Virtualization

What is virtualization?

Generally speaking, then we talk about virtualization we are referring to the process of running a virtual instance also known as a virtual machine (VM) in a layer abstracted from the actual hardware. Moreover, we usually use virtualization to run multiple independent operating systems on one physical computer. Essentially it is the process of creating a simulated “virtual" environment inside of a computer where you can run virtual machines.

There are some terms which are commonly used which are important to discuss such as:

  • Virtual Machine (VM), which is nothing more than the software construct that allows a user to run one or more operating systems on top of an existing operating system as well as the name we give these machines themselves.
  • Guest OS, which is used interchangeably for the virtual machine as a machine usually requires using an Operating System (OS).
  • Host OS, which refers to the computer the Virtual machine is hosted on.
  • Hypervisor, which is the process and software that allows the host OS to communicate with the guest OS.

Additionally, we can divide the use of virtualization into two categories; client-side virtualization and server-side virtualization, however, there are others such as application visualization which will not be covered here.

Client-side Virtualization

This refers to running one or more virtual machines on a personal or workstation which can also be referred to in the IT community as a thick client. Typically this is done using a type 2 hypervisor and can be on both a laptop or a desktop computer as long as the hardware can support virtualization. (We will talk about the requirements of visualization later here). There are two cases where this can be extremely useful:

  1. Testing software applications that should run on several divergent operating (Windows, Mac, Linux) and flavors of operating systems (Windows 7, Windows 10, and macOS Big Sur, MacOS Catelina, Ubunto, Fedora, etc.). This is particularly useful when it is important to maintain backward compatibility while pushing new software updates.
  2. Using software that is not available for your operating system whether it is business applications of games. However, it is important to note that Mac virtual machines can only be created on Mac hardware.

It is important to note that even if this has many practical applications, it is not a scalable solution or at least not efficiently.

Server-side Virtualization

This refers to running multiple virtual machines on a server which is simply a very powerful computer that provides functionality for other programs or devices which we call "clients". This is usually done with a type 1 hypervisor. The main use case here is to have one large computer that functions as the host for multiple virtual machines that are used by the employee of the organization in the organization. Additionally, it is used when purchasing computing power from a cloud provider. Services such as storage space, web servers, and computing instances.

The pursue of a Virtual Machine

It allows us to use our hardware resources more efficiently and would also allow more efficient allocation of capital resulting in a reduction in monetary spending. This refers to the fact that we can allocate pieces of ower host machine to the guest machines. In particular me the following resources:

  • CPU
  • RAM
  • Storage
  • Networking adapters

Additionally it is important to note that if we allocate hardware resources to a virtual machine, to this guest OS it will appear as if it is one Hardware. For example, if we allocate 2GB of RAM to a guest OS, it will appear to it that it has 2GR of RAM as if it was its own hardware. The same idea applies if we allocate 1 core of the CPU and other physical resources.

Another purpose for the use of virtualization but in this case only for cloud services, is rapid scalability. As it allows the company to expand its resources much faster and at a much lower cost. This applies both for scaling vertically, which means expanding the hardware capabilities of the VM’s and horizontally which means expanding the number of VM's or computing instances. This will be explained in more detail in the section on cloud computing features.

As well as the pre-mentioned purposes of this technology we can also make use of its isolation property. What is mean by this is that even tho the guest OS is on a host OS where it is possible to host multiple another guest OS’s, the VM’s are isolated from each other and from the host. Meaning that to each guest Os it appears as it if it has it's one hardware and is a standalone (non-virtual) machine. A benefit of this is that if VM squires a virus, it does not effect the host OS or other guest OS. Meaning this VM can be terminated with no harm done to the other OS’s, and its resources can be allocated to a new VM with no harm done to the system. Nevertheless, it is possible to give OS communication abilities explicitly or as part of a Local Area Network (LAN). This is also a massive benefit for testing as you can easily spin up (create), and terminal (delete) VM to test an application

Hypervisors

As hinted above a hypervisor is the process or software that makes virtual machines possible. They are software that allows for the creation of these virtual machines as well as allows communication between the host OS and the guest OS. However, it is important to notw that not all hypervisors are the same, and generally speaking there are two types.

Type 1 Hypervisor

This type of hypervisor is commonly referred to as bare-metal hypervisor do to its position on the tech stack. It runs directly on the hardware and provides the best performance, however, it is generally only used for server-side virtualization. Some examples of type 1 hypervisors are:

  • Microsoft hyper-V
  • VMware ESXi
  • Citrix XenServer

Type 2 Hypervisor

This type of hypervisor is also known as host-based hypervisor, as it is installed on top of the existing host OS. It has lower performance and is not scalable, however, it is great for anyone wanting to learn more about hypervisors of different operating systems as it provided a very cheap way for users to experiment. Some common examples of this type are:

  • VMWare Fusion
  • Oracle VirtualBox
  • QEMU (also an emulator)

Emulator

While talking about hypervisors it also seems important to mention what an emulator is and to make a clear differentiation. An emulator is a piece of software that enables the host computer to behave like a different computer which we refer to as guest. This is used to run software that was designed for a specific and different piece of hardware. It is commonly used for printers so that they emulate and HP LasorJet and are able to use it's software. However, it is also typically used by game enthusiasts which want to play classic video games and emulate the consoles on their computers.

Cloud Computing

What is cloud computing?

Put as simply as possible, cloud computing is the delivery of computing services over the internet. These services may include servers, storage, databases, networking, software amount other. There are 3 commonly agreed-upon types or models of cloud computing.

  1. Software as a Service (SaaS)
  2. It is an application run remotely, typically over a browser and most of us make use of them every day whether we are aware of them or not and many of them are free. Some examples are:

    • Gmail
    • Google Drive
    • Microsoft Office

    This model has the most responsibility for the vendor and least for the user of the product.

    Vendor Responsibility

    Application Maintenance

    Application Data

    Operating System Environment

    Virtualization Infrastructure

    Hardware Infrastructure

    Network Infrastructure

    User Responsibility

    Payment of the service

  3. Platform as a Service (PaaS)
  4. This model provides the user with an environment for the development of the application. Some PaaS examples are:

    • Heroku
    • GitHub
    • Google app engine

    This model balances the responsibility between the user and the vendor.

    Vendor Responsibility

    Operating System Environment

    Virtualization Infrastructure

    Hardware Infrastructure

    Network Infrastructure

    User Responsibility

    Payment of the service

    Application Maintenance

    Application Data

  5. Infrastructure as a Service (IaaS)
  6. In this model, the user has much more flexibility as to how he uses the services, as what it does mainly is to provide the user with a computing infrastructure. Some common examples are:

    • Amazon Web Services (AWS)
    • Microsoft Azure
    • Cisco Metacloud

    This model shift more of the responsibility away from the vendor and to the user.

    Vendor Responsibility

    Virtualization Infrastructure

    Hardware Infrastructure

    Network Infrastructure

    User Responsibility

    Payment of the service

    Application Maintenance

    Application Data

    Operating System Environment

    Additionally, when talking about the cloud it is also important to consider the common architectures. Out of which the 4 most common are:

    1. Public
    2. It is by fare the most common and it is as the name suggests cloud vendor that offers it services publicly and therefore everyone has access to them. Some common examples are:

      • AWS
      • Google Cloud
      • Microsoft Azure
    3. Private
    4. For this architecture the company owns and maintains everything, however, can provide additional security as you have more control over how your data is handled and backed up. It is often called on-premises (on-prem) however it is possible to have the servers running in a server farm and still maintain complete ownership and responsibility.

    5. Hybrid
    6. As the name suggest it is a bit of both, you can keep your private information on-prem and move the rest of your computing requirements to a public cloud.

    7. Community
    8. A community cloud is a multi-tenant platform where several people and/or organizations can share computing resources.

Cloud computing features and issues

There are a couple of defining features of cloud computing that can have a massive advantage to your organization. We will about a few here and describe them:

  1. Shared resources
  2. This refers to the fact that when using cloud computing you are often sharing resources with other users. These resources can be; Internal - which is also known as on-prem, or external, which is also known as cloud storage.

  3. Rapid elasticity
  4. This refers to the fact that many cloud computing services such as elastic-beam-stock, allow your computing resources to rapidly grow just as rapidly decrease matching the needs. This is quite useful when handling peak traffic on web applications, as you will require having more resources but only for a small period of time.

  5. On demand
  6. This refers to the fact that the resources are available whenever you need them and can be obtained extremely fast.

  7. Resource pooling
  8. This refers to the fact that to make this possible providers create large clusters of servers aggregating the computing power together.

  9. Measured service
  10. Cloud computing services are measured and you only pay for what you use, this often uses a system similar to meters to measure the services and then charges you at the end of the month.