Cloud Computing
Cloud Computing
Virtualization
Virtualization is a technology that creates a virtual version of a physical resource, such as a
server, storage device, or network. It allows multiple virtual systems or environments to
operate on a single physical hardware resource, enhancing efficiency and flexibility in
resource utilization.
Types of Virtualization:
Benefits of Virtualization:
1. Cost Efficiency: Reduces the need for multiple physical machines, saving hardware
and energy costs.
2. Flexibility: Easy to deploy, manage, and scale resources.
3. Improved Disaster Recovery: Simplifies backup and recovery by encapsulating
VMs in files.
4. Enhanced Testing and Development: Provides isolated environments for testing
without affecting production systems.
Characteristics of Virtualized Environments
1. Isolation
○ Each virtual machine (VM) operates independently, ensuring that issues in
one VM do not affect others.
○ Provides secure and separate environments for different workloads.
2. Encapsulation
○ A virtual machine is encapsulated into a single file or set of files, making it
portable and easy to manage.
3. Partitioning
○ Physical hardware is divided into multiple virtual resources.
4. Resource Pooling
○ Hardware resources like CPU, memory, storage, and network bandwidth are
pooled and dynamically allocated to VMs as needed.
5. Hardware Independence
○ Virtual machines are decoupled from the underlying hardware, allowing them
to run on any physical host that supports the virtualization software.
6. Scalability
○ Virtualized environments can easily scale up or scale out to meet demand.
7. Elasticity
○ Resources can be dynamically adjusted based on workload requirements.
8. Load Balancing
○ Virtualized environments distribute workloads across multiple VMs or hosts to
optimize performance and resource utilization.
○ Prevents bottlenecks and ensures system reliability.
9. High Availability
○ Virtualization platforms often include features like live migration and failover
clustering, ensuring minimal downtime and service continuity.
10. Centralized Management
○ Virtualized environments can be managed from a single console, simplifying
tasks like monitoring, provisioning, and troubleshooting.
Taxonomy of Virtualization Techniques
1. Hardware Virtualization
2. Software Virtualization
3. Storage Virtualization
4. Network Virtualization
5. Desktop Virtualization
6. Data Virtualization
● Unifies data from multiple sources without needing physical storage changes.
7. GPU Virtualization
● Virtualizes GPU resources for graphical/computational tasks. Example: NVIDIA
vGPU.
Virtualization and Cloud Computing
Virtualization is a key enabler of cloud computing, allowing for resource abstraction and
management.
Virtualization
Cloud Computing
● Definition: The delivery of computing resources over the internet (the cloud). Cloud
computing allows on-demand access to scalable and elastic resources.
● Service Models:
○ IaaS (Infrastructure as a Service): Provides virtualized computing resources
over the internet (e.g., AWS EC2, Google Compute Engine).
○ PaaS (Platform as a Service): Provides a platform allowing customers to
develop, run, and manage applications (e.g., AWS Elastic Beanstalk, Google
App Engine).
○ SaaS (Software as a Service): Delivers software applications over the
internet (e.g., Google Workspace, Microsoft 365).
Pros of Virtualization
Cons of Virtualization
Key Functions:
Full Virtualization
Full Virtualization is a virtualization technique where the guest operating system runs
unmodified as if it were directly interacting with the underlying physical hardware, even
though it is running in a virtualized environment.
Key Features:
Benefits:
● Data Centers: Used to consolidate physical servers and optimize resource usage.
● Cloud Environments: Provides flexible, scalable computing resources.
Para-Virtualization
Key Features:
Benefits:
Use Cases:
Partial Virtualization is a virtualization technique where only some parts of the guest
operating system are modified to work with the hypervisor. Unlike full virtualization, where
the guest OS runs unmodified, partial virtualization requires limited modifications to the guest
OS for it to function properly in the virtualized environment.
Key Features:
Benefits:
Use Cases:
Key Principles:
1. Task Decomposition: Breaks a large task into smaller sub-tasks that can be
processed concurrently.
2. Concurrency: Multiple tasks run at the same time, either simultaneously or during
overlapping time periods.
3. Synchronization: Ensures tasks are coordinated to share data correctly, using
mechanisms like locks and barriers.
4. Memory Types:
○ Shared Memory: Processors share memory, allowing easy communication.
○ Distributed Memory: Each processor has its own memory, requiring network
communication.
5. Scalability: Performance improves as more processors are added, though limited by
overhead and dependencies.
6. Load Balancing: Even distribution of tasks across processors to maximize efficiency.
7. Communication: Tasks communicate via memory in shared systems or networks in
distributed systems.
Types of Parallelism:
Benefits:
Challenges:
Distributed Computing
Distributed Computing involves a system where multiple computers (or nodes) work
together over a network to solve a problem, sharing resources and processing tasks
collaboratively.
Key Principles:
1. Task Distribution: Large tasks are divided into smaller sub-tasks, which are
assigned to different nodes in the network.
2. Resource Sharing: Nodes share resources like processing power, storage, and
memory, allowing for the efficient handling of large-scale problems.
3. Communication: Nodes communicate over a network to exchange data, using
message-passing protocols (e.g., MPI, HTTP, REST).
4. Fault Tolerance: Distributed systems are designed to handle node failures by using
redundancy, replication, and error recovery mechanisms.
5. Scalability: The system can scale by adding more nodes to handle increased
demand, improving performance.
6. Coordination: Distributed nodes need to coordinate tasks, often using algorithms
like consensus protocols (e.g., Paxos, Raft) to ensure consistency and data integrity.
Benefits:
Challenges:
1. Concurrency:
○ The execution of multiple tasks or operations at the same time, which helps in
improving performance and resource utilization.
2. Task Decomposition:
○ Breaking a large problem into smaller, independent sub-tasks that can be
executed in parallel. Effective decomposition is key to efficient parallel
processing.
3. Synchronization:
○ Coordinating the execution of parallel tasks to ensure data consistency and
correct execution order. This involves using synchronization mechanisms like
locks, barriers, and semaphores.
4. Communication:
○ Interaction between parallel tasks, which may need to exchange data. This
can occur through shared memory, message passing, or other communication
mechanisms.
5. Memory Model:
○ Shared Memory: Multiple processors access a common memory space,
enabling easy data exchange.
○ Distributed Memory: Each processor has its own local memory, and
processors communicate through messages to share data.
6. Load Balancing:
○ Evenly distributing tasks among processors to ensure that no processor is
idle or overloaded, leading to optimal performance and resource utilization.
7. Scalability:
○ The ability to increase the number of processors or resources in the system to
handle larger problems or achieve better performance. Good parallel systems
scale efficiently as more processors are added.
8. Fault Tolerance:
○ Ensuring the system can handle failures in hardware or software, maintaining
performance and reliability, often by using redundancy and error-correction
techniques.
9. Performance Metrics:
○ Speedup: The improvement in execution time when using multiple
processors compared to a single processor.
○ Efficiency: The ratio of performance improvement relative to the number of
processors used.
○ Throughput: The total amount of work done in a given time period, often
measured in terms of tasks or data processed.
Hardware Architectures for Parallel Processing
Parallel programming involves the development of software that can execute multiple tasks
simultaneously across multiple processing units. There are several approaches to parallel
programming that are designed to optimize performance, scalability, and efficiency.
● Description: In distributed memory programming, each processor has its own local
memory. Processors communicate with each other via message passing, typically
through a network.
● Key Characteristics:
○ Each processor has its own local memory and can only directly access its
own data.
○ Communication is done via explicit messages between processors.
○ Examples: MPI (Message Passing Interface), PVM (Parallel Virtual Machine).
● Pros: Scales well to large systems and distributed environments.
● Cons: Communication overhead and complexity in managing data exchange
between processors.
3. Data Parallelism
● Description: Data parallelism involves applying the same operation to multiple data
elements simultaneously. This approach divides large datasets into smaller chunks
and processes them in parallel.
● Key Characteristics:
○ Data is partitioned into smaller pieces that can be processed in parallel.
○ Suitable for problems that involve processing large arrays, matrices, or
datasets.
○ Examples: CUDA, OpenCL (for GPUs), Intel TBB (Threading Building
Blocks).
● Pros: Efficient for large-scale numerical and scientific computations.
● Cons: Not suitable for all types of problems; works best with large, independent
datasets.
4. Task Parallelism
5. Pipeline Parallelism
● Description: Pipeline parallelism splits a computation into stages, where each stage
processes a different part of the data and passes it to the next stage in the pipeline.
This is commonly used in stream processing.
● Key Characteristics:
○ Tasks are divided into sequential stages that can be processed concurrently.
○ Commonly used in data streaming and processing tasks (e.g., video
encoding, data transformations).
○ Examples: Image or video processing pipelines.
● Pros: Efficient for tasks that can be divided into stages.
● Cons: Not effective for all types of computation; may require reorganization of data
flow.
6. Hybrid Parallelism
● Principle: The more time spent on writing code, the less time there will be for
debugging.
● Application: Focus on writing clean, well-documented, and well-tested code. The
longer the code is left unchecked, the harder and more time-consuming it will be to
find and fix bugs.
● Principle: Always ensure that critical data, processes, and systems are backed up
and redundant, to prevent data loss or downtime.
● Application: Use backup systems, error-checking routines, and redundancy
techniques to safeguard against data corruption, system failure, or human error.
● Principle: Never assume that the system will work perfectly under all conditions.
● Application: Design systems with failure modes in mind, and always assume that
errors or unexpected input will occur. Implement checks and balances to handle
these situations gracefully.
● Principle: The more complex the system, the higher the chances of failure and
difficulty in understanding.
● Application: Strive to keep systems and code as simple and understandable as
possible. Avoid over-engineering or adding unnecessary complexity to avoid
confusion or errors in the future.
Unit-III
Front-End
Back-End
Network
● Definition: Connects the front-end and back-end components using the internet or
intranet.
● Importance: Ensures seamless data transfer and service availability.
● Public Cloud: Services offered to multiple customers over the internet (e.g., AWS,
Azure).
● Private Cloud: Dedicated infrastructure for a single organization, offering more
control and security.
● Hybrid Cloud: Combines public and private clouds for flexibility.
● Community Cloud: Shared infrastructure for specific groups or organizations with
common concerns.
The Internet as a Platform refers to using the internet to deliver services, applications, and
tools without relying on traditional software or hardware infrastructure. It transforms the
internet into a foundation for building and deploying solutions.
Key Features
1. Service Delivery: Provides resources like computing, storage, and networking over
the web.
2. Accessibility: Accessible from any internet-connected device, anytime, anywhere.
3. Scalability: Supports dynamic resource scaling to meet user demands.
4. Collaboration: Enables real-time collaboration through shared tools and platforms.
Examples
Benefits
The Cloud Reference Model provides a conceptual framework to understand and design
cloud computing services. It defines key components and their relationships to deliver
scalable, efficient, and flexible cloud services.
Cross-Cutting Concerns
Benefits
Cloud computing offers significant cost and efficiency benefits, transforming the way
businesses manage IT resources. Its economic model is based on operational expense
(OPEX) rather than capital expense (CAPEX), enabling organizations to optimize spending
and scalability.
1. Pay-as-You-Go Model
○ Customers pay only for the resources they use.
○ Reduces upfront capital expenditure (CAPEX).
○ Encourages cost efficiency by scaling up or down based on demand.
2. Cost Optimization
○ Eliminates the need for maintaining on-premises hardware.
○ Lowers operational costs (OPEX) by outsourcing IT management to cloud
providers.
3. Elasticity and Scalability
○ Adjust resources dynamically to meet fluctuating demands.
○ Reduces overprovisioning and underutilization of resources.
4. Shared Infrastructure
○ Resources are pooled for multiple users in public or hybrid clouds.
○ Reduces individual costs while maintaining economies of scale.
5. Reduced Total Cost of Ownership (TCO)
○ Decreases the need for physical infrastructure, maintenance, and IT staff.
○ Ensures predictable spending with subscription-based pricing.
6. Innovation and Agility
○ Facilitates faster deployment of applications and services.
○ Lowers entry barriers for startups and small businesses.
7. Risk Transfer
○ Shifts risks like hardware failure and maintenance to the cloud provider.
● Hidden Costs: Data transfer, overuse of resources, and unplanned scaling can
increase costs.
● Vendor Lock-In: Migrating between providers can be expensive.
● Cost Management: Requires tools and expertise to monitor usage and avoid
overspending.
Cloud Computing Platforms
Cloud computing platforms provide users with on-demand access to computing resources
like servers, storage, databases, networking, software, and more. These platforms allow
businesses and individuals to leverage cloud services to enhance scalability, flexibility, and
cost-effectiveness.
Overview:
AWS is the most widely used cloud platform, offering a comprehensive suite of cloud
services that cater to computing, storage, networking, machine learning, and more. It is
known for its reliability, scalability, and vast ecosystem.
Key Services:
● EC2 (Elastic Compute Cloud): Scalable compute resources for running virtual
machines.
● S3 (Simple Storage Service): Object storage for data storage and retrieval.
● RDS (Relational Database Service): Managed database services for relational
databases like MySQL and PostgreSQL.
● Lambda: Serverless computing that runs code in response to events.
● Elastic Load Balancer (ELB): Distributes incoming traffic across multiple EC2
instances.
2. Microsoft Azure
Overview:
Azure is a strong competitor to AWS and is widely used by enterprises due to its integration
with Microsoft products. It provides a wide range of cloud services, including computing,
networking, databases, and analytics.
Key Services:
Overview:
GCP is recognized for its strong focus on big data, machine learning, and analytics. It is
popular for organizations that require high-performance computing and advanced data
processing capabilities.
Key Services:
4. IBM Cloud
Overview:
IBM Cloud focuses on enterprise needs, particularly with hybrid cloud solutions. It integrates
AI, blockchain, and analytics into its cloud offerings, making it a go-to for businesses looking
for industry-specific services.
Key Services:
● IBM Cloud Virtual Servers: Scalable compute resources for running applications.
● Cloud Object Storage: Secure storage for large-scale unstructured data.
● Db2 on Cloud: Managed relational database.
● Watson AI: AI and machine learning platform for building cognitive applications.
● IBM Cloud Kubernetes Service: Managed service for running Kubernetes
containers.
5. Oracle Cloud
Overview:
Oracle Cloud is highly specialized in providing solutions for enterprise resource planning
(ERP), databases, and customer relationship management (CRM). It is often chosen for its
strong database offerings.
Key Services:
Cloud computing economics involves cost models, financial benefits, and strategies for
efficient resource use. Here's a quick breakdown:
1. Cost Models
● Pay-as-You-Go: Users pay only for what they use (e.g., AWS, Microsoft Azure).
● Subscription-Based: Regular payments for access to cloud services (e.g., Microsoft
365).
● Free Tiers/Trials: Providers offer limited free services for testing (e.g., AWS Free
Tier).
2. Cost Benefits
4. Cost Challenges
● Data Transfer Costs: Charges for moving data in and out of the cloud.
● Unpredictable Costs: Scaling resources dynamically can lead to fluctuating bills.
● Vendor Lock-In: Switching providers can be costly and complex.
Cloud infrastructure encompasses both hardware and software components that work
together to enable developers to provision virtual resources and deploy workloads. Below
are the core components that make cloud deployment seamless:
1. Servers
Servers are powerful computers installed by cloud providers across multiple data centers.
These servers consist of multiple processor cores and large storage capacities to handle
high computational tasks. Providers use clusters of interconnected servers to deliver cloud
computing services.
2. Networking
Networking in the cloud connects various data storage systems, applications, microservices,
and other workloads across servers. Cloud providers use networking devices like load
balancers and network switches to manage traffic and reduce latency, improving
performance, especially during high traffic.
3. Storage
Cloud storage offers persistent data storage, which can be accessed from any
internet-enabled device. Cloud storage is highly scalable, allowing users to expand storage
capacity as needed. For instance, block storage is ideal for applications requiring fast
read/write performance.
4. Software
Cloud infrastructure's virtualized resources are accessed through software, which simplifies
cloud usage for developers. This includes tools like virtual machines (VMs), data
management platforms, and analytics tools to manage and deploy applications effectively.
Cloud architecture refers to using distributed computing resources for running web
applications at scale. There are several cloud infrastructure delivery models to help
organizations implement cloud strategies effectively:
1. Software as a Service (SaaS)
SaaS allows users to access software applications via a browser without installing or
maintaining the software locally. The cloud provider manages all aspects of the software,
such as updates and troubleshooting. Example: Google Workspace.
PaaS provides developers with resources to build, test, and deploy applications without
managing underlying infrastructure. The cloud provider handles software development
frameworks, databases, and containerization, allowing developers to focus on building the
application. Example: Google App Engine.
IaaS offers organizations full access to cloud infrastructure resources such as virtual
servers, storage, and networking tools on a pay-per-use basis. This model provides greater
control over the entire technology stack, including the operating system and applications.
Example: Amazon Web Services (AWS).
1. Public Cloud
The public cloud model provides access to shared cloud resources offered by third-party
providers. It’s cost-effective, as users only pay for what they use. Public cloud services are
multi-tenant, but can be customized with dedicated resources as needed. Example: AWS,
Microsoft Azure.
2. Private Cloud
A private cloud is dedicated to a single organization, providing greater control and security. It
is hosted on-premises or through a third-party provider, but the infrastructure is not shared
with others. Private clouds typically require higher capital investment. Example: VMware
Private Cloud.
3. Hybrid Cloud
A hybrid cloud combines both public and private clouds, allowing organizations to take
advantage of the benefits of both. Sensitive data can be stored on the private cloud, while
less critical workloads run on the public cloud. This model offers flexibility and scalability.
Example: Microsoft Azure Hybrid Cloud.
Economies of scale: public vs private clouds.
Software Productivity in the Cloud
It refers to how cloud computing enhances software development, deployment, and
management through increased efficiency, flexibility, and collaboration. Key benefits include:
1. Scalability and Flexibility: Cloud resources can be quickly scaled up or down based
on demand, providing elasticity and ensuring efficient performance without manual
intervention.
2. Collaboration and Accessibility: Cloud platforms enable remote access, allowing
teams to collaborate globally and share development environments for real-time
updates and version control.
3. Cost Efficiency: With the pay-as-you-go model, organizations only pay for the
resources they use, avoiding the costs of maintaining physical infrastructure, and
reducing operational expenses.
4. Faster Development Cycle: Cloud services support CI/CD pipelines, automating
testing, deployment, and updates, speeding up the development process and
allowing rapid iteration.
5. Improved Security and Compliance: Cloud providers offer managed security
features like encryption, firewalls, and compliance with industry standards, reducing
the burden on development teams.
6. Innovation and Integration: Developers gain access to advanced technologies like
AI and machine learning, along with integrations for various third-party tools,
enhancing software capabilities.