Hello, and welcome to The Cloud. This lecture video that you are watching right now on your computer is probably being streamed from somewhere in The Cloud, that technology that seems to store everything from our emails, to online documents, to our social network data, and all the music and videos that we watched. So, what is this technology? What are its benefits and how can companies or businesses benefit from the use of cloud computing technology? These are some of the questions that we're going to learn in this module. So, let's talk about what are cloud computing basics, and explore some of the cloud computing features. So, cloud computing is a set of technical concepts that allow data, applications, and services which are running on several computers that are distributed somewhere in the world, but are just interconnected through some real-time communication network like the Internet. The National Institute of Standards and Technology or NIST has a definition for cloud computing, and it defines it as a way of enabling on-demand access to a shared pool of computing resources, which can be rapidly provisioned and released with minimal management effort. So, let's look at some of these characteristics in more details. So, the first characteristic of cloud computing is that it is on demand and self-service. What it really means is that as a user of a cloud computing service you can sign up for that service at any time, and you can directly start using those resources. For example, in Amazon web services, you could create an account, and that would allow you to have access to hardware resources hosted by Amazon, and you can develop your own programs and launch your own applications. Similarly, for Microsoft Azure and Google Cloud you have same features. Whenever you need to use them you can create an account and start using those resources. Why is this useful is because there is very little delay in procuring expensive hardware. If you are starting a small business, it would be quite expensive to get the capital expenditure to spend on getting new hardware resources for starting your business. Whereas, if you just create an online account with Amazon, you can launch it relatively quickly without having to invest in buying and purchasing these kind of hardware resources. So, that's one of the benefit whenever you need it on demand and it's up to you. So it's self-service, open an account and start using the resources. The second characteristic is that cloud computing provides a very broad network access. What it means is that cloud computing applications can be accessed from many different types of devices from any place in the world. You can access it from a wide range of platforms. It doesn't have to be only web browsers, you can do it from your mobile phones, desktops, and so on. So, it provides a very broad network access from different types of computing devices, from different types of platforms, and operating systems. The third feature of cloud computing is multi-tenancy. What it means is that clouds typically cater to many users who can use the cloud computing resources at the same time. This is achieved by what is known as resource pooling or resource sharing. So, cloud data centers would typically have many servers that can be shared across various end-users, and it is useful because it provides scalability. Why? Because whenever a new person wants to join in, they can be allocated a slice of that computing resource or any of the servers that are currently idle. It also provides efficiency to the cloud providers because they can allocate any amount of unused resources to other tenants who need it. So, if you suddenly have a spike in your demand and you need more resources, you can request for that and the cloud vendor can allocate some of the unused resources to you because you are sharing it with others. Since it's a shared resource, the cloud provider has the ability to slice it and dice it and allocate different portions to different people. Another feature of cloud computing is rapid elasticity. What it means is that since the resources are pooled or shared, reallocation is relatively easy. So, if you had higher demand and if you need more resources, you can easily get it through a slight reallocation of the resources that the cloud provider can do. At the cloud providers end, they can keep on adding more and more hardware resources to their data center, and have it shared across various individuals. So, there is a technology called virtualization that we looked at, which allows the cloud vendors to share these hardware resources across many different applications and softwares that are running on top of it. So, it's the easy way to scale up resources very fast, and similarly to release resources when you don't need them. Another feature that makes cloud computing attractive to businesses is reliability. So, in the sense of cloud computing, as a client you really don't need to worry about keeping a backup of the data because the cloud vendor is taking care of it. They will keep backup of the data at their end, so as a client you don't have to worry about reliability of the service. So, data backup and load balancing across multiple servers that is how much active a particular server is, and how to balance the activity across different servers is taken care of by the data center or The Cloud provider. As a user, you don't have to worry about those issues. So, reliability is a useful feature of cloud computing. The other feature is metered billing. This is very useful because as a client, because you only pay for the amount that you are using. It's a pay as you go model, so if you need more resources you will pay proportionately more, if you need less resources you only pay for what you use and that's very useful for small and medium-sized companies. So, now let's talk about the benefits of cloud computing through an example. So, in the traditional computing model we have a computer or a server that has three main parts. The central processing unit or the CPU which uses the memory of the computer which are of two types, RAM and ROM, and a computer has something called the network interface card or NIC. This is where you plug-in your Internet connection, so that the computer can talk to other computers connected over the network, and these forms the hardware for any computing device. So, if it is a server that we're looking at here, then these kind of servers can be from companies like IBM, HP, Sun Microsystem, Windows, Microsoft and others. Now, on top of this hardware sits a layer which is implemented in software and it's called the operating system. The operating systems can be Linux or Windows, and so on. These operating systems are tasked with the job of allocating the hardware resources among the different softwares that run on top of this operating system. So, all your applications that you're using on your computer, these are softwares that are interacting with the operating system, and the operating system gets to decide which piece of software or which application is getting how much of the hardware resources. So, these are all your applications. Software applications and utilities. So, the operating system is tasked with the responsibility of sharing the underlying hardware resources across these different softwares that are running on your machine. Now, what happens is that, if there is a problem with the operating system such as, if there is a bug that shuts down the operating system, then all these softwares that are running on your machine will stop working, because without the operating system there won't be anything to allocate the underlying hardware resources across these softwares so they will stop working. Similarly, if there was a problem with the hardware itself, for example, there was a problem with the fan that keeps the machine cool, or if there is a problem with the network interface card and your software's have to talk to the Internet, or if there was any power failure and this hardware becomes unavailable, again, your software will stop working. So, now that we have seen the problems with the traditional computing model, we are going to explore how cloud solves this problem.