As I am venturing off my every-day developer things, I have decided to make a series of posts on concepts of cloud computing. In this post I will discuss what Cloud Computing and Virtualization are and their differences.
The concept of cloud computing began in the ’60, however the term “cloud computing” was not used till relatively recently. In 1963 DARPA (the Defense Advanced Research Projects Agency) presented MIT with two million dollars for Project MAC (Project on Mathematics and Computation), which was a collaborative computer venture to create a working time-sharing system. The system was believed to facilitate greater efficiency, reduce costs, and save time by allowing many users to share one large computer instead of many smaller machines. Within 6 months of the project creation, 200 users were able to access the system in 10 different MIT departments, and in 4 years Project Mac became its own laboratory. In 1969 Project Mac along with Bell laboratories and General Electric developed Multics, the Multiplexed Information and Computing Service, which then evolved into an online computer system and had features such as file sharing, management, and system security. At that point it was capable of supporting 300 simultaneous users on 1,000 MIT terminals. At that point Bell Laboratories had to employ a simpler form of the UNIX operating system. In 1976 Project MAC was renamed to Laboratory for Computer Science (LCS) at MIT, and more intelligent programs were developed to run the system. LCS was focused on creating applications that would promote online computing in various academic disciplines, including biology, medicine, and library sciences.
So, what is cloud computing? According to Microsoft’s Azure, the definition of cloud computing is as follows: “simply put, cloud computing is the delivery of the computing services – servers, storage, databases, networking, software, analytics, intelligence and more – over the Intent (‘the loud’) to offer faster innovation, flexible resources, and economies of scale.”
Some of the top benefits of cloud computing are cost, speed, global scale, productivity, performance and security. When we talk about cost benefit of cloud computing, we mean that cloud computing eliminates the cost of buying hardware and software to set up your own data center. It also eliminates the cost of having an on-site technician that would maintain the data center and all the hardware in order to keep it always online and operational. Cloud computing also benefits in terms of speed. Generally, the cloud data centers have multiple machines and storage that perform computations and data processing at great speeds. Most cloud services are also provided on demand and at self-service, so securing vast amounts of computing power within minutes is usually not a problem. Global scale benefit just means that cloud computing has the ability to scale elastically. Depending on how much work is being done during peak months of a corporation, it can scale up or down. Cloud computing also removes the need for many tasks like hardware set up, patching, and maintenance, and this fact makes it more productive. The biggest cloud services run on a worldwide network of secure data centers, which are constantly upgraded with the latest generation hardware and software. This offers many benefits in performance. Security is probably one of the biggest benefits of cloud computing. Many cloud providers have their own sets of rules, regulations, and policies. Keeping cloud data centers and corporations’ data secure benefits both the corporation and the provider.
There are three types of cloud computing: public, private, and hybrid. Each one of these have their own advantages.
Public cloud is a cloud computing model, in which a service provider makes resources, such as virtual machines, applications or storage, that are available to the general public over the internet. Public cloud services may be free or offered on a pay-per-usage model. The benefits of using a public cloud services are reduction in need for organizations to invest in maintain their own on-premises IT resources, scalability to meet workload and user demands, and fewer wasted resources because customers only pay for the resources they use. The biggest disadvantage of the public cloud is security.
Private cloud is a type of cloud computing that delivers similar advantages of the public cloud, including scalability and self-service, but through a proprietary architecture. Unlike public clouds, a private cloud is dedicated to the needs and goals of a single organization.
Hybrid cloud is cloud computing environment that uses a mix of on-premises, private cloud and third-party, public cloud services with orchestration between the two platforms, by allowing workloads to move between private and public clouds as computing needs and costs change, hybrid cloud gives businesses greater flexibility and more data deployment.
Virtualization, on the other hand, can be defined as the abstraction of four computing resources – processing power, storage, memory, and network (I/O). Conceptually, it is similar to emulation where a system pretends to be another system, whereas virtualization is a system pretending to be two or more of the same system type. Virtualization refers to the act of creating a virtual version of something, including virtual computer hardware platforms, storage devices, and computer network resources. Virtualization in computing has the same roots as cloud computing. In 1960’s IBM introduced technology where users could run more than one operating system on one machine. It later evolved with the internet, as businesses began offering “virtual” private networks as a rentable service. In the 90’s the use of virtual computers became more popular.
Virtualization has three characteristics that make it ideal: partitioning, isolation and encapsulation. In virtualization, many applications and operating systems are supported on a single physical system by partitioning, or separating, the available resources. Each virtual machine is isolated from its host physical system and other virtual machines. Because of this isolation, if one virtual instance crashes, it doesn’t affect the other virtual machines, and the data isn’t shared between one virtual container and another. Encapsulation is the concept where a virtual machine can be presented to an application as a complete entity, and is can protect each application so that it doesn’t interfere with another application.
For example, in network virtualization, which has the main objective to allow users and systems to have a secure and efficient sharing of network resources, the advantages are:
- Parameters line QoS (Quality of Service), bandwidth throttling, and others are easily managed by the administrators.
- Easier to maintain security because systems are logically separated.
- Network components like switches, hubs, firewalls, and load balancers can be shared now rather than buying them repeatedly.
In application virtualization, we create a virtual machine that works separately at the application level and operates in a manner similar to a normal machine with a set of applications. Application virtualization has two types: remote application virtualization, where remote applications are used to run on a server and the end user can use these applications through a network protocol, and downloaded/streamed virtualization, where applications get executed in the user’s local system with the help of streaming whenever an application is requested by the user. The advantages of application virtualization are:
- Lower resources requirements.
- Protection of OS and other code from errors.
- It is possible for a system to run different versions of the same application simultaneously without any problems.
- OS migrations are made easier.
- Lower threat to the security of the system.
- Improved delivery and compatibility of applications by encapsulating them away from the underlying OS on which they are executed.
We have defined cloud computing and virtualization and their advantages. But what are the differences? According to a post on a data science blog edcuba.com, “virtualization doesn’t depend upon cloud computing environment, while without virtualization cloud computing can’t exist”. There are also a few different points that highlight the differences between cloud computing and virtualization. They are as follow:
- Scalability: while cloud can scale up as much as we want, virtual machine configuration limits its scalability.
- Quick set up: setting up the cloud is a tedious task. Opposite to that, setting up virtual environment is very simple.
- Dedicated hardware: cloud is created from multiple hardware pieces, whereas dedicated hardware is required for multiple virtual machines.
- Integration: cloud integration allows for future expansion of applications, storage and so on. Virtualization integrations allows only expansion of new machines within the same infrastructure.
- Dependency: cloud networks can be accessed by multiple users, but multiple OS can be installed on a single machine in virtualization.
- Accessibility: cloud can be accessed from any point on a globe with internet access, however in virtualization proper permissions are required for accessing from outside the network.
- Disaster recovery: in cloud disaster recovery is not dependent upon one machine. In virtualization, a single machine that fails can bring down multiple VMs.
Cloud computing and virtualization are both essential in today’s world. Cloud infrastructure cannot be established without virtualization, as it is the foundation of cloud networks.