So, now that you have seen the basic computing architecture, let's imagine that our company has two servers; Server 1 shown over here and Server 2. Both of them have the different components, we have a hardware consisting of the brain of the computer, the CPU or Central Processing Unit, the memory and the network interface cards, among many other hardware machinery. Then on top of the hardware, we have the operating system which controls the allocation of the hardware resources among the different softwares that are running on that machine. Here, Server 1 has two software services running on it, which are mentioned as S1 and S2, and Server 2, again, it has the same architecture, but this one is running services S3 and S4. Now, let's imagine what happens when Server 1 goes down, maybe because of some power failure or some hardware failure. When this happens, then service 1 and Service 2, these two software services become unavailable to all the users. What we would really like to have is when the server hardware fails, we should be able to take this entire block consisting of the operating system and the software that are running on that server, we should be able to take that, and move it to the second server. This is what would be nice to have as a feature. If a server goes down the hardware component fails or if there is some problem with the power supply or any other such issues, we should be able to take the operating system and the software that were running on it and be able to move it to the other server. So in order to do that, what we now have in the context of cloud computing, the technology that we call as cloud computing, uses a very simple idea, that is we introduce a layer of abstraction between the operating system and the underlying hardware. So, instead of the operating system being directly connected to the underlying hardware, we would have a layer of abstraction sitting in between. This layer is called the virtualization layer. Examples of such virtualization software include ESX and Xen. These are examples of hypervisors that provide virtualization in order to create this layer of abstraction using software between the operating system and the hardware. So what happens when you have a virtualized architecture such as this, as far as the operating systems that are running on top of this hardware, this two servers look like a giant pool of resources. It's a pooled resource. So, as far as this operating systems are concerned, they will not realize that it's running on Server 1 and this operating system is running on Servers 2. For them, this entire hardware would look like a shared pool of resources, and they would be able to continue running Service 1 and Service 2 by utilizing the resources from the existing server that didn't fail. So, in this case, Services 1 and 2 will not be interrupted, even though Server 1 has failed, they will simply be using the hardware resources from Server 2. So now, Server 2's hardware resources will be used to support Service 1, 2, 3 and 4, all of them. So there is no disruption in the services. That's the basic idea behind cloud computing. In order to take all this hardware resource and create this layer of abstraction in software so that if the underlying resources become- if one or more of these resources become unavailable, then the remaining resources can be used to support the applications without any interruptions. That is what we mean in the context of cloud when we say we migrate the services from one machine to another machine. So even though one machine has failed, we can migrate the services, the software services and operating system that's running these services to another machine, that is, it can be supported with the other hardware. So now, let's take a look at a real-world example of why this is useful. So, in the early days before cloud computing, if you had a company and you were, let's say, running an email exchange server, Microsoft Email Exchange Server, the way you do it is you'd have some hardware, a dedicated hardware with the Computing Processor Unit or CPU, you would have your RAM, ROM and so on, all the hardware components that we talked about. On top of the hardware, you would have some operating system. So if it is Microsoft Email Exchange Server that you're running then you would need something like a Windows NT server as the operating system. Then on top of that, you have the application that's running which is the email service. So, what could happen is that, either there could be a power failure that would lead to the unavailability of the hardware resources, or there could be a crash of the operating system or some bugs that disable the operating system. In either case, whether the operating system or the hardware, whichever becomes unavailable, your email service that is running on top of them is also going to become unavailable. Therefore, you would need to have IT support staff 24 hours on premise in order to take care of these kinds of issues. But with cloud computing, you don't have to worry about this, because if there was a failure of the operating system or of the hardware, the application, that is the email application running on top of it, will simply be migrated to another server in the Cloud there and it will continue to run without any interruption, and you don't need to maintain your IT staff in order to take care of these issues and that would save you a lot of money in terms of the maintenance and the personal expenses. So, now that we have seen the challenges with the stand-alone computing architecture, we will next look at how cloud computing solves these issues in our next video