Imagine that you were to create a word cloud with all the words and terminologies that you hear in the context of Cloud computing. What would be that word that would most commonly occur? It's very likely you would see that word as virtualization. That's the technology that is at the heart of Cloud computing. In this video, we're going to look at what virtualization is and why is it useful. To see why it's useful, let's look at the challenges of migrating software in the traditional model. So, if you had a company that was growing and you are bringing in more resources and as a result you need more computational resources as well, you need to expand your service. Then in that case, in order to include new servers, you'd first have to backup all your data. Then you would need to install the new operating system on the new machines that you are adding. You'd need to re-install all the existing software on the new machine. Finally, you have to recover all the data that these softwares use and put it on the new machine. Many things can go wrong in this process and this process can be time-consuming. So, migration in the legacy systems was quite difficult. Now, virtualization helps to solve this problem because it is a technology that allows us to create virtual versions of hardware and software that operate in isolated execution environments. So, by hardware, we're referring to servers, storage, and network. Similarly for software, we can be referring to the operating systems. We can create virtual versions of these types of hardware and softwares and have them operate in isolated execution environment so that we don't have interference across these different instances that we're running. It could be something as simple as partitioning your hard drive or running two operating systems on the same machine using a software like Parallels for example. All the devices, applications, humans act with virtualized resources as if it were a single resource pool. So, you would have a whole bunch of servers, they would all look like a common or a single resource pool but you are supporting multiple tenants. They are using pieces of that hardware resource or the software resource that you're sharing across these different tenants. There are different types of virtualization. The first one is storage virtualization. So, this is the aggregation of multiple network storage devices into what appears to be a single storage unit. Then there is server virtualization. This is the partitioning of a single physical server into smaller virtual servers and hosting multiple clients. There is also operating systems virtualization. It is a type of server virtualization technology which works at the operating system or the kernel level. Then finally, there is network virtualization, which is using the network resources through a logical segmentation of a single physical network into multiple logical networks. So, all of these would use this notion of virtualization. That is, partitioning the shared pool of resources and dedicating slices of this to different services or different tenants. Now, in order to do that, we use a software which is known as hypervisor. This is the virtualization software, it's also known as virtual machine managers. There are two types of hypervisors that we use. Type 1 hypervisor or bare metal hypervisors, which run directly on top of the actual hardware resource. Or type 2 hypervisors, which is sometimes easier to use, which are client installed and it is installed on top of an existing operating system. So, the main difference between type 1 and type 2 hypervisor is that, if you think of the computational stack, you have the software, operating system and the hardware. Type 1 hypervisor will be installed right on top of the hardware. So, below the operating system. Whereas, type 2 hypervisors are typically installed over the operating system. So, just between the software and the operating system. So, in both cases, you can host machines that would run multiple virtual machines or guest machines. There can be a variety of operating systems like Windows and iOS. You could run them simultaneously on the same virtualized infrastructure. You could use a software like Parallels in order to virtualize your Mac. If you're an Apple user, you could be running iOS and you use Parallels to virtualize it and run Windows within the Mac. Modern equivalents of the traditional model of hypervisors, the bare metal hypervisors that IBM had invented in the 1960s. The modern equivalents of that are, Oracle VM Server, the Citrix XenServer, VMware ESX/ ESXi, Microsoft Hyper-V 2008/2012 and so on. So, hypervisors are the software that is used for virtualization or virtual machine management. So, in the next video, we are going to look at different types of cloud computing service models such as, software as a service, platform as a service, and infrastructure as a service.