What is Cloud Computing?
The phrase cloud computing has been used heavily within the IT industry for many years now, and more recently it's being used within other sectors such as retail and finance, as it becomes increasingly popular. Many people often refer to the technology simply as the Cloud. Cloud computing is a rapidly growing technology, and the adoption of this is a key strategy for many organizations, and there is a very good reason behind this. It's changing the landscape of how many companies operate on a huge scale, with significant business and technical advantages and benefits that can't be ignored. The growth of cloud computing has been exponential over the past few years, so what is it? Put simply, cloud computing is a remote virtual pool of on-demand shared resources offering to compute, storage, database and network services that can be rapidly deployed at scale. Now there may be a couple of terms within this definition that are new to you, or not too clear, such as virtual or computer. Don't worry, I'm going to break these down over the next couple of slides, after which I shall give you the definition again, and you should be able to fully understand this concept.
Before fully understanding cloud computing, we must be aware of some existing technology that it's based upon, that being, virtualization, and this is being used in on-premise data centers for a long time. But this virtualization maximizes the power of cloud computing, and without this virtualization, it would just not be possible. So what is virtualization? In essence, it allows the possibility of having multiple virtual machines, VM's, each running essentially a separate operating system and applications, all installed on one physical server. These VM's all run at the same time without being aware of each other's existence while sharing the underlying hardware resources. This sharing of hardware resources is a key element of understanding of virtualization and is achieved through a hypervisor. A hypervisor is a piece of software you use to create the virtualized environment, allowing for multiple VM's to be installed on the same host. When installed, the hypervisor sits logically between the physical server hardware and the virtual machines and creates a shared pool of virtual hardware resources for each of them to access. All VM's installed on the host see the hardware as they normally would.
However, any request to the hardware goes via the hypervisor, which then handles that access ensuring the hardware resources are shared between all other VM's as needed and as configured. Now there are obvious benefits of virtualization, which include, reduced capital expenditure. As less hardware is required, as you have the ability to provision multiple VM's on a single host. Reduced operating cost, because as there is less hardware, there is less space, power, cooling required within your data center, and the footprint also reduces within your data center as less space is required to house your server hardware. This optimization of resources when in a cloud environment means everyone can benefit from virtualization, from the cloud vendor to the consumer. Now just a quick note before we leave this topic of virtualization. A VM within the public cloud is sometimes referred to as an instance, this term is very vendor specific but it refers to the same object as a virtual machine. When discussing resources within cloud computing, it won't be long before you come across the terms such as compute, storage, database and network resources. Increasingly you may also hear other terms such as machine learning or artificial intelligence. However, for this beginners course, I just want to keep the focus on the core foundation services.
It's a good idea to have a clear distinction between compute, storage, database, and network. And what each of these refers to, is that it will certainly help you going forward when identifying what services you want to move to the cloud, should you decide to do so. Compute objects provide the brains to process your workload. Including what's required to process a run request from applications and services. As a comparison, if you think of hardware devices with CPU's and RAM, typically servers and how they work in a classic, on-premises environment, compute resources in a cloud, are comparable to these. Storage resources simply allow you to save and store your data. Any resource that allows you to save your data in the cloud, is classed as a storage resource. Again as a comparison, in the typical environment these will be seen as your server hard disks, or your network-attached storage, which provides file-level shed storage over the network, or your high-speed storage area network, your SAN, which is block-level storage accessed over a high-speed network. Database resources allow you to store structured sets of data used by your applications. Again as a comparison, databases are widely used in Data Centers with some common database engine types being SQL Server, Oracle, and MySQL. Within the Cloud, there are a wide variety of database engines available for different use cases. Network resources provide the connectivity allowing all other resources, compute, storage, and database, to communicate with each other. In a typical environment, you would find hardware, such as routers to route traffic between network switches, which provide the backbone of network connectivity allowing the host to talk to one another and firewalls to allow or deny traffic into the environment.
So now if we go back to our definition of cloud computing given earlier of, cloud computing is a remote virtual pool of on-demand shared resources, offering to compute, storage, database and network services that can be rapidly deployed at scale. You should now have a clearer understanding of what this actually means. The red section refers back to the virtualization and the blue section refers to the typical resource types available within cloud computing that we just discussed. That has now brought me to the end of this lecture, coming up next, I shall be discussing the different cloud deployment models that are typically referred to in cloud computing.