CSE423 Unit 1-3 Detailed Notes
CSE423 Unit 1-3 Detailed Notes
CLOUD COMPUTING
Unit 1: Virtualization Techniques & Overview of Distributed Computing
BY MADHUSUDAN KUMAR
Table of Contents
1. Virtualization Technology ......................................................................................... 3
1.1 Real Life Example ........................................................................................................................................3
1.2 Importance of Virtualization .......................................................................................................................3
1.3 Benefits of Virtualization.............................................................................................................................4
1.4 Working of Virtualization ............................................................................................................................4
1.5 Concept behind Virtualization ....................................................................................................................5
1.6 Virtualization Types based on resources and abstraction levels. ...............................................................5
Page 1 of 24
13.4 Real Life Application............................................................................................................................... 19
14. Similarities and Differences b/w Parallel & Distributed Computing ...................... 20
15. Differences & Similarities among different types of computing ........................... 20
16. Parallel Computer Architecture ............................................................................ 21
16.1 Types ...................................................................................................................................................... 21
16.1.1 Based on numbers of instructions and data streams. .................................................................... 21
16.1.2 Based on memory access pattern: .................................................................................................. 22
16.1.3 Based on shared memory multi computer: .................................................................................... 23
Page 2 of 24
1. Virtualization Technology
• Virtualization is a technology used in cloud computing.
• It enables the creation of virtualized versions of computing resources, such as servers, operating
systems, storage devices, and network infrastructure.
• Multiple virtualized resources can be created on a single physical resource, allowing for more efficient
use of hardware resources.
• Virtualization provides better flexibility and scalability for businesses and organizations.
• Virtual machines (VMs) can be easily created and moved between physical servers, providing greater
flexibility.
• VMs are isolated from each other, so problems with one application or operating system do not affect
the others.
• Improves flexibility and scalability by allowing virtual resources to be easily moved between physical
servers.
• Provides better isolation and security by keeping virtual resources separate from each other.
• Facilitates the creation of virtual networks and storage devices, providing more flexibility for cloud
computing deployments.
• Enables the creation of custom virtual environments with specific operating systems and software
stacks, making it easier to manage complex deployments.
• Reduces the costs of hardware, software, and maintenance by consolidating multiple resources onto
a single physical server.
Page 3 of 24
1.3 Benefits of Virtualization
• Efficient use of hardware resources: Virtualization enables multiple virtual resources to run on a single
physical resource, reducing the number of physical servers required and making better use of
hardware resources.
• Improved scalability and flexibility: Virtualization makes it easy to scale resources up or down based
on demand, providing greater flexibility to cloud computing deployments.
• Cost savings: Virtualization can reduce hardware, software, and maintenance costs by consolidating
multiple resources onto a single physical server and automating maintenance tasks.
• Increased security: Virtualization provides a layer of isolation between virtual resources, reducing the
risk of security breaches or data leaks.
• Customization: Virtualization enables the creation of custom virtual environments with specific
operating systems and software stacks, making it easier to manage complex deployments.
• Testing and development: Virtualization makes it easy to create and manage virtual test and
development environments, enabling developers to test software and applications in a sandboxed
environment.
• Disaster recovery: Virtualization makes it easy to replicate virtual resources across physical servers,
enabling rapid recovery in the event of a hardware failure or disaster.
• The virtualization layer, often referred to as a hypervisor, creates virtual machines (VMs) that can run
their own operating systems and software applications.
• Each VM is isolated from other VMs, providing a layer of security and ensuring that problems with one
VM do not affect the others.
• Virtualization enables resources such as servers, storage devices, and networks to be easily
provisioned and managed, providing greater flexibility and scalability.
• In cloud computing, virtualization enables the creation of cloud resources, such as virtual machines
and storage volumes, that can be easily scaled up or down based on demand.
• Virtualization enables the creation of custom virtual environments with specific operating systems and
software stacks, making it easier to manage complex deployments.
• Virtualization provides a layer of abstraction that simplifies management and administration of cloud
infrastructure, providing a unified view of the virtualized resources.
• Virtualization also enables disaster recovery by replicating virtual resources across physical servers,
enabling rapid recovery in the event of a hardware failure or disaster.
Page 4 of 24
1.5 Concept behind Virtualization
The concept behind virtualization is to abstract the underlying physical hardware and create a virtual layer that
enables the software to interact with a virtual machine rather than directly with the hardware. This virtual
layer, called a hypervisor, enables multiple virtual machines to share the same physical resources while
remaining isolated from one another.
1. Server virtualization: This involves creating multiple virtual servers on a single physical server. Each
virtual server acts as if it were a separate physical server with its own operating system, applications,
and resources. Examples of server virtualization technologies include VMware vSphere, Microsoft
Hyper-V, and Citrix XenServer.
2. Network virtualization: This involves creating virtual networks that are independent of the physical
network infrastructure. Virtual networks can be used to isolate different types of traffic, create
network segments for different departments, or provide virtual private networks (VPNs) for remote
access. Examples of network virtualization technologies include VMware NSX, Cisco ACI, and Juniper
Contrail.
3. Storage virtualization: This involves creating a virtual layer of abstraction between physical storage
devices and the applications that use them. This allows storage resources to be pooled and dynamically
allocated to different applications and users as needed. Examples of storage virtualization
technologies include VMware vSAN, Microsoft Storage Spaces, and EMC VPLEX.
Each of these types of virtualizations can be used together to create a complete cloud computing environment.
For example, a cloud provider might use server virtualization to create multiple virtual servers on a physical
server, network virtualization to isolate traffic between different customer networks, and storage
virtualization to provide flexible storage options for customers.
Page 5 of 24
2. Para-virtualization (application/embedded virtualization): In this type of virtualization, the guest
operating system is modified to be aware that it is running in a virtualized environment. This allows
multiple instances of an operating system to run on a single physical machine without the need for full
virtualization. Para-virtualization can offer better performance than full virtualization, but it requires
that the guest operating system be specifically modified to support para-virtualization. Examples of
para-virtualization hypervisors include Xen and Virtuozzo.
Both full virtualization and para-virtualization are commonly used in cloud computing to create virtual
machines that can be used to run applications and services in a flexible and scalable way.
The "cloud" in cloud computing refers to the use of remote servers that are accessed over the internet to
deliver these resources.
An example of cloud computing is a popular email service like Gmail. When you use Gmail, you are accessing
email servers that are located in a data center operated by Google. These servers are accessed over the
internet, and you don't need to worry about the hardware or software that runs on those servers - you simply
use the service provided by Google.
In this example, the "cloud" refers to the remote servers that are accessed over the internet to provide the
email service. The user does not need to worry about the hardware, software, or infrastructure required to
run the service, as it is all managed by the provider.
Virtualization refers to the process of creating virtual resources, such as virtual machines (VMs), that run on
top of physical hardware. Virtualization enables multiple virtual resources to run on a single physical resource,
making more efficient use of hardware resources. Virtualization can be used in a variety of environments,
including data centers, desktop computing, and mobile devices.
Cloud computing, on the other hand, is a technology that enables the delivery of computing resources over
the internet. Cloud computing uses a network of remote servers to provide resources such as servers, storage,
databases, software, and more. Cloud computing is typically delivered through a service model, such as
Infrastructure as a Service (IaaS), Platform as a Service (PaaS), or Software as a Service (SaaS).
So while virtualization is a technology used to create and manage virtual resources, cloud computing is a
service delivery model that provides access to computing resources over the internet. Virtualization is often
used in cloud computing environments to enable efficient use of hardware resources and to enable the
creation of virtual resources that can be easily provisioned and managed in a cloud environment.
Page 6 of 24
4. Hypervisor
A hypervisor is a software layer that creates and manages virtual
machines (VMs) in a virtualized environment. Also known as a virtual
machine monitor (VMM), a hypervisor provides a layer of abstraction
between the underlying physical hardware and the virtual machines
running on it.
Type 1 hypervisors run directly on the host's hardware, without any operating system or software layer
in between. They are designed to provide high performance and scalability for large-scale virtualization
deployments.
Examples of Type 1 hypervisors include VMware ESXi, Microsoft Hyper-V, and Citrix XenServer.
Type 2 hypervisors run on top of an existing operating system and are generally used for smaller-scale
virtualization deployments or for personal use. They are typically easier to install and configure than
Type 1 hypervisors.
Examples of Type 2 hypervisors include Oracle VirtualBox, VMware Workstation, and Parallels Desktop
for Mac.
Both types of hypervisors provide the same basic functionality of creating and managing virtual machines, but
they differ in their architecture, performance, and deployment scenarios.
Page 7 of 24
x86 virtualization can be used for a variety of purposes, including server consolidation, application isolation,
testing and development, and cloud computing. By enabling multiple VMs to run on a single physical machine,
x86 virtualization can improve resource utilization, reduce costs, and increase flexibility and scalability.
The x86 architecture is the dominant architecture used in personal computers and servers today, and x86
virtualization has become a standard feature of most modern CPUs. Popular x86 virtualization platforms
include VMware, Hyper-V, KVM, and VirtualBox.
Ring 0: Also known as the "kernel mode," this level has the highest privilege and can access all system
resources, including the CPU, memory, and I/O devices. The hypervisor runs in this ring, and it is responsible
for managing the virtual machines (VMs).
Ring 1: Also known as the "driver mode," this level has fewer privileges than Ring 0 but more than the
subsequent rings. It is used for device drivers and other low-level system processes.
Ring 2: Also known as the "server mode," this level has fewer privileges than Ring 1 and is used for system
services and other processes that need to be isolated from user-level processes.
Ring 3: Also known as the "user mode," this level has the lowest privilege and is used for user-level processes
such as applications. This is the ring where most user-level code runs.
In a virtualized environment, each VM is assigned its own virtual CPU and runs in Ring 0, while the hypervisor
itself runs in Ring -1, a privileged mode not accessible to any of the VMs. This separation ensures that the
hypervisor can maintain control over the system, while the VMs remain isolated from each other and the host
operating system.
• The hypervisor creates a layer of abstraction between the physical hardware and the virtual machines.
• The guest operating systems run on the virtual hardware provided by the hypervisor.
• The guest operating systems are not aware that they are running in a virtualized environment.
Page 8 of 24
Paravirtualization:
• The guest operating systems communicate directly with the hypervisor or VMM.
• The hypervisor provides a set of services that the guest operating systems can use to communicate
with the physical hardware.
• The guest operating systems require modification to run in a Para virtualized environment.
• Performance overhead is lower compared to x86 virtualization, especially for I/O-intensive workloads.
7. Hardware Virtualization
There are three hardware virtualization types, also known as virtualization modes or virtualization techniques:
1. Full virtualization:
2. Para-virtualization:
3. Hardware-assisted virtualization: Also known as Native or Bare-metal virtualization, this mode uses
hardware extensions to provide virtualization capabilities. Examples include Intel Virtualization
Technology (Intel VT) and AMD Virtualization (AMD-V).
Page 9 of 24
8. Concept of VLAN, SLAN, VSAN
VLAN, SLAN, and VSAN are all concepts related to virtualization and network segmentation.
1. VLAN (Virtual Local Area Network): A VLAN is a logical network that is created by dividing a physical
network into multiple virtual segments. Each VLAN has its own broadcast domain, which allows for
more efficient use of network bandwidth, increased security, and improved traffic management. For
example, in a large organization with multiple departments, a VLAN can be created for each
department to keep their traffic separate and secure from other departments.
a) Port-based VLAN: As the name suggests, port-based VLANs assign specific switch ports to
a VLAN. Any device connected to a port assigned to a specific VLAN can communicate with
other devices in the same VLAN, but not with devices in other VLANs. Port-based VLANs are
the most common type of VLAN and are useful for segmenting networks based on the
physical location of devices. For example, all devices on the first floor of an office building
could be assigned to VLAN 10, while all devices on the second floor could be assigned to
VLAN 20. This provides increased security by separating traffic between floors.
b) Protocol-based VLAN: Protocol-based VLANs separate network traffic based on the type
of protocol used, such as IP, TCP, UDP, or ICMP. This is useful in environments where certain
protocols need to be treated differently than others, such as in a VoIP network where voice
traffic needs to be prioritized over other types of traffic.
In a data center environment, traffic for database applications can be separated into a
separate VLAN from web traffic. This allows for easier management and prioritization of
database traffic.
c) MAC-based VLAN: MAC-based VLANs use the MAC address of a device to assign it to a
specific VLAN. This can be useful in environments where devices need to be moved between
different switch ports, as the device will always be assigned to the same VLAN based on its
MAC address.
In a hospital environment, all medical devices can be assigned to a specific VLAN based on
their MAC address. This allows for easy management of the devices, even if they are moved
to different locations within the hospital.
Page 10 of 24
Easy management of devices
Increased security by ensuring devices are always assigned to the correct VLAN
2. SLAN (Storage Local Area Network): A SLAN is a logical network that is created to provide a
dedicated storage network for virtual machines or servers. By separating storage traffic from other
network traffic, a SLAN can help to reduce latency and improve the performance and reliability of
storage operations. For example, in a virtualized environment with multiple virtual machines that
require high-performance storage access, a SLAN can be created to provide dedicated and optimized
storage connectivity.
LAN or Storage Local Area Network is important because it allows for a centralized and more
efficient storage infrastructure in virtualized environments. In a traditional storage setup,
each physical server has its own direct-attached storage (DAS) which results in wasted
storage resources and the potential for data loss in the event of a server failure. By using a
SLAN, multiple servers can share a common pool of storage, providing greater scalability and
reliability.
Improved Storage Utilization: With SLAN, the available storage capacity can be shared
across multiple servers, improving storage utilization and reducing the need for excess
storage capacity.
Enhanced Data Protection: With SLAN, data can be replicated across multiple storage
devices, providing redundancy and reducing the risk of data loss in the event of a server or
storage device failure.
Simplified Management: SLAN allows for centralized storage management, making it easier
for IT teams to monitor and manage the storage infrastructure.
3. VSAN (Virtual Storage Area Network): A VSAN is a logical network that is created to provide a
virtualized storage infrastructure for virtual machines or servers. A VSAN uses software-defined
storage technology to abstract and pool physical storage resources, which can then be allocated to
virtual machines or servers as needed. This allows for more flexible and scalable storage provisioning
and can help to reduce storage costs and improve efficiency. For example, in a virtualized
environment with multiple virtual machines that require high availability and scalability, a VSAN can
be created to provide a virtualized storage infrastructure that can be easily managed and scaled.
In summary, VLANs, SLANs, and VSANs are all concepts related to virtualized network and storage
segmentation. By using these techniques, organizations can improve network and storage performance,
security, and manageability in their virtualized environments.
Page 11 of 24
9. Parallel System
A parallel system is a type of computer system that uses multiple processors or cores to perform multiple
tasks or parts of a single task simultaneously. These processors work together to execute a program, splitting
up the workload into smaller parts that can be executed in parallel, resulting in faster and more efficient
computing. Parallel systems can be used in a variety of applications, including scientific simulations, data
analysis, and multimedia processing. They are particularly useful for tasks that require a large amount of
computational power, such as weather forecasting, genetic sequencing, and artificial intelligence.
9.1 Advantages
The benefits of parallel systems include:
2. Increased scalability: Parallel systems can be scaled up or down depending on the size and
complexity of the task, making them more flexible and adaptable than traditional single-processor
systems.
3. Enhanced reliability: Parallel systems can be designed with redundant components and failover
mechanisms to increase reliability and reduce the risk of system failure.
4. Reduced processing time: Parallel systems can perform complex calculations and data processing
much faster than traditional single-processor systems, enabling faster results and increased
productivity.
Overall, parallel systems are an important technology for enabling faster and more efficient computing, and
they have numerous applications in fields such as science, engineering, finance, and healthcare.
9.2 Disadvantages
The disadvantages of a parallel system include:
1. Complexity: Parallel systems are typically more complex to design and program than traditional
sequential systems, as they require specialized hardware and software to manage the parallel
execution of tasks.
2. Cost: Parallel systems can be expensive to build and maintain, as they require specialized hardware
components and high-speed interconnects to achieve high performance.
3. Scalability: The scalability of a parallel system is limited by factors such as interconnect bandwidth,
memory capacity, and synchronization overhead, and it can be challenging to scale the system
beyond a certain point.
Page 12 of 24
Despite these challenges, parallel systems are widely used in fields such as scientific computing, data
analytics, and machine learning, where high-performance computing is essential for achieving breakthroughs
and insights.
10.1 Advantages
The advantages of a distributed system include:
1. Scalability: A distributed system can be easily scaled by adding more nodes to the network, allowing
it to handle increasing amounts of data and users.
2. Improved performance: By distributing tasks across multiple nodes, a distributed system can process
data and perform computations much faster than a single computer.
3. Fault tolerance: If one node fails, other nodes can take over its tasks, reducing the risk of system
failure and ensuring that the system remains operational.
4. Flexibility: A distributed system can be customized to meet specific needs, and new applications can
be added to the network without affecting other parts of the system.
5. Cost efficiency: A distributed system can be more cost-effective than a centralized system, as it can
use commodity hardware and resources more efficiently.
Overall, a distributed system is a powerful tool for achieving high performance, fault tolerance, and
scalability, and it has numerous applications in fields such as cloud computing, big data processing, and
scientific research.
10.2 Disadvantages
The disadvantages of a distributed system include:
1. Complexity: A distributed system is inherently more complex than a single computer, as it requires
specialized software and hardware to manage the nodes and the network.
2. Security: A distributed system is more vulnerable to security threats, as there are more entry points
for attackers to exploit, and it can be challenging to maintain data confidentiality and integrity across
the network.
3. Latency: The communication latency between nodes in a distributed system can be higher than in a
single computer, which can impact performance and response times.
4. Data consistency: Ensuring data consistency across multiple nodes in a distributed system can be
challenging, as nodes may have different versions of the data, and it can be difficult to synchronize
updates across the network.
Page 13 of 24
5. Maintenance and management: Managing a distributed system requires specialized skills and
knowledge, and it can be challenging to monitor and maintain the health of the network, especially
as it grows in size.
Despite these challenges, the benefits of a distributed system often outweigh the drawbacks, and many
organizations continue to invest in this technology to achieve greater scalability, fault tolerance, and
performance.
A system that processes multiple tasks A system in which multiple computers work
at the same time, using multiple together to solve a single problem or perform a
Definition processors or cores. set of related tasks.
Fault tolerance can be more challenging Fault tolerance can be easier as a failure of one
as all processors or cores are part of the computer does not necessarily affect the entire
same system, and a failure can affect system, and redundancy can be achieved by
Fault Tolerance the entire system. distributing tasks across multiple computers.
Overall, parallel systems and distributed systems have different strengths and weaknesses, and their
suitability for a given task depends on factors such as the size of the problem, the amount of available
resources, and the desired level of fault tolerance and scalability.
Page 14 of 24
12. Parallel Computing
• Parallel computing is a type of computing where multiple processors or cores work together to
execute a task or solve a problem simultaneously.
• This allows for faster processing times, as different parts of a problem can be tackled at the same
time.
• Parallel computing can be used to solve complex problems that would be too difficult or time-
consuming to solve with a single processor or core.
• It requires specialized techniques for managing concurrency and synchronization, such as using locks
and barriers to ensure that different processors or cores work together effectively.
• Parallel computing is important in many fields, such as scientific computing, machine learning, and
big data analysis, where large amounts of data need to be processed quickly and efficiently.
Overall, parallel computing is a powerful technique that can help us solve complex problems more quickly
and efficiently than traditional computing methods.
• Example: If we need to add two 8-bit numbers, we can add each corresponding pair of bits
simultaneously using bit-level parallelism. For instance, we can add the two 8-bit numbers 01101110
and 10101010 by performing eight parallel additions: 0+1=1, 1+0=1, 1+1=0 with a carry of 1,
0+0+1=1, 1+1=0 with a carry of 1, 0+0+1=1, 1+0=1, and 0+0=0. The final result would be 10011000.
• Example: Suppose we have a program that involves adding two numbers, subtracting another
number, and then multiplying the result with a fourth number. With instruction-level parallelism, the
processor can start executing the addition and subtraction instructions at the same time, while
waiting for the results before executing the multiplication instruction.
• Example: Consider a rendering application that needs to render a 3D scene. Task parallelism can be
used to divide the scene into smaller parts and render each part on a separate processor or core.
This can significantly reduce the overall rendering time.
12.2 Advantages
1. Improved performance: Parallel computing allows multiple tasks to be executed simultaneously,
which can significantly improve the performance of applications.
2. Scalability: Parallel computing systems can be easily scaled up or down by adding or removing
computing resources, making it easier to handle larger workloads.
Page 15 of 24
4. Increased reliability: Parallel computing systems can be designed with redundancy and failover
mechanisms, which can improve the reliability and availability of applications.
5. Flexibility: Parallel computing systems can be tailored to meet specific needs, such as high
performance computing, data analytics, or machine learning, making them more flexible than
traditional computing systems.
6. Energy efficiency: Parallel computing can also be more energy-efficient than traditional computing,
as it can distribute workloads across multiple processors and reduce the amount of idle time.
7. Reduced time to solution: Parallel computing can help reduce the time it takes to solve complex
problems, making it useful in fields such as scientific computing, engineering, and finance.
Overall, parallel computing can help organizations and individuals achieve higher performance, scalability,
and flexibility while reducing costs and energy consumption.
12.3 Disadvantages
1. Complexity: Parallel computing requires special software and hardware that can handle multiple
processors working together, making it more complex than traditional computing.
2. Cost: The cost of parallel computing systems can be very high, especially for large-scale systems,
which may require specialized hardware and software.
3. Scalability: Scaling up parallel computing systems can be challenging, and sometimes it may not be
possible to add more processors or nodes to a cluster without sacrificing performance or reliability.
5. Programming: Parallel programming can be difficult and requires specialized skills, making it harder
to find developers with the necessary expertise.
6. Overhead: Parallel computing systems often have additional overhead, such as communication and
synchronization, which can reduce performance and increase complexity.
12.4 Limitations
1. Limited Parallelism: Some applications may not be easily parallelizable, or the degree of parallelism
may be limited, which can limit the performance gains from parallel computing.
3. Load Imbalance: Uneven distribution of workload among processors can lead to load imbalance and
reduced efficiency.
4. Fault Tolerance: Fault tolerance is more difficult in parallel computing systems due to the increased
complexity and interdependence of components.
5. Scalability: The scalability of parallel computing systems can be limited by factors such as memory
bandwidth, interconnect performance, and software overhead.
6. Power and Energy: Parallel computing systems can consume significant amounts of power and
energy, which can lead to higher operating costs and environmental concerns.
Page 16 of 24
7. Limited Software Support: Many software applications are not designed to run in parallel, which can
limit the usability of parallel computing systems.
1. Scientific Computing: Parallel computing is widely used in scientific applications, such as weather
forecasting, climate modeling, and computational fluid dynamics, where complex simulations require
high-performance computing capabilities.
2. Machine Learning and Artificial Intelligence: Parallel computing is used to train machine learning
models and neural networks, which require significant computational resources and large amounts
of data processing.
3. Financial Modeling: Parallel computing is used in financial modeling to analyze large amounts of data
and make predictions on market trends.
4. Multimedia Processing: Parallel computing is used in multimedia processing, such as video and
image processing, where large amounts of data need to be processed in real-time.
5. Bioinformatics: Parallel computing is used in bioinformatics to analyze large amounts of genomic and
proteomic data to identify genetic mutations, predict protein structures, and discover new drugs.
6. Gaming and Virtual Reality: Parallel computing is used in gaming and virtual reality applications,
where real-time rendering and processing of complex 3D environments require high-performance
computing capabilities.
Overall, parallel computing enables faster processing and analysis of large amounts of data, which can help
businesses and organizations make better decisions and improve their operations.
A simple example of distributed computing is a web search engine that processes millions of queries per
second from users all over the world. When a user types a query into the search box, the search engine
distributes the query to multiple servers that work in parallel to provide the search results quickly. Another
example is a weather forecasting system that uses data from multiple sources and runs complex simulations
on distributed computing systems to provide accurate weather forecasts.
Distributed computing has become an essential part of many industries, including finance, healthcare,
telecommunications, and manufacturing. It is used for a wide range of applications, such as data analysis,
scientific simulations, and machine learning. The benefits of distributed computing include faster
processing times, improved scalability, and increased reliability.
Page 17 of 24
13.1 Characteristics
The characteristics of distributed computing are:
1. Concurrency: Multiple tasks can be performed concurrently across various distributed resources.
2. Scalability: Distributed computing provides the ability to scale up or down based on the demand of
the system.
3. Fault Tolerance: Distributed computing systems can survive component failures because the
computation and data are distributed across various nodes.
4. Heterogeneity: Distributed systems can be composed of different hardware and software platforms,
allowing for flexibility in system design.
5. Transparency: The distributed computing system hides the complexity of the underlying
infrastructure from the users and provides them with a unified view of the system.
6. Security: Security is a critical aspect of distributed computing systems, as data is distributed across
different nodes.
7. Interoperability: Distributed computing systems enable different systems to work together and
exchange data seamlessly.
These characteristics make distributed computing systems highly adaptable, resilient, and flexible.
13.2 Advantages
1. Scalability: Distributed computing allows adding or removing computing resources as per the
requirement of the system, providing scalability to the system.
2. Fault Tolerance: Distributed computing systems can have redundant components, which can be used
as a backup in case any component fails, providing high fault tolerance.
3. Cost-Effective: Distributed computing systems can be built using low-cost hardware and software
components that are readily available, making it a cost-effective solution.
4. Flexibility: Distributed computing systems can be designed to perform a variety of tasks, making it a
flexible solution for many different types of applications.
7. Security: Distributed computing systems can provide higher levels of security, as data can be
distributed across multiple machines, reducing the risk of data loss or theft.
8. Energy Efficiency: By distributing the workload across multiple computers, distributed computing
systems can reduce energy consumption compared to a single computer doing the same task.
Overall, distributed computing offers a number of advantages over traditional computing systems, providing
a more scalable, fault-tolerant, and cost-effective solution for many different types of applications.
Page 18 of 24
13.3 Disadvantages
1. Complexity: Distributed computing systems are inherently more complex than centralized systems,
requiring additional hardware, software, and network infrastructure.
2. Security: Distributed systems are more difficult to secure, as they involve multiple nodes and data
transfers between them.
3. Scalability: Although distributed systems can scale horizontally by adding more nodes, they can also
become difficult to manage as the number of nodes grows.
4. Fault tolerance: Distributed systems may face more challenges in terms of fault tolerance, as failures
can occur in individual nodes or in the network connections between them.
6. Consistency: Maintaining consistency of data and operations across multiple nodes can be
challenging, particularly in the face of network failures or other disruptions.
It's worth noting that many of these disadvantages can be mitigated with careful design, implementation,
and management of distributed computing systems.
1. Internet of Things (IoT): In IoT, various devices are connected to each other and share data for
seamless communication. Distributed computing is used to handle the massive amount of data
generated by these devices.
2. Social Networks: Social networks like Facebook, Twitter, Instagram, etc., use distributed computing
to store, manage and analyze the large amounts of data generated by their users.
3. Online Marketplaces: E-commerce platforms like Amazon, Alibaba, etc., use distributed computing
to handle the high volume of requests generated by their customers and manage the inventory and
supply chain efficiently.
4. Cloud Computing: Cloud computing platforms like AWS, Microsoft Azure, etc., use distributed
computing to provide on-demand computing resources to their customers.
5. Scientific Computing: Distributed computing is widely used in scientific research and simulations that
require massive computing power, such as climate modeling, drug discovery, etc.
6. Financial Services: Distributed computing is used in the financial industry to process transactions in
real-time, detect fraud, and perform risk analysis.
Page 19 of 24
14. Similarities and Differences b/w Parallel & Distributed Computing
Here is a table outlining the similarities and differences between parallel computing and distributed
computing:
Low latency due to shared memory and Higher latency due to message passing over
Latency high-speed communication channels. a network.
Limited scalability due to shared memory Highly scalable due to the ability to add
Scalability constraints. more nodes to the network.
Low fault tolerance due to the dependence High fault tolerance due to the distribution
Fault tolerance on shared memory. of computing across multiple nodes.
It's important to note that there is some overlap between these two types of computing, and some
applications may benefit from a hybrid approach that combines the strengths of both.
• Breaks down larger data into smaller chunks to process them simultaneously.
• Used in arithmetic and logic operations like addition, subtraction, multiplication, and division.
Instruction-level parallelism:
Task parallelism:
• Used in algorithms that require parallel processing, like sorting and searching.
Page 20 of 24
Parallel computing:
• Breaks down a larger task into smaller sub-tasks and processes them simultaneously on multiple
processors or computers.
Distributed computing:
• They all involve the use of multiple computing resources to perform tasks.
• They all require coordination and communication between the individual processing units.
• They all have the potential to increase the speed and efficiency of computing tasks.
In this architecture, multiple processors are connected to a common memory system through an
interconnection network. Each processor has its own cache memory, but they all share the main memory.
The interconnection network provides the communication channel for the processors to exchange data and
synchronize their actions. The input/output system connects the computer to the outside world.
16.1 Types
16.1.1 Based on numbers of instructions and data streams.
1. SISD (Single Instruction, Single Data): In this type, a single processor executes a single instruction on
a single piece of data at a time. It is the classical Von Neumann architecture and does not exploit
parallelism.
2. SIMD (Single Instruction, Multiple Data): In this type, a single instruction is broadcasted to multiple
processing elements, which simultaneously operate on different pieces of data. It is commonly used
in multimedia and scientific applications.
Page 21 of 24
SIMD architecture is used in parallel
processing for large-scale mathematical
calculations such as image processing,
video encoding, and scientific simulations.
It is also used in gaming graphics and
multimedia processing. Examples of
systems using SIMD architecture include NVIDIA GPUs, Intel Xeon Phi, and SIMD-enabled processors.
3. MISD (Multiple Instruction, Single Data): In this type, multiple processors execute different
instructions on the same data stream. It is not commonly used in practical applications.
4. MIMD (Multiple Instruction, Multiple Data): In this type, multiple processors execute multiple
instructions on multiple data streams simultaneously. It is the most common type of parallel
computer architecture and is used in many practical applications.
1. Shared-memory architectures have a single address space that all processors can access, allowing for easy
communication and sharing of data.
2. Distributed-memory architectures have multiple memory spaces, with processors communicating through
message-passing interfaces.
Page 22 of 24
16.1.3 Based on shared memory multi computer:
1. Uniform Memory Access (UMA): is a type of parallel computer architecture model that features shared
memory access among processors
• UMA is commonly used in server systems and supercomputers that require high processing power
and efficient data sharing among processors.
• Examples of systems that use UMA include IBM Power Systems and Hewlett-Packard NonStop
servers.
• One of the main advantages of UMA is its simplicity, which makes it easy to implement and maintain.
• However, UMA can suffer from scalability issues as the shared memory bus can become a bottleneck
when adding more processors, leading to degraded performance.
2. Non-uniform Memory Access (NUMA): is a type of shared memory architecture in parallel computing
where the memory access time is not uniform for all processors
• NUMA can improve the performance of applications that have high memory access requirements.
• Examples of use cases for NUMA include large-scale scientific simulations, databases, and web
servers.
Page 23 of 24
3. Cache Only Memory Architecture (COMA): is a type of parallel computer architecture that uses a
distributed memory system.
• The nodes can access data from their own cache or from the cache of other nodes in the network,
depending on where the data is located.
• COMA is useful for large-scale parallel systems where it is not feasible to have a centralized memory
due to the sheer number of processing nodes involved.
• It is also useful for applications where data access is highly irregular and unpredictable, as it allows
for efficient data access without the need for a centralized memory.
• One example of a use case for COMA is in scientific simulations where large amounts of data need to
be processed in parallel. COMA can help in reducing the data transfer time between nodes and
improve overall performance.
Page 24 of 24
CSE423: VIRTUALIZATION &
CLOUD COMPUTING
Unit 2: Introduction to Cloud Computing & Migrating into a Cloud
BY MADHUSUDAN KUMAR
Table of Contents
1. Cloud Computing in a Nutshell ................................................................................. 1
2. Roots of cloud computing ........................................................................................ 2
3. Layers & Types of Cloud ........................................................................................... 3
3.1 Layers or service models: ............................................................................................................................3
3.2 Deployment model types ............................................................................................................................6
2. Cloud computing providers offer different service models: Infrastructure as a Service (IaaS), Platform
as a Service (PaaS), and Software as a Service (SaaS).
3. IaaS provides users with virtualized computing resources, such as virtual machines, storage, and
networking, while PaaS provides a platform for developers to build, deploy, and manage their
applications. SaaS offers ready-to-use applications to users, such as email, customer relationship
management, and productivity tools.
4. Cloud computing providers also offer deployment models: public cloud, private cloud, hybrid cloud,
and multi-cloud.
Page 1 of 18
5. A public cloud is operated by a third-party provider and can be accessed by anyone over the internet.
A private cloud is operated by an organization for its own use, usually behind a firewall. A hybrid
cloud is a combination of public and private clouds, while a multi-cloud is a combination of two or
more clouds.
6. One example of cloud computing is Dropbox, a cloud-based file storage and sharing service. Dropbox
allows users to store and share files over the internet, and it provides mobile and desktop
applications for easy access.
7. Another example is Microsoft Office 365, a SaaS offering that provides users with access to Microsoft
Office applications and other productivity tools, such as email, calendaring, and collaboration, over
the internet.
8. The benefits of cloud computing include scalability, cost-effectiveness, flexibility, and accessibility.
Users can easily scale up or down their computing resources, pay only for what they use, and access
their applications and data from anywhere with an internet connection.
9. However, cloud computing also has some challenges, such as security, privacy, and vendor lock-in,
that need to be carefully addressed.
Page 2 of 18
REST. Web services facilitate the exchange of data between applications in a platform-independent
manner, making it easier to integrate different systems and enhance their functionality.
• Service-oriented architecture (SOA) is an architectural style that provides a way for services to
communicate with each other in a loosely-coupled way over a network. It is based on the concept of
services, which are self-contained, modular components that can be used by other applications or
services to achieve a specific business goal. SOA provides a standardized way for services to be
described, discovered, and used, which makes it easier to develop and integrate different
applications and systems.
• Web 2.0 refers to the second generation of the World Wide Web, which emphasizes user-generated
content, collaboration, and dynamic interactions between users and sites. It is characterized by a
shift from static HTML pages to more interactive and dynamic web applications, often powered by
technologies such as AJAX, RSS, and social media platforms. Web 2.0 encourages user participation
and social interaction, allowing for more personalized and engaging online experiences.
• Grid computing is a distributed computing model that enables the sharing of computing resources
across a network of geographically dispersed computers. In this model, a large number of computing
resources are interconnected to work together in a coordinated manner to solve complex problems
or execute large-scale computational tasks. Grid computing allows organizations and individuals to
share and utilize computing resources such as processing power, storage capacity, and data sources,
making it possible to achieve higher levels of performance and scalability than would be possible
with a single computer or a local network. Grid computing is typically used for scientific research,
engineering, and other computationally intensive applications that require large amounts of data
processing or analysis.
• Utility computing is a type of cloud computing service in which computing resources, such as
processing power, storage, and bandwidth, are offered to users on a pay-per-use basis, similar to the
way traditional utilities such as water and electricity are metered and billed. This allows businesses
and individuals to access computing resources without the need for significant upfront investment in
hardware or infrastructure. Utility computing is often used to support large-scale or variable
workloads, such as those associated with data analytics or scientific research.
• Autonomic computing refers to a computing system that can manage itself, adapt to changing
conditions, and optimize its performance without human intervention. It is inspired by the
autonomic nervous system of the human body, which regulates and controls the body's vital
functions without conscious effort. The goal of autonomic computing is to create systems that can
operate and maintain themselves, reducing the burden of human management and improving
efficiency and reliability. Autonomic computing involves the use of advanced technologies such as
machine learning, artificial intelligence, and complex algorithms to automate system management
and optimization.
• Data center automation refers to the use of software tools and technologies to streamline and
automate the management and operation of data centers. This includes automating tasks such as
server provisioning, configuration management, performance monitoring, and resource allocation.
The goal of data center automation is to improve efficiency, reduce downtime, and increase
scalability by removing manual processes and minimizing human error. It can also enable self-healing
systems and dynamic resource allocation to optimize workload management.
Page 3 of 18
1. Infrastructure as a Service (IaaS): IaaS is the lowest layer of the cloud computing stack that provides
virtualized computing resources over the internet. It includes virtual servers, storage, and networking
components, allowing users to create and manage their own IT infrastructure in the cloud.
• Use case example: A company can use IaaS to host their applications and store their data on
a cloud provider's infrastructure instead of purchasing and maintaining their own hardware.
• Advantages: Allows for flexible scaling, cost savings, and reduced maintenance.
• Disadvantages: Requires technical knowledge to manage the virtualized resources and can
be less reliable than on-premises hardware.
2. Platform as a Service (PaaS): PaaS is a layer above IaaS that provides a complete platform for
developing, deploying, and managing applications in the cloud. It includes an operating system,
programming language runtime, database, and web server, among other tools and services.
Page 4 of 18
• Use case example: A company can use PaaS to develop and deploy a web application
without having to manage the server infrastructure, databases, or other resources.
• Advantages: Reduces the time and cost of application development and allows for easy
scalability and maintenance.
• Disadvantages: Can be less customizable and flexible than an on-premises solution and may
require specific skills to use effectively.
3. Software as a Service (SaaS): SaaS is the highest layer of the cloud computing stack, providing
complete software applications over the internet. This includes software applications such as email,
office productivity, customer relationship management (CRM), and many others, all of which are
hosted and managed by a cloud provider.
• Use case example: A company can use SaaS to access productivity tools like email, document
management, and project management without having to install and maintain software on
their own computers.
• Advantages: Allows for easy access to software without needing to install or manage it, and
often includes automatic updates and support.
• Disadvantages: Can be less customizable than on-premises software and may have limited
integration options.
The three different service models taken together and known as SPI model of cloud computing.
Page 5 of 18
3.2 Deployment model types
There are four deployment models of cloud computing: public, private, hybrid, and community.
1. Public Cloud: In a public cloud, the cloud infrastructure is owned and managed by a third-party cloud
service provider, and the resources are made available to the general public over the internet. Users
can access and use the resources on a pay-per-use basis.
Examples of public cloud providers include Amazon Web Services (AWS), Microsoft Azure, and
Google Cloud Platform.
Advantages:
• Cost-effective
• Scalable
Disadvantages:
2. Private Cloud: In a private cloud, the cloud infrastructure is owned and managed by a single
organization, and the resources are used exclusively by that organization. The infrastructure can be
hosted on-premises or in a third-party data center.
Advantages:
Disadvantages:
• Limited scalability
3. Hybrid Cloud: In a hybrid cloud, the cloud infrastructure is a combination of public and private
clouds, which are connected by technology that allows data and applications to be shared between
Page 6 of 18
them. An organization may use a public cloud for non-sensitive workloads and a private cloud for
sensitive workloads.
Examples of hybrid cloud providers include IBM, Microsoft, and Amazon Web Services.
Advantages:
• Cost-effective
Disadvantages:
Example: MeghRaj cloud initiative launched by the Indian government's National Informatics Centre
(NIC). The MeghRaj cloud provides a range of cloud services to various government agencies,
including infrastructure as a service (IaaS), platform as a service (PaaS), and software as a service
(SaaS). It is designed to provide secure and cost-effective cloud services to government departments
and agencies, and to promote collaboration and sharing of resources among government
organizations. The MeghRaj cloud is hosted in India and is available to government organizations
across the country.
Advantages:
• Cost-effective
Disadvantages:
• Limited scalability
Page 7 of 18
4. Desired Features of Cloud
1. Self-service: This feature allows users to provision and manage resources on their own, without
requiring the assistance of a cloud service provider.
Example: Amazon Web Services (AWS) provides a self-service portal that enables customers to
quickly launch and configure virtual servers, storage, and other resources as per their requirement.
2. Per-usage metered and billing: This feature enables cloud service providers to charge customers
based on their usage of resources, which can help in reducing the costs for the customer.
Example: Microsoft Azure charges customers for their usage of virtual machines, storage,
networking, and other services on an hourly basis.
3. Elastic: This feature allows the cloud infrastructure to automatically scale resources up or down
based on the demand.
Example: if an e-commerce website experiences a surge in traffic during a sale, the cloud
infrastructure should be able to automatically scale up the required resources to handle the
increased load.
4. Customizable: This feature enables customers to customize the cloud infrastructure as per their
specific requirements.
Example: OpenStack is an open-source cloud platform that allows customers to customize and
configure the infrastructure to meet their specific needs.
These features of cloud computing provide various advantages such as flexibility, scalability, reduced costs,
improved performance, and increased productivity. However, they also come with certain disadvantages
such as security and privacy concerns, vendor lock-in, and potential loss of control over data and
applications.
It includes activities such as provisioning, monitoring, scaling, and optimizing the infrastructure to ensure
that it meets the performance, availability, and security requirements of the applications and services
running on it.
Tools & Technology: Cloud infrastructure management involves the use of various tools and technologies,
including automation and orchestration platforms, virtualization software, containerization tools, and
monitoring and analytics solutions. It also requires expertise in areas such as networking, security, and data
management.
Need: Effective cloud infrastructure management is critical to ensuring the success of cloud-based
applications and services. It helps organizations optimize their use of cloud resources, reduce costs, and
improve overall performance and availability. It also enables them to respond quickly to changing business
needs and to scale their infrastructure up or down as required.
Virtual Infrastructure Management (VIM) is a set of software tools and technologies used to manage
virtualized infrastructure in a cloud computing environment.
Page 8 of 18
Features:
1. Virtual machine management: VIM provides tools to create, deploy, manage, and monitor virtual
machines. It allows administrators to manage virtual machines from a centralized location, enabling
easy provisioning and resource allocation.
2. Resource management: VIM enables administrators to manage physical resources such as CPU,
memory, and storage. It also allows for resource pooling, which allows for efficient utilization of
resources and better cost management.
3. Security management: VIM provides security features such as firewalls, virtual private networks, and
intrusion detection systems to ensure the security of virtualized infrastructure.
4. Performance monitoring: VIM provides tools to monitor the performance of virtual machines and
the underlying infrastructure. This helps administrators identify and resolve performance
bottlenecks.
5. Disaster recovery: VIM enables administrators to create and manage disaster recovery plans for
virtual machines and infrastructure. This helps ensure business continuity in case of a disaster.
6. Automation and orchestration: VIM provides automation and orchestration tools to automate
routine tasks and manage complex workflows. This helps improve efficiency and reduce errors.
7. Scalability: VIM enables administrators to scale virtual infrastructure up or down depending on the
demand. This helps ensure that the infrastructure can handle changing workloads.
Use case: An example of VIM is VMware vSphere, which is a popular virtual infrastructure management
platform. It provides a wide range of features for managing virtual infrastructure, including virtual machine
management, resource management, security management, performance monitoring, and automation and
orchestration. With vSphere, administrators can easily manage virtual machines and resources, monitor
performance, and automate routine tasks. This helps improve efficiency and reduce the risk of errors.
1. On-demand self-service: Users can provision computing resources, such as servers, storage, and
network bandwidth, without requiring any human interaction with the service provider.
2. Broad network access: Cloud services can be accessed over the Internet or other network
connections from any location and using any device.
3. Resource pooling: Cloud providers use shared computing resources to serve multiple customers,
allowing them to benefit from economies of scale.
4. Rapid elasticity: Cloud services can quickly scale up or down in response to changes in demand,
allowing customers to pay only for the resources they use.
5. Measured service: Cloud providers use metering systems to track the usage of computing resources
and bill customers accordingly.
6. Ubiquitous access: Cloud services can be accessed from anywhere in the world, as long as there is an
Internet connection.
Page 9 of 18
7. Multi-tenancy: Cloud providers serve multiple customers on a shared infrastructure, enabling them
to achieve high levels of efficiency and utilization.
By examining these characteristics, businesses can determine whether cloud computing is suitable for their
needs and how they can best leverage the benefits of cloud computing.
Example: let's consider a small retail business that is currently using a traditional on-premises IT
infrastructure to run its operations. This business is experiencing issues with scalability and security due to
the limitations of their current IT infrastructure. The business owner decides to migrate their operations to a
cloud-based infrastructure.
During the migration process, the business will need to identify which applications and data need to be
moved to the cloud and which ones can remain on-premises. They will also need to choose a suitable cloud
service provider and determine the best deployment model (public, private, hybrid) for their business needs.
Once the migration is complete, the business can benefit from improved scalability, as they can easily scale
up or down their infrastructure as needed. They can also benefit from enhanced security, as most cloud
service providers offer robust security features to protect against cyber threats. Additionally, the business
can realize cost savings by eliminating the need to maintain and upgrade their own hardware and software
infrastructure.
1. Assess current IT infrastructure and applications: This step involves taking stock of the current IT
infrastructure and applications to identify which applications can be moved to the cloud and which
ones cannot be.
2. Determine the type of cloud service required: This step involves deciding which type of cloud
service is required - Infrastructure as a Service (IaaS), Platform as a Service (PaaS), or Software as a
Service (SaaS) - based on the applications that need to be migrated.
3. Choose the cloud provider: This step involves selecting a cloud provider that meets the
organization's requirements for security, availability, scalability, and cost.
4. Plan the migration: This step involves creating a detailed migration plan that includes timelines,
costs, resources, and risks.
5. Migrate data and applications: This step involves moving data and applications to the cloud, which
may include re-architecting applications or refactoring code to ensure compatibility with the cloud
environment.
Page 10 of 18
6. Test and validate: This step involves testing and validating the migrated applications and data to
ensure that they are functioning as expected.
7. Optimize and manage: This step involves optimizing and managing the cloud environment to ensure
that it continues to meet the organization's needs for security, availability, scalability, and cost.
The general approach to migrating into the cloud requires careful planning and execution to ensure a
successful transition. By following this approach, organizations can realize the benefits of cloud computing,
such as improved flexibility, scalability, and cost efficiency.
When a client migrates to the cloud, several issues can arise. These issues can be broadly categorized into
four categories: security, vendor management, technical integration, and business view. Here's a brief
explanation of each category:
1. Security: Migrating to the cloud may raise concerns about the security of the client's data. The cloud
provider must assure the client that their data is secure and protected against unauthorized access
or data breaches.
• Ensuring data protection and compliance with regulations when transferring data to the
cloud.
• Implementing appropriate access controls and encryption methods to safeguard data from
unauthorized access.
• Establishing clear security policies and procedures that align with industry best practices.
2. Vendor management: As the client is relying on the cloud provider to manage their IT infrastructure,
there needs to be a clear understanding of the roles and responsibilities of each party. The client
must establish a good relationship with the cloud provider to ensure smooth migration and ongoing
management.
3. Technical integration: The client's existing infrastructure must be integrated with the cloud
environment. This requires a thorough understanding of the client's technical requirements and how
they can be met in the cloud. This also involves data migration, which can be a complex and time-
consuming process.
• Ensuring compatibility between existing systems and applications and the cloud platform.
• Developing a migration plan that takes into account dependencies between systems and
applications.
• Testing the migrated applications to ensure they function properly in the cloud environment.
4. Business view: The client needs to have a clear understanding of how the migration will impact their
business, including costs, resources, and performance. The client must evaluate the return on
investment (ROI) of the migration and assess the risks associated with the migration.
Page 11 of 18
Addressing these issues requires careful planning, evaluation, and communication between the client and
the cloud provider. A comprehensive migration strategy can help to ensure a successful transition to the
cloud.
1. Conduct cloud migration assessments: The first step is to conduct a thorough assessment of the
current IT infrastructure, applications, and workloads that need to be migrated.
For example, a company might have a legacy application that is currently running on an on-premise
server, and they want to move it to the cloud.
2. Isolate the dependencies: Once the assessment is complete, the next step is to isolate the
dependencies of the application or workload. This means identifying the software, hardware, and
network components that the application relies on to function properly.
For example, the legacy application might depend on a specific version of a database software.
3. Map the messaging & environment: In this step, the messaging and environment of the application
or workload are mapped to the cloud infrastructure. This involves identifying the cloud services and
components that will be used to replicate the existing environment.
For example, the company might choose to use a managed database service on the cloud platform to
replicate the database environment.
4. Re-architect & implement the lost functionalities: In this step, any lost functionalities or features are
re-architected and implemented in the new cloud environment.
For example, if the legacy application depended on a specific hardware component that is not
available on the cloud platform, the application might need to be re-architected to work with a
different hardware component.
5. Leverage cloud functionalities & features: Once the application or workload has been migrated to
the cloud, it's time to leverage the cloud functionalities and features. This could include using
Page 12 of 18
services like auto-scaling, load balancing, and managed databases to optimize the application's
performance and reduce maintenance costs.
6. Test the migration: Before deploying the application to production, it's important to thoroughly test
the migration in a non-production environment. This involves running functional and load tests to
ensure that the application is functioning properly in the new cloud environment.
7. Iterate and optimize: After the application is deployed to production, it's important to continue
iterating and optimizing the cloud environment. This could involve monitoring performance metrics,
identifying areas for improvement, and implementing changes to optimize the application's
performance and reduce costs.
Overall, the 7-step cloud migration model provides a structured approach for migrating applications and
workloads to the cloud, while minimizing risks and ensuring a successful migration.
Cloud middleware is software that helps to connect different cloud applications and services, allowing them
to communicate and work together seamlessly. It provides a layer of abstraction between the cloud
applications and services, enabling them to exchange data and interact with each other without the need for
complex integrations.
The concept of cloud middleware emerged with the advent of cloud computing, as businesses began to
adopt cloud-based solutions to meet their IT needs. As more and more applications and services moved to
Page 13 of 18
the cloud, the need for middleware solutions that could integrate these different services and provide a
common interface became increasingly important.
Cloud middleware typically consists of several components, including middleware management console,
platform interface, and common messaging framework.
1. Middleware Management Console: This component is responsible for managing the middleware
infrastructure, such as configuring and deploying middleware components, monitoring performance,
and maintaining security. It provides a central interface for administrators to manage middleware
components and ensure that they are functioning properly.
2. Platform Interface: The platform interface component provides an interface for applications and
services to interact with the middleware layer. It abstracts away the underlying infrastructure and
provides a consistent interface for different applications and services to connect and interact with
each other.
4. Data Integration Framework: This component provides a way to integrate data from different
sources, such as databases and web services, into a common data format that can be used by
different applications and services.
5. Security Framework: This component provides security features, such as authentication and
authorization, to ensure that only authorized users and applications can access the middleware
infrastructure.
6. Service Registry and Discovery: This component provides a registry for different services and their
interfaces, as well as a discovery mechanism for applications and services to find and connect to
different services.
10.1 Need
The purpose of cloud middleware is to enable seamless communication and integration between different
cloud applications and services. Cloud middleware provides a layer of abstraction between the applications
and services, allowing them to interact with each other without having to know the details of each other's
implementation.
The primary goal of cloud middleware is to improve the interoperability of cloud-based applications and
services, by providing a common interface that can connect and integrate them. This helps to reduce data
silos, duplication, and inefficiencies that can arise when cloud applications and services are developed
independently, using different programming languages, data formats, and APIs.
1. Standardization: Cloud middleware enables standardization of data formats, APIs, and protocols,
which helps to ensure compatibility and interoperability between different cloud applications and
services.
Page 14 of 18
2. Scalability: Cloud middleware can help to handle increasing volumes of data and traffic as the
organization's needs grow.
3. Security: Cloud middleware can be designed to protect data and applications from potential security
threats, such as data breaches and cyber-attacks.
4. Monitoring and management: Cloud middleware can provide tools and dashboards that allow IT
administrators to monitor and manage the performance and availability of the middleware
components.
5. Flexibility: Cloud middleware can be flexible enough to adapt to changing business needs and
requirements.
1. Choose the right middleware architecture: Choose the middleware architecture that best suits your
organization's needs and requirements, whether it's client-server, service-oriented, or event-driven
architecture.
2. Standardize data formats and APIs: Standardize data formats and APIs to ensure compatibility and
interoperability between different cloud applications and services.
4. Optimize performance and scalability: Optimize middleware performance and scalability by using
caching, load balancing, and other techniques.
5. Ensure security: Ensure that the middleware components are secure and protect against potential
security threats, such as data breaches and cyber attacks.
6. Implement monitoring and management: Implement monitoring and management tools to monitor
the performance and availability of the middleware components.
7. Provide documentation and training: Provide clear documentation and training for developers and
IT staff to ensure that they can use and maintain the middleware components effectively.
8. Test and validate: Test and validate the middleware components thoroughly before deploying them
to production environments to ensure that they work as expected.
9. Plan for future growth: Plan for future growth by designing the middleware architecture to be
flexible and scalable enough to handle increasing volumes of data and traffic.
In summary, the best practices for cloud middleware include choosing the right architecture, standardizing
data formats and APIs, using open-source components, optimizing performance and scalability, ensuring
security, implementing monitoring and management, providing documentation and training, testing and
validating, and planning for future growth.
Page 15 of 18
1. Network Latency: Network latency refers to the delay that occurs when data is transmitted between
the cloud provider and the user. High network latency can cause delays in the delivery of cloud
services, which can negatively affect the user experience.
2. Bandwidth Limitations: Bandwidth limitations refer to the amount of data that can be transmitted
between the cloud provider and the user at any given time. If the bandwidth is limited, it can lead to
slow service delivery, which can impact the user experience.
3. Service Availability: Service availability refers to the ability of cloud services to remain operational
and accessible to users. Downtime or service interruptions can negatively impact the user
experience, especially for mission-critical applications.
4. Scalability: Scalability refers to the ability of cloud services to handle increasing demand without
impacting performance. Inadequate scalability can result in performance degradation and service
disruptions during periods of high demand.
5. Security: Security refers to the measures taken by cloud providers to protect the data and
applications hosted on their platforms. Inadequate security can result in data breaches, data loss,
and other security incidents, which can negatively impact the user experience.
6. Compliance: Compliance refers to the adherence to regulatory and industry standards. Cloud
providers must comply with various regulations and standards, and failure to do so can result in legal
and financial penalties.
7. Cost: Cost refers to the financial aspect of cloud computing. Cloud services must be cost-effective,
and users should have a clear understanding of the costs involved in using the services.
QoS issues in cloud computing can have a significant impact on the user experience, and cloud providers
must address these issues to ensure that their services meet the performance requirements and
expectations of users.
Now, let's consider an example of streaming in the cloud. Suppose a company operates an e-commerce
website, and it wants to analyze customer data in real-time to improve its product recommendations and
marketing efforts. The company can use cloud-based streaming services to collect and analyze data from
various sources, such as website clicks, social media, and customer reviews. This allows the company to gain
real-time insights and make data-driven decisions quickly.
Data migration involves moving data from one storage location to another within a cloud environment,
while streaming involves transmitting and processing data in real-time or near real-time. Both processes are
essential in cloud computing and can help organizations optimize their data management and gain valuable
insights from their data.
Page 16 of 18
13. Interoperability
Cloud interoperability refers to the ability of different cloud systems to work together seamlessly and
exchange data and applications without any compatibility issues.
Example:
Let's say the business uses a cloud-based CRM (Customer Relationship Management) tool to manage
customer data and a cloud-based email service to communicate with customers. However, they also want to
use a cloud-based accounting software to manage their finances.
Without cloud interoperability, the business would face several challenges. For example, they may have to
manually transfer data between the different cloud services, which could be time-consuming and error-
prone. Additionally, they may face compatibility issues between the different cloud systems, making it
difficult to integrate their data and applications.
With cloud interoperability, the business can easily integrate their cloud services and exchange data
seamlessly. They can use APIs to connect their CRM tool with their accounting software and email service,
ensuring that data is transferred automatically between the different cloud services. This enables the
business to have a unified view of their customer data, finances, and communication, making it easier for
them to make informed decisions.
When a consumer wishes to migrate from one cloud provider to another, interoperability falls into three
main categories:
1. Data and Application Portability: This category refers to the ability to move applications and data
between different cloud platforms without requiring significant changes. This includes the ability to
export data from one cloud provider and import it into another, as well as the ability to run
applications on multiple cloud platforms without significant modifications.
Data and application portability can be achieved through the use of open standards and technologies such as
APIs, containers, and virtual machines. This enables businesses to move their data and applications to
different cloud providers without significant downtime or compatibility issues.
2. Platform Portability: This category refers to the ability to move applications between different cloud
platforms without requiring significant modifications. Platform portability enables businesses to
avoid vendor lock-in and switch between different cloud providers to take advantage of cost savings
or new features.
Platform portability can be achieved through the use of open-source technologies such as Kubernetes and
Docker. These technologies enable businesses to deploy and manage applications on multiple cloud
platforms without significant modifications.
3. Infrastructure Portability: This category refers to the ability to move virtualized infrastructure
between different cloud providers without requiring significant changes. This includes the ability to
move virtual machines, storage, and network configurations between different cloud providers.
Infrastructure portability can be achieved through the use of virtualization technologies such as VMware and
OpenStack. These technologies enable businesses to move their virtualized infrastructure between different
cloud providers without significant modifications.
Page 17 of 18
14. Cloudonomics
Cloudonomics refers to the study of the economics of cloud computing. It involves understanding the
business value of cloud computing, including the benefits, costs, and risks associated with adopting and using
cloud services. Cloudonomics takes into account various factors such as capital expenditures (CapEx),
operational expenditures (OpEx), agility, scalability, security, and reliability, and how they impact the overall
economics of cloud computing.
Cloudonomics focuses on analyzing the costs and benefits of different cloud deployment models (public,
private, hybrid), pricing models (pay-as-you-go, subscription-based), service models (IaaS, PaaS, SaaS), and
other factors that impact the adoption and use of cloud services. This involves evaluating the cost savings,
efficiency gains, and other economic benefits that can be achieved through cloud computing, as well as the
risks and challenges that need to be addressed.
Cloudonomics is important for businesses and organizations that are considering migrating to the cloud or
expanding their cloud usage. It helps them understand the potential economic benefits of cloud computing,
including cost savings, flexibility, and scalability, and how to manage the costs and risks associated with cloud
adoption. By analyzing the economics of cloud computing, businesses can make informed decisions about
which cloud services to use and how to optimize their cloud usage for maximum economic benefit.
Page 18 of 18
CSE423: VIRTUALIZATION &
CLOUD COMPUTING
Unit 3: Understanding Cloud Architecture
BY MADHUSUDAN KUMAR
Table of Contents
0. Who uses cloud services? ......................................................................................... 1
1. Cloud Computing Architecture ................................................................................. 2
1.1 Components of Back-end cloud architecture .............................................................................................2
2. Small and medium-sized businesses (SMBs): SMBs use cloud services to reduce the cost and
complexity of managing their IT infrastructure. Cloud services can provide cost-effective solutions for
email, collaboration, file sharing, customer relationship management (CRM), and more.
3. Large enterprises: Large enterprises use cloud services for a variety of purposes such as running
business-critical applications, managing large-scale data processing and analytics, and enabling
collaboration across multiple departments and locations.
4. Developers: Developers use cloud services to build and deploy applications quickly and efficiently.
Cloud services provide access to scalable infrastructure, development platforms, and APIs that
enable developers to create and deploy applications with ease.
5. Government agencies: Government agencies use cloud services to store and manage large amounts
of data, provide citizen services, and enable collaboration across different departments and
agencies.
6. Educational institutions: Educational institutions use cloud services for a variety of purposes such as
managing student information, providing online learning platforms, and enabling collaboration
between students and faculty.
Page 1 of 17
1. Cloud Computing Architecture
Cloud computing architecture is typically divided into two parts: the front-end and the back-end.
The front-end refers to the client-side of the architecture, where users interact with the cloud-based
applications and services. This includes user interfaces, web browsers, mobile apps, and other software that
allows users to access cloud resources.
The back-end, on the other hand, is the server-side of the architecture, where the cloud-based applications
and services are hosted and managed. This includes the physical servers, storage devices, networking
infrastructure, and other components that make up the cloud computing infrastructure.
The front-end of the architecture for Gmail includes the web-based user interface and the mobile app
interface that users interact with to read and send emails, manage contacts, and perform other tasks. Users
can access Gmail through their web browsers or through the mobile app.
The back end of the architecture for Gmail includes the servers, storage devices, networking equipment, and
other infrastructure components that store and manage the emails, contacts, and other data for all users.
Google, the provider of Gmail, manages and maintains this back-end infrastructure, ensuring that the service
is available, scalable, and secure for all users.
1. Application: This component includes the software and code that runs on the cloud infrastructure
and provides the functionality and features of the application or service. Examples of application
components include web servers, databases, middleware, and application servers.
2. Storage: This component includes the physical and virtual storage devices that store data and files
used by the application or service. Examples of storage components include file systems, object
storage, block storage, and databases.
3. Management: This component includes the tools and processes used to manage and monitor the
cloud infrastructure and the applications and services running on it. Examples of management
Page 2 of 17
components include provisioning tools, monitoring tools, automation tools, and configuration
management tools.
4. Security: This component includes the technologies and processes used to ensure the security and
privacy of the cloud infrastructure and the data and applications running on it. Examples of security
components include firewalls, access control systems, encryption, intrusion detection and prevention
systems, and security information and event management (SIEM) systems.
The application component includes the web server, application server, and database that run on the cloud
infrastructure and provide the functionality of the e-commerce application, such as browsing products,
placing orders, and managing user accounts.
The storage component includes the databases and file systems that store the product catalog, order data,
user information, and other data used by the e-commerce application.
The management component includes the provisioning tools that deploy the application and its components
to the cloud infrastructure, the monitoring tools that monitor the application's performance and availability,
and the automation tools that automate common tasks such as scaling and backups.
The security component includes the firewalls that protect the e-commerce application from cyber-attacks,
the access control systems that ensure only authorized users can access sensitive data, and the encryption
technologies that protect data both at rest and in transit.
2.1 SaaS
SaaS stands for Software as a Service. It is a cloud computing model where software applications are
provided to users over the internet as a subscription-based service. The software applications are hosted by
the service provider, and users can access them from anywhere with an internet connection.
For example, Salesforce is a popular SaaS application that provides customer relationship management
(CRM) software to businesses. Instead of purchasing and installing the software on their own computers,
businesses can subscribe to the Salesforce service and access the CRM software through a web browser.
Page 3 of 17
Advantages of SaaS:
1. Cost-effective: SaaS eliminates the need for businesses to purchase and maintain their own
hardware and software infrastructure, which can be expensive. Instead, they pay a subscription fee
for the service, which is often lower than the cost of purchasing and maintaining their own
infrastructure.
2. Scalability: SaaS allows businesses to easily scale up or down their software usage based on their
needs. They can add or remove users and features without having to worry about hardware and
software upgrades.
3. Accessibility: SaaS applications can be accessed from anywhere with an internet connection, making
it easy for remote workers and teams to collaborate.
Disadvantages of SaaS:
1. Security concerns: Since the data is stored and managed by the service provider, there may be
concerns about the security and privacy of the data.
2. Dependence on service provider: Businesses rely on the service provider for the availability and
performance of the software application. If the service provider experiences downtime or other
issues, it can impact the business's operations.
3. Limited customization: SaaS applications may have limited customization options, as they are
designed to be used by a wide range of customers with varying needs.
4. Project management
5. E-commerce
2.2 PaaS
Platform as a Service (PaaS) is a cloud computing model that provides a platform for developing, deploying,
and managing applications without the need for managing the underlying infrastructure. In simple terms,
PaaS allows developers to focus on developing applications rather than managing the underlying
infrastructure.
Example: Suppose a company wants to develop and deploy a web application. With PaaS, the company can
use a cloud platform such as Heroku, Microsoft Azure, or Google App Engine, which provides a pre-
configured environment for developing and deploying web applications. The company can simply upload
their application code to the PaaS platform and the platform takes care of managing the underlying
infrastructure, such as servers, operating systems, and networking.
Advantages of PaaS:
• Reduced development time and cost: PaaS provides a pre-configured environment that eliminates
the need for setting up and managing the underlying infrastructure, reducing the development time
and cost.
Page 4 of 17
• Scalability: PaaS platforms are designed to scale automatically based on the application workload,
which makes it easy to handle sudden spikes in traffic.
Disadvantages of PaaS:
• Vendor lock-in: PaaS platforms often have their own proprietary technologies and APIs, which can
make it difficult to switch to another platform.
• Limited control over infrastructure: PaaS platforms abstract away the underlying infrastructure,
which can limit the control and customization options available to developers.
• Web application development and deployment: PaaS platforms are well-suited for developing and
deploying web applications, as they provide a pre-configured environment and simplify the
development process.
• Mobile application development: PaaS platforms can also be used for developing and deploying
mobile applications, as they provide tools and services for building and testing mobile apps.
2.3 IaaS
Infrastructure as a Service (IaaS) is a cloud computing model that provides users with virtualized computing
resources over the internet. In simple terms, IaaS allows users to rent computing resources such as virtual
machines, storage, and networking on-demand from a cloud provider. The cloud provider is responsible for
managing the physical infrastructure and providing a virtualized environment where users can deploy and
manage their own software.
Example: One example of an IaaS provider is Amazon Web Services (AWS), which offers a wide range of
virtualized computing resources such as Amazon Elastic Compute Cloud (EC2) for virtual machines, Amazon
Simple Storage Service (S3) for storage, and Amazon Virtual Private Cloud (VPC) for networking.
Advantages:
• Cost savings: IaaS allows users to only pay for the resources they need, reducing the need for
upfront capital investment in physical infrastructure.
• Scalability: IaaS providers can easily scale up or down resources to meet changing demands, allowing
users to quickly respond to changes in their workload.
• Flexibility: IaaS allows users to customize their computing resources to meet their specific needs,
including the operating system, software, and configurations.
• Availability: IaaS providers offer high levels of availability and reliability, with built-in redundancy
and failover capabilities.
Disadvantages:
• Dependency on the cloud provider: IaaS users are dependent on the cloud provider for the
availability and performance of their virtualized resources.
• Security concerns: As with any cloud service, there are security concerns around the storage and
management of sensitive data in the cloud.
Page 5 of 17
• Management complexity: Managing virtualized resources in the cloud can be complex, requiring
expertise in cloud architecture and deployment.
Use cases:
• Development and testing: IaaS can provide developers with a flexible and scalable environment for
building, testing, and deploying applications.
• Web hosting: IaaS can provide web hosting services, allowing websites to be hosted on virtual
machines in the cloud.
• Disaster recovery: IaaS can be used for disaster recovery, providing a cost-effective solution for
replicating and recovering critical systems and data in the event of an outage.
Software as a
Definition Infrastructure as a Service Platform as a Service Service
User manages applications, data, runtime, User manages User only manages
Responsibility middleware, and operating systems applications and data data
Pay-as-you-go, usage-
Cost Model Pay-as-you-go, usage-based based Subscription-based
Page 6 of 17
Workload distribution architecture refers to the practice of distributing computing workloads across multiple
servers or nodes in a network, in order to improve performance, scalability, and fault tolerance. In this
architecture, the workload is divided into smaller, more manageable tasks that are processed by multiple
servers in parallel, rather than being handled by a single server.
For example, imagine a web-based application that serves thousands of concurrent users. Without workload
distribution, a single server would need to handle all the incoming requests, which could quickly overload the
server and result in slow response times or even downtime. By distributing the workload across multiple
servers, the application can handle a larger number of requests and maintain fast response times even
during peak usage periods.
Advantages:
1. Improved performance: By distributing the workload across multiple servers, the overall
performance of the system can be improved, since each server is handling a smaller portion of the
total workload.
2. Scalability: Workload distribution makes it easier to scale the system horizontally by adding more
servers to the network, rather than having to replace a single server with a more powerful one.
3. Fault tolerance: If one server in the network fails or experiences issues, the other servers can
continue to process the workload, providing a level of fault tolerance and ensuring that the system
remains operational.
Disadvantages:
1. Complexity: Workload distribution can introduce additional complexity to the system, particularly in
terms of managing and coordinating the workload across multiple servers.
2. Cost: Implementing workload distribution requires additional servers and infrastructure, which can
increase the overall cost of the system.
2. Data processing: Workload distribution can be used to distribute data processing tasks across
multiple servers, allowing large datasets to be processed more quickly and efficiently.
Mechanisms:
1. Load Balancing: This mechanism involves distributing incoming network traffic across multiple
servers or nodes to ensure that no single server is overloaded. Load balancing can be performed
using hardware or software-based solutions such as load balancers and content delivery networks
(CDNs).
2. Clustering: This mechanism involves grouping multiple servers or nodes together to act as a single
system, with each server or node sharing the workload. Clustering can be used to improve
application availability and reliability by providing redundancy in case of server failures.
Page 7 of 17
3. Auto-scaling: This mechanism involves automatically adjusting the number of servers or nodes in a
cloud environment based on changes in workload demand. Auto-scaling can be used to optimize
resource utilization and reduce costs by scaling up or down as needed.
4. Data replication: This mechanism involves copying data from one server or node to another to
ensure that data is available even in case of server failures. Data replication can be used to improve
application availability and reliability by providing redundancy in case of server failures.
4. Capacity Planning
Capacity planning in cloud computing refers to the process of estimating and forecasting the computing
resources required to meet the demands of an application or service running in the cloud. This process
involves analyzing historical usage patterns, predicting future demand, and identifying the resources needed
to support that demand.
Capacity planning is important in cloud computing because it allows organizations to optimize resource
utilization and minimize costs by ensuring that they have the right amount of computing resources available
at the right time. Overprovisioning resources can result in unnecessary costs, while underprovisioning can
lead to performance issues and user dissatisfaction.
The following are the key steps involved in capacity planning in cloud computing:
1. Analyzing usage patterns: The first step in capacity planning is to analyze historical usage patterns of
the application or service. This involves collecting data on resource usage, such as CPU, memory, and
network bandwidth, and identifying trends and patterns.
2. Forecasting demand: Based on the analysis of historical usage patterns, the next step is to forecast
future demand. This involves predicting future usage patterns based on factors such as seasonality,
growth rate, and market trends.
3. Identifying resource requirements: Once future demand has been forecasted, the next step is to
identify the computing resources required to meet that demand. This includes analyzing the
performance characteristics of the application or service, such as response time, throughput, and
scalability, and identifying the resources needed to support those characteristics.
4. Provisioning resources: Once the computing resources needed to support the application or service
have been identified, the next step is to provision those resources in the cloud environment. This
may involve provisioning virtual machines, storage, network bandwidth, or other resources as
needed.
5. Monitoring and optimization: The final step in capacity planning is to monitor resource usage and
optimize resource allocation as needed. This involves using tools and techniques such as load
balancing, auto-scaling, and resource optimization algorithms to ensure that computing resources
are being used efficiently and effectively.
Overall, capacity planning is a critical process in cloud computing that helps organizations optimize resource
utilization, minimize costs, and ensure that their applications and services are performing optimally.
Page 8 of 17
5. Cloud Bursting Architecture
Cloud bursting architecture is a cloud computing model where an organization's workload is handled by a
private cloud or an on-premises infrastructure, but when the workload exceeds the capacity of the private
cloud, the excess workload is offloaded to a public cloud, thereby providing extra resources on-demand.
A real-life example of cloud bursting is the retail industry during the holiday season. During the holiday
season, retailers experience a surge in customer traffic and sales, resulting in an increase in workload for
their online platforms. Retailers can use cloud bursting architecture to offload the excess workload to a
public cloud to handle the additional traffic and ensure a seamless customer experience.
Cloud bursting is important because it allows organizations to handle unexpected surges in workload without
the need for significant investment in infrastructure. This helps organizations save costs while ensuring that
they can meet customer demand.
Organizations use cloud bursting architecture when they have workloads that experience spikes in demand,
but they do not want to invest in a significant amount of infrastructure to handle these spikes. Cloud bursting
provides an on-demand solution that can handle the excess workload, reducing the need for
overprovisioning and costly infrastructure investments.
Manual bursting and automated bursting are two types of cloud bursting architecture that organizations can
use to handle unexpected surges in workload.
1. Manual bursting: In manual bursting, the decision to offload the excess workload to a public cloud is
made manually by an IT administrator. This is typically done when the IT administrator detects a
spike in demand and decides to offload the excess workload to a public cloud.
Example: A media company experiences a surge in demand for its video streaming services during a
major sporting event. The IT administrator decides to offload the excess workload to a public cloud
to ensure that the company's streaming services can handle the additional traffic.
Pros:
• Can help reduce costs by offloading excess workload only when necessary
Cons:
• Requires manual intervention, which can be time-consuming and may lead to delays
Page 9 of 17
• May result in underutilization of resources if the decision to offload excess workload is made
too late
2. Automated bursting: In automated bursting, the decision to offload the excess workload to a public
cloud is made automatically by a software program. This is typically done based on predefined
thresholds that are set by the IT administrator.
Example: A healthcare provider experiences a surge in demand for its online patient portal during a
public health emergency. An automated bursting solution detects the increase in demand and
offloads the excess workload to a public cloud to ensure that patients can access the portal.
Pros:
• Can help improve resource utilization by offloading excess workload at the right time
Cons:
• May result in overprovisioning of resources if the predefined thresholds are too low
• Requires careful monitoring and tuning to ensure that the automated solution works
correctly
Manual bursting and automated bursting are two cloud bursting architecture types that organizations can
use to handle unexpected surges in workload. Manual bursting provides control and flexibility for IT
administrators but may lead to delays, while automated bursting provides rapid response but requires careful
monitoring and tuning to ensure that it works correctly.
Disk provisioning architecture refers to the process of allocating and configuring storage resources for virtual
machines in a cloud environment. This includes determining the amount of storage space required for each
virtual machine, as well as the type of storage and performance characteristics.
Example: A software development company is running a cloud environment to support its development
activities. The company uses disk provisioning to allocate storage resources for each virtual machine in the
environment. The disk provisioning architecture ensures that each virtual machine has the appropriate
amount of storage to support its specific workload, while also optimizing storage utilization across the entire
environment.
Page 10 of 17
appropriate amount of storage to support its workload. This helps to prevent overprovisioning, which can
result in wasted resources, and underprovisioning, which can lead to poor application performance.
When do organizations use it: Organizations use disk provisioning architecture when deploying virtual
machines in a cloud environment, to ensure that each virtual machine has the appropriate amount of storage
to support its workload.
Pros:
• Enables efficient allocation of storage resources, which can help to optimize resource utilization in
the cloud environment.
• Helps to prevent overprovisioning and underprovisioning of storage resources, which can improve
application performance.
Cons:
• Requires careful planning and management to ensure that storage resources are allocated
appropriately.
• May require additional storage capacity to support sudden increases in workload, which can add to
storage costs.
Mechanisms:
1. Capacity planning: This involves estimating the amount of storage required for each virtual machine
in the cloud environment, based on the workload it will support. This can include factors such as the
amount of data being processed, the number of users, and the expected growth in workload over
time.
2. Storage type selection: Once the amount of storage required for each virtual machine is determined,
the appropriate storage type can be selected. This can include options such as block storage, object
storage, or file storage, depending on the workload and performance requirements.
4. Automation and orchestration: Disk provisioning can be automated using tools such as scripts or
APIs, which can help to improve efficiency and reduce errors. Orchestration tools can also be used to
manage the provisioning process across multiple cloud environments.
5. Monitoring and management: Once disk provisioning is in place, it is important to monitor and
manage storage resources to ensure that they are being used effectively. This can involve monitoring
storage utilization, optimizing performance, and making adjustments as needed to support changes
in workload.
Page 11 of 17
7. Dynamic failure detection and recovery Architecture
Dynamic failure detection and recovery architecture is a mechanism in cloud computing that allows for the
detection and recovery of failed resources in real-time, without disrupting the overall performance of the
system.
For example, let's say a company is running a cloud-based e-commerce platform. If the database server fails,
it could result in the loss of important data, and cause the platform to go offline. With dynamic failure
detection and recovery architecture in place, the system can automatically detect the failure, redirect traffic
to a backup server, and restore the database from a recent backup.
This architecture works by continuously monitoring the health and performance of cloud resources, such as
servers, networks, and storage. If a resource fails, the system can automatically switch to a backup resource,
without disrupting the user experience. This can be done through the use of load balancers, clustering, and
other techniques that allow resources to be shared across multiple instances.
Dynamic failure detection and recovery architecture is important because it helps to ensure high availability
and reliability in cloud-based systems. It allows organizations to provide uninterrupted service to users, even
in the event of hardware or software failures. This can be especially important for mission-critical systems,
such as financial transactions, healthcare applications, or emergency response systems.
However, there are also some potential drawbacks to consider. These can include increased complexity and
cost of cloud infrastructure, as well as potential issues with resource allocation and contention. Additionally,
some organizations may be hesitant to rely on automated systems for critical functions, preferring to
maintain manual control over recovery processes.
A resilient watchdog system is a component of the dynamic failure detection and recovery architecture that
monitors the health and performance of cloud resources, and can take action if a failure is detected.
The resilient watchdog system is designed to ensure that resources are continuously available, and can
automatically detect and recover from failures without requiring manual intervention. It works by monitoring
Page 12 of 17
key metrics such as CPU usage, memory usage, network traffic, and disk I/O, and can trigger an alert or
action if these metrics exceed predefined thresholds.
For example, a resilient watchdog system could be used to monitor a cloud-based web application. If the
system detects that response times are slowing down, it could automatically spin up additional server
instances to handle the increased traffic. Similarly, if a server instance fails, the system could automatically
redirect traffic to a backup instance, and initiate a recovery process.
The resilient watchdog system is an important component of the dynamic failure detection and recovery
architecture, as it helps to ensure that cloud resources are always available and performing at optimal levels.
By proactively monitoring resources and taking action to prevent or recover from failures, organizations can
minimize downtime, reduce costs, and provide a better user experience.
An intelligent watchdog monitor is a type of resilient watchdog system that uses machine learning
algorithms to detect patterns and anomalies in system metrics and take automated actions in response to
those patterns.
This type of watchdog monitor can adapt and learn from historical data and detect changes that are outside
the normal range. For example, it can detect that a specific type of traffic or user behavior is causing issues
with a particular resource, and take actions to mitigate the problem, such as allocating more resources to
handle the traffic or redirecting traffic to other resources.
The intelligent watchdog monitor is important in dynamic failure detection and recovery architecture
because it allows organizations to quickly respond to complex situations, adapt to changing conditions, and
optimize resource allocation based on real-time data. By using machine learning algorithms, it can identify
potential issues before they cause significant downtime or performance degradation, improving system
availability and reliability.
However, implementing an intelligent watchdog monitor requires significant investment in machine learning
expertise and infrastructure, and may require a large amount of historical data to train the algorithms
effectively. Additionally, it may be more complex to set up and maintain compared to traditional resilient
watchdog systems.
Page 13 of 17
A Service Level Agreement (SLA) is a formal agreement between a service provider and a customer that
defines the level of service that the provider will deliver. It is a contract that outlines the services that will be
provided, the performance targets that will be met, and the remedies that will be available if the targets are
not met.
1. Service description: This outlines the services that will be provided, including the scope and
limitations.
2. Service levels: This specifies the performance targets that the service provider will meet, such as
uptime, response time, and availability.
3. Metrics and measurement: This defines how the service levels will be measured and monitored,
including the frequency and method of reporting.
4. Remedies and penalties: This outlines the consequences if the service provider fails to meet the
service levels, including financial penalties, credits, or termination of the agreement.
5. Responsibilities of the provider and the customer: This specifies the roles and responsibilities of
both parties, such as the obligations of the provider to deliver the services, and the obligations of the
customer to pay for the services.
SLAs are important because they provide a clear and measurable framework for service delivery, which helps
to manage customer expectations and ensures that the provider delivers the agreed-upon level of service.
They also provide a mechanism for resolving disputes and holding the provider accountable for performance.
SLAs are commonly used in cloud computing, where service providers offer a range of services to customers,
such as Infrastructure-as-a-Service (IaaS), Platform-as-a-Service (PaaS), and Software-as-a-Service (SaaS). In
this context, SLAs help to ensure that the provider delivers the required level of performance and availability
for the customer's applications and data.
1. Customer-based SLA: This type of SLA is based on the specific needs and requirements of the
customer. It defines the level of service that the provider will deliver to a particular customer or
group of customers. For example, a cloud service provider may have different SLAs for different
customers, based on their usage patterns, business requirements, and budget constraints.
2. Service-based SLA: This type of SLA is based on the specific service that the provider is offering. It
defines the level of service that the provider will deliver for a particular service, regardless of the
customer. For example, a cloud service provider may have a Service-based SLA that defines the level
of performance, availability, and scalability for their IaaS offering, regardless of which customers are
using the service.
3. Multilevel SLA: This type of SLA is a combination of both Customer-based and Service-based SLAs. It
defines the level of service that the provider will deliver for a particular service, for a specific
customer or group of customers. This type of SLA is useful when different customers have different
requirements for the same service, or when the same customer has different requirements for
different services.
For example, a cloud service provider may have a Multilevel SLA for their SaaS offering, which defines
different levels of performance and availability for different customers, based on their usage patterns and
Page 14 of 17
business requirements. They may also have a Multilevel SLA for their IaaS offering, which defines different
levels of scalability and support for different services, depending on the specific needs of the customer.
Overall, the choice of SLA type depends on the specific needs and requirements of the customer and the
service provider, as well as the nature of the service being offered. Each type of SLA has its own advantages
and disadvantages, and it is important to choose the right type of SLA to ensure that the service is delivered
at the expected level of quality and performance.
Steps involved in establishing and maintaining a Service Level Agreement (SLA) between an organization and
a service provider:
1. Discover service provider: This step involves identifying potential service providers who can meet
the needs of the organization. This can be done through research, request for proposals, or outreach
to vendors.
2. Define SLA: In this step, the organization defines the service level requirements, including service
level objectives, metrics, and targets that will be used to measure the performance of the service
provider. This step involves negotiations between the organization and the service provider to
ensure that the SLA is reasonable and achievable.
3. Establish Agreement: After the service level requirements have been defined, an agreement is
established between the organization and the service provider outlining the terms and conditions of
the service. The SLA is incorporated into this agreement along with any penalties for non-compliance
and the process for monitoring and reporting on the service level objectives.
4. Monitor SLA violation: Regular monitoring is necessary to ensure that the service provider is
meeting their commitments. This involves measuring performance against the SLA, identifying any
deviations, and reporting them to the service provider for corrective action.
5. Terminate SLA: If the service provider is unable to meet the service level objectives or if the
organization is not satisfied with the service provided, the SLA can be terminated. This can be done
through mutual agreement or through the enforcement of penalties for non-compliance.
6. Enforce penalties for SLA Violation: If the service provider is found to be in violation of the SLA,
penalties can be imposed as outlined in the agreement. These penalties can include financial
penalties, reduced service level objectives, or termination of the agreement.
Overall, the SLA process helps to establish clear expectations and performance standards between the
organization and the service provider. It ensures that both parties are aware of their responsibilities, and that
the service provider is accountable for delivering the expected service levels.
Advantages of SLAs:
1. Clarity: An SLA provides clarity and transparency for both the service provider and the customer. This
helps to ensure that both parties have a clear understanding of what is expected and what will be
delivered.
2. Improved communication: By defining the terms of the agreement, an SLA helps to establish a
framework for communication between the service provider and the customer. This can help to
prevent misunderstandings and conflicts.
Page 15 of 17
3. Accountability: An SLA provides a mechanism for holding the service provider accountable for the
services that they are providing. This can help to ensure that the service provider is delivering the
expected level of service.
4. Continuous improvement: SLAs typically include a process for monitoring and reporting on
performance. This provides feedback that can be used to identify areas for improvement and make
necessary changes.
Disadvantages of SLAs:
1. Complexity: SLAs can be complex and difficult to negotiate, especially for organizations with limited
resources or expertise.
2. Rigidity: Once an SLA has been established, it can be difficult to make changes, even if the needs of
the organization change over time.
3. Cost: SLAs can be costly to implement and manage, especially if the organization is working with
multiple service providers.
4. Unforeseen circumstances: SLAs may not account for unforeseen circumstances or events that can
impact service delivery, such as natural disasters or cyber attacks.
Example: A common example of an SLA is an agreement between a company and a cloud service provider.
The SLA outlines the terms of the service, such as uptime guarantees, support response times, and data
security requirements. If the cloud service provider fails to meet the terms of the SLA, the company may be
entitled to compensation or other penalties as outlined in the agreement.
SOA (Service Oriented Architecture) is an architectural approach that allows software components to
interact with each other as services, rather than as individual applications. In a SOA system, each service is
designed to perform a specific business function and can be accessed by other services or applications
through a standard protocol.
Role of SOA:
Page 16 of 17
Components of SOA:
• Service registry: A directory that maintains information about the available services in the system.
• Service provider: A component that exposes a service for use by other services or applications.
• Service consumer: A component that uses a service provided by another service or application.
• Loose coupling: Services are designed to be independent of each other, allowing for easier
integration and reusability.
• Service reusability: Services are designed to be used in multiple contexts and scenarios.
• Service abstraction: Services are designed to expose only the necessary functionality to consumers,
hiding the underlying implementation details.
• Service autonomy: Services are designed to be independent and self-contained, able to function
without the need for other services or applications.
• Service composability: Services are designed to be combined and used together to create more
complex business processes.
Pros of SOA:
• Flexibility and agility: SOA allows for the development of flexible and agile software systems that can
be easily adapted to changing business needs.
• Interoperability: SOA enables the integration of disparate systems and services, promoting better
collaboration and communication between different teams.
Cons of SOA:
• Complexity: SOA systems can be complex and difficult to design and implement.
• Performance: The use of multiple services in a SOA system can result in performance issues if not
properly designed and optimized.
• Cost: The development and maintenance of a SOA system can be expensive, requiring specialized
skills and tools.
Real-life example of SOA: A common example of SOA is an online shopping system. In this system, different
services are used to handle various functions, such as product catalog, shopping cart, payment processing,
and order management. These services are designed to be independent and can be accessed by other
services or applications through a standard protocol, enabling seamless integration and reusability.
Page 17 of 17