Cloud Computing Concepts
Published: 2024-05-14 23:41:55

**What is Cloud Computing?**
Cloud computing is an information technology (IT) paradigm that enables  access to shared pools of configurable system resources and higher-level services that can be rapidly provisioned with minimal management effort, often over the Internet. Cloud computing relies on sharing of resources to achieve coherence and economies of scale, similar to a public utility.

Simply put, cloud computing is the delivery of computing services – servers, storage, databases, networking, software, analytics and more – over the Internet (“the cloud”). Companies offering these computing services are called cloud providers and typically charge for cloud computing services based on usage, similar to how you’re billed for gas or electricity at home

   **_Cloud Computing Models, Resources, Attributes_**

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5s6of00vdb2pn97wwach.png)



**What is Virtualization?**
Virtualization simply means the creation of a virtual (rather than actual) version of a particular resource or specification of a system. This includes virtual computer hardware platforms, storage devices, and computer network resources. Anything from a server to an operating system. It allows you to turn one server into a host for a group of servers that all share the same resources.


**First Definition** 
Virtualization is a technology that allows you to create multiple simulated environments or dedicated resources from a single physical hardware system.

**Second Definition**
 Virtualization is a process of running a virtual instance of a computer system in a layer abstracted from the actual hardware, most commonly it refers to running multiple operating systems on a computer system simultaneously.

 **Understanding how virtualization works and helps in cloud computing**. 
Virtualization relies on software to simulate Hardware functionality and create a virtual computing system allowing organizations to run more than one virtual system and multiple operating systems and applications on a single server.

Virtualization can increase agility, flexibility, and scalability while creating significant cost savings. Greater workload mobility, increased performance and availability of resources, automated operations are all benefits of virtualization that makes it simpler to manage and less costly to own and operate. Virtualization also offers many benefits such as isolation, partitioning, encapsulation, more environment execution, resource or device independence.

**Types Of Virtualization in Cloud Computing.**
There are various types of virtualization in cloud computing and not limited to the types listed below.

**Data Virtualization**
Data virtualization provides a virtual layer on top of the data storage system to allow easy access to data storage from a central place without getting to replicate data across different storage systems, consolidates data from different sources to a single source. 

**Server Virtualization**
This is a kind of virtualization in which the physical server is divided into a different virtual server with defined configuration for each virtual server so, each server can run its own operating system in an isolation manner. 

**Network Virtualization**
This is a kind of virtualization in which the physical network is combined into virtual networks. Each virtual network is managed independently and co-exists on the top of the physical network. It also  presents logical networking devices and services, logical ports, switches, routers, firewalls, load balancers, VPNs, and more to connected workloads.

**Application Virtualization**
Software virtualization in cloud computing abstracts the application layer, separating it from the operating system. This way the application can run in an encapsulated form without being dependent upon the operating system underneath. In addition to providing a level of isolation, an application created for one OS can run on a completely different operating system.

**Why Virtualization**
1.	Server consolidation and hardware utilization.
2.	Reduces the need for power, space, and cooling in the data                   centre.
3.	Reduces the cost of resources.
4.	Increases and enhance the development and testing environment.
5.	Eliminate the risk of system failure.
6.	Better Access Control
7.	Data Protection
8.	Flexibility

**Scalability and Elasticity in Cloud Computing**
**Cloud Elasticity:** Elasticity refers to the ability of a cloud to automatically expand or compress the infrastructural resources on a sudden up and down in the requirement so that the workload can be managed efficiently. This elasticity helps to minimize infrastructural costs.

**Cloud Scalability**: Cloud scalability is used to handle the growing workload where good performance is also needed to work efficiently with software or applications. Scalability is commonly used where the persistent deployment of resources is required to handle the workload statically.It can also be  used to fulfill the static needs while elasticity is used to fulfill the dynamic need of the organization.

**Types of Scalability:**
1.Vertical Scalability (Scale-up) –
In this type of scalability, we increase the power of existing resources in the working environment in an upward direction.
2. Horizontal Scalability: In this kind of scaling, the resources are added in a horizontal row. Like adding more VMs.
3. Diagonal Scalability –
It is a mixture of both Horizontal and Vertical scalability where the resources are added both vertically and horizontally.

**Difference Between Cloud Elasticity and Scalability** 
1	Elasticity is used just to meet the sudden up and down in the workload for a small period of time, while scalability is used to meet the static increase in the workload.
2	Elasticity is used to meet dynamic changes, where the resources need can increase or decrease, while scalability is always used to address the increase in workload in an organization.
3	Elasticity is commonly used by small companies whose workload and demand increases only for a specific period of time, while scalability is used by giant companies whose customer circle persistently grows in order to do the operations efficiently.
4	It is a short term planning and adopted just to deal with an unexpected increase in demand or seasonal demands, while scalability is a long term planning and adopted just to deal with an expected increase in demand.

**What is Agility in Cloud Computing?**
Agility in cloud computing refers to developing, testing rapidly, and launching applications that bring business growth in a fast and rapid manner. It can also refer to the ability to deploy new compute resources, network, applications and services quickly. 

**High Availability**
What is high availability (HA)?
High availability (HA) is the ability of a system to operate continuously for a designated period of time even if components within the system fail. A highly available system meets an agreed-upon operational performance level by eliminating single points of failure. This is accomplished by including redundant components that serve as backups that can assume processing if failure should occur. 
HA systems are used in situations and industries where it is critical that the system remains operational. Real-world HA systems include those needed for military controls, autonomous vehicles, industrial operations, telecommunication networks and healthcare systems. People's lives might depend on these systems being available and always functioning.

**How does high availability work?**
It is impossible for systems to be available 100% of the time. Organizations that require the highest possible availability generally strive for five nines as the standard of operational performance. 
Regardless of their availability goals, IT teams generally adhere to the following principles when designing their HA systems:
•	Eliminate any single points of failure. 
•	Build in reliable fail over. .
•	Implement automatic failure detection. .
•	Ensure no data loss. 
•	Integrate load balancing system.

**Fault Tolerance**
Fault tolerance refers to the ability of the system to keep functioning in even if a software or hardware failure occurs or going through a down state. It is a critical aspect to improve the reliability of a system and keep it useful for the user under all circumstances. Cloud computing enables the system to have a good fault-tolerant environment by providing on-demand services and access to a pool of configurable resources that can be utilized easily with the least management effort.

**Reasons for fault occurrence**
•_System failure_: The hardware or the software of the system crashes, causing the process of the system to abort. Hardware failure can occur due to insufficient maintenance, and software failure can occur due to stack overflow resulting in the system crashing or hanging.
•_Security breach_: The servers of the system are hacked by an outsider party resulting in the data being exposed and server damage. There can be different types of malicious attacks, including viruses and ransomware.


**Global Reach**
Global Reach acts as a medium through which firms can expand beyond the region of their setup. The concept has meant that smaller firms are able to use the internet to reach markets that would only have been available to the larger firms before.