0% found this document useful (0 votes)
39 views20 pages

1.0 Transformation of Computing

Cloud computing is transforming IT services into a utility model, allowing users to access computing resources on a pay-per-use basis, similar to utilities like water and electricity. This paradigm shift enables dynamic provisioning of services, fostering flexibility and scalability for businesses and end users alike. The vision for cloud computing includes a global marketplace for services, reducing barriers between providers and consumers while optimizing resource utilization.

Uploaded by

Prerana S A
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
39 views20 pages

1.0 Transformation of Computing

Cloud computing is transforming IT services into a utility model, allowing users to access computing resources on a pay-per-use basis, similar to utilities like water and electricity. This paradigm shift enables dynamic provisioning of services, fostering flexibility and scalability for businesses and end users alike. The vision for cloud computing includes a global marketplace for services, reducing barriers between providers and consumers while optimizing resource utilization.

Uploaded by

Prerana S A
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 20

MODULE 01

1.0 INTRODUCTION
Transformation of Computing:
• Computing is evolving into a service model, akin to utilities like water, electricity, gas, and
telephony.
• Users access services based on their needs, independent of the service location.
Utility Computing Vision:
• Paradigms like grid computing have aimed to deliver utility computing.
• Cloud computing is the latest paradigm striving to make this vision a reality.
Cloud Computing Overview:
• Focuses on designing computing systems, developing applications, and leveraging services for
software building.
• Relies on dynamic provisioning, applying to services, compute capability, storage, networking, and
IT infrastructure.
Resource Accessibility:
• Resources are provided via the Internet on a pay-per-use basis by cloud vendors.
• Users can subscribe to cloud services with a credit card, deploy and configure servers quickly, scale
infrastructure as needed, and pay only for the resources used.

1.1 CLOUD COMPUTING AT A GLANCE


In 1969, Leonard Kleinrock, a chief scientist of ARPANET, envisioned that as computer networks mature,
they would evolve into "computer utilities" similar to electricity and telephone utilities, serving individual
homes and offices across the country.
This vision anticipated the massive transformation of the computing industry in the 21st century, where
computing services would be available on demand, like other utilities such as water, electricity, telephone,
and gas in today's society.
Consumers would only pay when accessing computing services, eliminating the need for heavy
investment or difficulties in building and maintaining complex IT infrastructure.
Users would access services based on their needs, independent of where the services are hosted. This
model has been referred to as utility computing, and since 2007, as cloud computing.
Cloud computing often refers to infrastructure as a "cloud," from which businesses and users can access
applications as services from anywhere globally, on demand.
Cloud computing is a new paradigm for dynamically provisioning computing services, supported by
advanced data centers employing virtualization technologies for resource consolidation and effective
utilization.
Cloud computing allows renting infrastructure, runtime environments, and services on a pay-per-use
basis, with various practical applications. Different perspectives on cloud computing exist:
• Chief information and technology officers of large enterprises see opportunities for scaling
infrastructure on demand, adjusting it according to business needs.
• End users can access their documents and data anytime, anywhere, from any device connected to the
Internet.
A common perspective of cloud computing is that users don't care where their servers, documents, or
applications are stored or managed. They want them always available, accessible from any device, and are
willing to pay for the service as long as needed.
This concept of cloud computing mirrors how we use utilities like water and electricity, turning IT
services into utilities.
The delivery model of cloud computing is made possible by the composition of several mature
technologies. Web 2.0 technologies play a central role in making cloud computing an attractive opportunity
for building systems.
Web 2.0 technologies have transformed the Internet into a rich application and service delivery platform,
mature enough to serve complex needs. Service orientation in cloud computing delivers capabilities with
familiar abstractions, while virtualization provides customization, control, and flexibility for building
production and enterprise systems.
Cloud computing offers flexibility in building new systems and applications and integrating additional
capacity or features into existing systems.
Using dynamically provisioned IT resources is more attractive than buying additional infrastructure and
software, which can be difficult to size and is limited in time.
This flexibility and scalability are key advantages of cloud computing, making it a popular phenomenon.
As cloud computing systems are widely deployed, the foundation technologies and systems enabling them
are becoming consolidated and standardized, a fundamental step in realizing the long-term vision for cloud
computing.
Cloud computing aims to provide an open environment where computing, storage, and other services are
traded as computing utilities.
1.1.1 The Vision of Cloud Computing
Cloud computing allows anyone with a credit card to provision virtual hardware, runtime environments,
and services, used as long as needed, without upfront commitments.
The entire stack of a computing system is transformed into utilities, which can be provisioned and
composed to deploy systems in hours instead of days, with virtually no maintenance costs.
Initially met with scepticism, this opportunity has now become a common practice across various
application domains and business sectors.
The demand for cloud computing has fast-tracked technical development, enriching the set of services
offered, which have become more sophisticated and cheaper.
Despite its evolution, cloud computing is often limited to a single service or a set of related services
offered by the same vendor.
The lack of effective standardization efforts previously made it difficult to move hosted services between
vendors.
The long-term vision of cloud computing is for IT services to be traded as utilities in an open market, free
of technological and legal barriers.
In this envisioned cloud marketplace, cloud service providers and consumers, who trade cloud services as
utilities, play a central role.
Many of the technological elements contributing to this vision already exist.
Different stakeholders leverage clouds for various services, such as:
• Ubiquitous storage and on-demand compute power, which is the most common reason for
considering cloud computing.
• Scalable runtime for applications, which is attractive for developers without infrastructure or who
cannot afford to expand existing infrastructure.
• Web-based access to documents and their processing with sophisticated applications, appealing to
end users.
Currently, discovering cloud services mostly requires human intervention, where individuals or teams
search the Internet to find services that meet their needs.
The future vision is to enable users to find the solution that matches their needs by entering a request in a
global digital market that trades cloud computing services.
The establishment of such a market will automate the discovery process and integrate it into existing
software systems, allowing users to transparently leverage cloud resources.
A global cloud market would help service providers become more visible and potentially increase their
revenue.
This market would also reduce the barriers between service consumers and providers, allowing for
interactions where a provider could also become a consumer of a competitor’s service.
The creation of a global cloud computing marketplace and effective standards for cloud services’
representation and interaction would facilitate these changes.
A considerable shift toward cloud computing has already occurred, and its rapid adoption is aiding its
consolidation.
By concentrating cloud computing's core capabilities into large data centers, the need for technical
infrastructure on the consumer side can be reduced or removed.
This approach offers opportunities for optimizing data center facilities and fully utilizing their capabilities
to serve multiple users.
The consolidation model will reduce energy waste and carbon emissions, contributing to greener IT while
increasing revenue.
1.1.2 Defining a Cloud
Cloud Computing Popularity: Cloud computing has become a popular buzzword widely used to refer to
various technologies, services, and concepts. It is often associated with virtualized infrastructure or hardware
on demand, utility computing, IT outsourcing, platform and software as a service, and other concepts that
are now the focus of the IT industry. Figure 1.2 shows the many different notions included in current
definitions of cloud computing.
Historical Context of the Term "Cloud": The term "cloud" has historically been used in the
telecommunications industry as an abstraction for the network in system diagrams. It later became the
symbol for the most popular computer network: the Internet. This meaning also applies to cloud computing,
referring to an Internet-centric way of computing. The Internet plays a crucial role in cloud computing as it
represents the medium or platform through which many cloud services are delivered and made accessible.
Armbrust Definition of Cloud Computing: Cloud computing is defined as referring to both the
applications delivered as services over the Internet and the hardware and system software in the data centers
that provide those services. This definition highlights cloud computing as a phenomenon that touches on the
entire stack, from the underlying hardware to high-level software services and applications.
Introduction of XaaS: The concept of everything as a service (XaaS) is introduced. In this model,
different components of a system, such as IT infrastructure, development platforms, and databases, can be
delivered, measured, and priced as a service. This new approach influences how software is built, deployed,
made accessible, and how IT infrastructure is designed. It also affects how companies allocate costs for IT
needs. Cloud computing’s global approach covers the needs of a single user hosting documents in the cloud,
as well as the needs of a CIO deciding to deploy part or all of the corporate IT infrastructure in the public
cloud.
Shared Cloud Computing Environment: The notion of multiple parties using a shared cloud computing
environment is highlighted in the definition proposed by the U.S. National Institute of Standards and
Technology (NIST). According to NIST, cloud computing is a model that enables ubiquitous, convenient,
on-demand network access to a shared pool of configurable computing resources (such as networks, servers,
storage, applications, and services). These resources can be rapidly provisioned and released with minimal
management effort or service provider interaction.
Utility-Oriented Approach in Cloud Computing: One of the key aspects of cloud computing is its
utility-oriented approach. More than any other trend in distributed computing, cloud computing focuses on
delivering services with a pricing model, typically a "pay-per-use" strategy. This model allows users to
access online storage, rent virtual hardware, or use development platforms and pay only for their actual
usage, with little or no upfront costs. These operations can be performed and billed simply by entering credit
card details and accessing the services through a web browser.
Criteria to Define Cloud Computing: According to Reese, three criteria can be used to define whether a
service is delivered in the cloud computing style:
1. The service is accessible via a Web browser (non-proprietary) or a Web services application
programming interface (API).
2. Zero capital expenditure is necessary to get started.
3. Users pay only for what they use, as they use it.
Enterprise-Class Services and Service-Level Agreements (SLA): While many cloud computing
services are freely available for individual users, enterprise-class services are delivered according to a
specific pricing scheme. In these cases, users subscribe to the service and establish a service-level agreement
(SLA) with the service provider, which defines the quality-of-service parameters under which the service
will be delivered.
Buyya's Definition of Cloud: Buyya et al. define a cloud as a type of parallel and distributed system
consisting of a collection of interconnected and virtualized computers. These resources are dynamically
provisioned and presented as one or more unified computing resources, based on service-level agreements
established through negotiation between the service provider and consumers.

1.1.3 A Closer Look


Cloud Computing's Impact: Cloud computing is helping enterprises, governments, public and private
institutions, and research organizations shape more effective and demand-driven computing systems.
Accessing and integrating cloud resources is now as simple as performing a credit card transaction online.
Examples of Cloud Computing Across Market Segments:
1. Large Enterprises: Large companies can offload activities to cloud-based systems. For example, the
New York Times converted its digital library of past editions into a Web-friendly format using
Amazon EC2 and S3 Cloud resources. This task, requiring significant computing power, was
completed in 36 hours without additional costs by renting cloud resources.
2. Small Enterprises and Start-ups: Small businesses and start-ups can achieve faster results without
excessive upfront costs. Animoto, a company that creates videos from user-submitted images and
music, uses Amazon Web Services for its computing infrastructure. This approach provides
scalability on demand without owning servers.
3. System Developers: Developers can focus on business logic rather than infrastructure management.
Little Fluffy Toys, a company in London, uses Google AppEngine to support its computing needs for
a widget providing bicycle rental information. This allowed the company to launch in just one week.
4. End Users: Cloud computing makes documents accessible from any device. Apple iCloud allows
users to store documents in the cloud and access them from various devices, making the process
seamless and transparent to the user.
Cloud Computing as IT Services on Demand: Cloud computing enables the on-demand access to IT
services such as computing power, storage, and runtime environments on a pay-as-you-go basis. It also
introduces the concept of IT services and resources as utilities.
Deployment Models for Cloud Computing:
1. Public Clouds: The most common deployment model, where IT infrastructure is provided by a third-
party service provider and available to consumers on a subscription basis. This allows users to
quickly leverage compute, storage, and application services, with their data and applications hosted
on the vendor’s premises.
2. Private/Enterprise Clouds: Large organizations that own extensive computing infrastructure can
create private clouds, replicating the cloud IT service delivery model in-house. For example, the U.S.
federal government started a cloud computing initiative in 2010 to provide more efficient use of its
computing resources. Private clouds are also used by organizations with high security, privacy, and
regulatory concerns, such as governments and banks.
3. Hybrid Clouds: When private cloud resources are insufficient to meet quality-of-service
requirements, hybrid clouds are created. These combine public cloud resources with privately owned
infrastructures, offering flexibility and scalability to organizations. Hybrid clouds are becoming a
common approach for many stakeholders exploring cloud computing.
1.1.4 The Cloud Computing Reference Model

Fundamental Characteristic of Cloud Computing: A key feature of cloud computing is the ability to
deliver a wide variety of IT services on demand, which results in varying perceptions of cloud computing
among users. Despite these differences, cloud computing services can be classified into three major
categories: Infrastructure-as-a-Service (IaaS), Platform-as-a-Service (PaaS), and Software-as-a-Service
(SaaS). These categories are interrelated, as shown in the Cloud Computing Reference Model (Figure
1.5), which presents cloud services in a layered view from bottom to top.
Infrastructure-as-a-Service (IaaS):
• IaaS solutions provide infrastructure on demand, including virtual hardware, storage, and
networking.
• Virtual hardware is used to provide on-demand compute through virtual machine instances. Users
can configure the software stack in the virtual machine as per their needs.
• The pricing model is typically based on an hourly rate, influenced by the virtual hardware
characteristics.
• Virtual storage comes in two forms:
o Raw disk space for persistent storage needs.
o Object store for storing entities, as opposed to files.
• Virtual networking involves managing networking among virtual instances and their connectivity to
the internet or private networks.
Platform-as-a-Service (PaaS):
• PaaS solutions provide scalable and elastic runtime environments for application execution.
• These services are backed by middleware platforms that create the abstract environment where
applications are deployed and run.
• The service provider handles scalability and fault tolerance, while users focus on developing
applications using the provider's APIs and libraries.
• PaaS increases the level of abstraction in cloud computing but places more constraints on the user, as
they are working within a more controlled environment.
Software-as-a-Service (SaaS):
• SaaS solutions offer applications and services on demand, accessible via a browser.
• Common functionalities of desktop applications, such as office automation, document management,
photo editing, and CRM software, are provided on the provider's infrastructure.
• These applications are shared across multiple users, with their interactions isolated from one another.
• SaaS is also the platform for social networking websites that rely on cloud infrastructures to manage
their user load.
Use Cases for Each Layer:
• IaaS: Suitable for users who need to build dynamically scalable computing systems with specific
software stacks. It is often used for developing scalable websites or background processing.
• PaaS: Best for users developing new applications, providing a scalable programming platform.
• SaaS: Targeted at end users who need cloud services without the need for software development,
installation, or maintenance. It is ideal for users seeking existing services (e.g., email, document
management, CRM) with minimal customization.
1.1.5 Characteristics and Benefits
Characteristics of Cloud Computing:
• No up-front commitments: Users don’t need to make large upfront investments.
• On-demand access: Services are available as needed.
• Nice pricing: Cloud services typically offer favourable pricing models.
• Simplified application acceleration and scalability: Cloud systems simplify the scaling of
applications.
• Efficient resource allocation: Resources are allocated effectively to meet demands.
• Energy efficiency: Cloud computing can help optimize energy use.
• Seamless creation and use of third-party services: Integrating external services is easier.
Benefits of Cloud Computing:
• Economical Return: The main benefit is a reduction in maintenance and operational costs
associated with IT infrastructure and software. This happens because IT assets like software and
infrastructure are turned into utility costs, meaning users pay for them only when used, rather than
paying upfront.
• Capital Costs vs Utility Costs: Before cloud computing, IT infrastructure required upfront capital
costs. For example, hardware such as servers had to be bought upfront, which resulted in
depreciation over time. Cloud computing transforms these costs into utilities, significantly improving
a company’s net gain.
• Benefits for Small Organizations and Start-ups: Cloud computing reduces the need for large
initial investments, allowing small businesses to grow without heavy capital expenditures. It also
significantly reduces maintenance costs as the cloud service provider is responsible for infrastructure
upkeep.
• Increased Agility: Cloud computing provides flexibility in software system development, allowing
organizations to scale up or down easily. There is less need for capacity planning as organizations
can respond quickly to unexpected surges in demand, such as adding or removing servers as needed.
• Ease of Scalability: Cloud computing allows organizations to extend their IT capabilities easily.
Infrastructure, Platform-as-a-Service (PaaS), and Software-as-a-Service (SaaS) all offer scalable
solutions that can be adjusted as needed without requiring manual hardware provisioning or complex
programming for scalability.
End-User Benefits:
• Always Available Data: End users can access their data from anywhere, at any time, and on multiple
devices. Cloud computing provides Web-based interfaces to access services, making them available
on portable devices and desktops.
• Cost-Effective Processing: Users can perform tasks like office automation, photo editing, and
information management using cloud-based tools, which were previously costly due to the need for
significant software investments.
• Multitenancy: Cloud providers can serve multiple users (tenants) on shared infrastructure,
optimizing resource use and lowering costs for each user.
• Energy Efficiency: Cloud computing benefits from the concentration of IT infrastructure in large
data centers, which can be optimized for better resource allocation and energy efficiency, leading to
reduced environmental impact.
Service Orientation and Flexibility:
• New Opportunities for Composing Systems: Cloud computing offers flexibility for creating new
service offerings by combining existing services. On-demand access to components of the computing
stack allows for the rapid creation of products with limited costs, focusing efforts on adding value
rather than managing infrastructure.
1.1.6 Challenges Ahead
• New Issues and Problems: As cloud computing grows in popularity, new challenges arise for IT
practitioners, managers, governments, and regulators.
• Dynamic Provisioning: One challenge is determining how many resources need to be provisioned
and for how long to maximize benefit, especially in the Infrastructure-as-a-Service domain.
• Technical Challenges for Service Providers: Cloud service providers face challenges in managing
large computing infrastructures and using virtualization technologies effectively.
• Integration of Real and Virtual Infrastructure: Issues regarding the integration of physical and
virtual infrastructures need to be addressed from multiple perspectives, such as security and
legislation.
Security Challenges:
• Confidentiality and Data Protection: Organizations do not own the infrastructure they use, posing
risks to confidential data that cannot be exposed. Assurance of data confidentiality and compliance
with security standards are crucial.
• Cryptography and Vulnerabilities: While cryptography secures data during transit, the data must
be decrypted in memory to be processed, which can expose it to threats. Virtualization allows
capturing memory pages, making it easier for a malicious provider to access sensitive data.
Legal Challenges:
• Geographical Privacy Legislation: Cloud computing's global infrastructure introduces challenges
related to privacy laws in different countries. This can lead to disputes over who has rights to access
data.
• U.S. vs European Legislation: U.S. laws grant government agencies broad powers to acquire data
related to national security threats, while European laws are more privacy-focused. This discrepancy
creates challenges, especially when a U.S. organization uses cloud services with data stored in
Europe, making it difficult for the U.S. government to access data stored in a European data center.

1.2 HISTORICAL DEVELOPMENTS


Historical Context: The concept of renting computing services through large distributed computing
facilities has existed since the 1950s during the mainframe era.
Technological Evolution: Over time, technology has evolved and refined, creating favorable conditions
for the development of cloud computing.
Technologies Influencing Cloud Computing: Five core technologies that have played a significant role
in the realization of cloud computing:
1. Distributed Systems
2. Virtualization
3. Web 2.0
4. Service Orientation
5. Utility Computing
1.2.1 Distributed Systems
Clouds as Distributed Systems: Clouds are large distributed computing facilities that provide services to
third parties on demand. The general definition of a distributed system, as proposed by Tanenbaum et al., is a
collection of independent computers that appear as a single coherent system to users. This includes two key
elements: multiple independent components and the perception of a single entity by users. In cloud
computing, this is particularly true as clouds hide the complexity of their underlying architecture and offer a
unified interface to users. The primary goal of distributed systems is to share resources for better utilization,
which is similarly true for cloud computing where resources like infrastructure, runtime environments, and
services are rented to users. A driving factor for cloud computing's growth has been the availability of large
computing facilities from IT giants like Amazon and Google, who realized that offering computing
capabilities as a service allowed them to better utilize their infrastructure.
Key Properties of Distributed Systems: Distributed systems often exhibit properties such as:
• Heterogeneity: Different types of hardware and software components are integrated.
• Openness: The system can accept different technologies.
• Scalability: The system can grow as needed.
• Transparency: The internal workings are hidden from the user.
• Concurrency: Multiple tasks can be performed simultaneously.
• Continuous Availability: The system is always accessible.
• Independent Failures: Failure in one part of the system does not affect the entire system. These
properties also characterize clouds, especially in terms of scalability, concurrency, and continuous
availability.
Milestones Leading to Cloud Computing:
• Mainframes: Mainframes were the first examples of large computational facilities utilizing multiple
processors. These powerful, highly reliable computers were specialized for large data movement and
massive I/O operations. They were mainly used by large organizations for tasks like online
transactions and enterprise resource planning. Mainframes were not distributed systems but offered
large computational power by using multiple processors presented as a single entity to users. One
key feature of mainframes was their reliability, with systems capable of tolerating failures without
needing a shutdown. Although their popularity has declined, evolved versions are still used for
transaction processing in industries like banking, airlines, supermarkets, telecoms, and government
services.
• Clusters: Cluster computing emerged as a low-cost alternative to mainframes and supercomputers.
Advances in technology made mainframes and supercomputers more powerful, which led to the
availability of cheaper commodity machines. These machines were connected via high-bandwidth
networks and managed by specific software tools, enabling them to work as a single system. By the
1980s, clusters became the standard for parallel and high-performance computing, providing a
cheaper option for high-performance computing compared to expensive mainframes. Clusters made
it possible for universities and small research labs to access high-performance computing. They
contributed significantly to the evolution of distributed computing tools and frameworks like Condor,
Parallel Virtual Machine (PVM), and Message Passing Interface (MPI). A major advantage of
clusters was that they leveraged commodity machines' computational power to solve problems that
were previously only solvable on supercomputers. Additionally, clusters could easily be extended if
more computational power was needed.
• Grids: Grid computing, which appeared in the early 1990s, evolved from cluster computing. It was
designed to allow users to access large computational power, vast storage facilities, and various
services in a manner similar to how utilities like power, gas, and water are consumed. Grids initially
aggregated geographically dispersed clusters connected over the Internet, with different
organizations agreeing to share computational power. Unlike a large cluster, a computing grid was a
dynamic aggregation of heterogeneous computing nodes. Grids had a scale that could be nationwide
or even global. Several factors led to the development of grids: the widespread availability of
clusters, their underutilization, the need for computational power that exceeded single clusters’
capabilities, and improvements in networking and the expansion of the Internet. Today, grids serve a
vast number of users worldwide.
Cloud Computing: Cloud computing is considered the successor of grid computing and embodies
aspects of all three technologies (mainframes, clusters, and grids). Clouds are deployed in large datacenters
by a single organization that offers services to others. They are characterized by virtually infinite capacity,
fault tolerance, and continuous availability, similar to mainframes. In terms of infrastructure, clouds often
rely on commodity machines, much like clusters. Additionally, cloud services are consumed on a pay-per-
use basis, fully realizing the utility computing vision introduced by grid computing.
1.2.2 Virtualization
Virtualization as a Core Technology for Cloud Computing: Virtualization plays a crucial role in cloud
computing by allowing the abstraction of fundamental computing elements like hardware, runtime
environments, storage, and networking. While virtualization has existed for over 40 years, its application
was once limited by technological constraints that hindered efficient use. However, with recent
advancements, these limitations have been overcome, making virtualization a foundational element of cloud
computing. It enables IT infrastructure to be provided on demand, offering customization and control for
users while ensuring sustainability for cloud service providers.
What is Virtualization?: Virtualization is a technology that enables the creation of different computing
environments. These environments are "virtual" because they simulate the interfaces expected by a guest
system. The most common form of virtualization is hardware virtualization, which allows the simulation of
the hardware interface expected by an operating system. This allows multiple software stacks to coexist on
the same hardware, with each stack contained inside virtual machine instances that operate independently.
High-performance servers can host several virtual machines, providing on-demand, customized software
stacks. This technology is the basis for cloud services like Amazon EC2, RightScale, and VMware vCloud.
Components of Virtualization:
• Hardware Virtualization: Simulates the hardware interface and enables the coexistence of multiple
software stacks on a single machine.
• Storage and Network Virtualization: Complements hardware virtualization by emulating IT
infrastructure, including storage and networking components.
Virtualization for Runtime Environments: Virtualization is also used to replicate runtime environments
for programs. In the case of process virtual machines, programs are run by a specific program (virtual
machine) instead of the operating system. This isolates the execution of applications and allows for finer
control over the resources they access. Process virtual machines provide a higher level of abstraction
compared to hardware virtualization since the guest environment is just an application, not a complete
software stack. This approach is utilized in cloud computing platforms like Google AppEngine and
Windows Azure to scale applications on demand.
Advantages of Virtualization: The main appeal of virtualization is its ability to create isolated and
customizable environments with minimal impact on performance. This makes it an attractive technology for
cloud computing, enabling platforms to provide on-demand virtualization services to users worldwide.
1.2.3 Web 2.0
The Web as the Primary Interface for Cloud Computing: The Web is the main medium through which
cloud computing services are delivered. It includes a set of technologies and services that facilitate
interactive information sharing, collaboration, user-centered design, and application composition.
Web 2.0 Evolution: The Web has evolved into a rich platform for application development, referred to as
Web 2.0. This term describes a new approach to architecting applications and delivering services via the
Internet, offering an enhanced user experience.
Key Features of Web 2.0:
• Interactivity and Flexibility: Web 2.0 introduces dynamic and interactive web pages, providing a
user experience similar to desktop applications.
• Technologies Enabling Web 2.0: Technologies such as XML, AJAX (Asynchronous JavaScript and
XML), and Web Services enable the building of applications that leverage user contributions, making
users content providers.
• Wider Access: The diffusion of the Internet allows Web services to be accessed from a variety of
devices, including mobile phones, car dashboards, and TV sets, expanding the reach of the Web.
• Dynamism and Continuous Improvement: Web 2.0 applications are highly dynamic, with
continuous updates and new features integrated based on user trends. Users benefit from these
updates without needing to install new software versions, simply interacting with the cloud
applications.
• Lightweight Deployment: Web 2.0 supports lightweight deployment and programming models,
which are crucial for maintaining dynamism.
• Loose Coupling and Service Composition: New applications can be created by composing and
integrating existing services, providing added value and aligning with user interests.
• “Long Tail” of Internet Users: Web 2.0 applications are designed to be accessible and affordable
for a wide range of users, enhancing media accessibility and inclusivity.
Examples of Web 2.0 Applications: Notable Web 2.0 applications include Google Documents, Google
Maps, Flickr, Facebook, Twitter, YouTube, de.li.cious, Blogger, and Wikipedia. Social networking websites,
such as Facebook and Flickr, benefit the most from Web 2.0, relying on technologies like AJAX and RSS to
enhance user interaction. These platforms also harness collective intelligence, where user-generated content
contributes to the service.
The Web as a Transport for Interaction: The concept of the Web enabling and enhancing interaction
was first introduced by Darcy DiNucci in 1999 and became more fully realized in 2004. Today, it is a mature
platform supporting cloud computing, with applications and frameworks for delivering rich Internet
applications (RIAs) being fundamental to making cloud services widely accessible.
Impact of Web 2.0 on Cloud Computing: Web 2.0 has significantly contributed to the widespread
adoption of the Internet in daily life and facilitated the acceptance of cloud computing as a paradigm.
Through Web interfaces, even IT infrastructure is now offered as a service, which aligns with cloud
computing principles.
1.2.4 Service-Oriented Computing
Service Orientation in Cloud Computing: Service orientation is the core model for cloud computing,
focusing on services as the building blocks of application and system development. It supports rapid, low-
cost, flexible, interoperable, and evolvable applications and systems.
Definition of a Service: A service is a self-describing, platform-agnostic component that performs a
function, ranging from simple tasks to complex business processes. Services are:
• Loosely coupled, reusable, programming language-independent, and location-transparent.
• Accessible through network-accessible protocols and can be consumed by a wide range of clients.
Service-Oriented Architecture (SOA): Services are organized into a service-oriented architecture, which
is a logical structure for software systems. SOA provides services to end users or entities across a network
through published and discoverable interfaces.
Key Concepts in Service-Oriented Computing (SOC) and Cloud Computing:
• Quality of Service (QoS): Defines a set of attributes (functional and nonfunctional) to evaluate a
service’s behaviour, such as response time, security, reliability, scalability, and availability. QoS is
established via Service Level Agreements (SLA), specifying acceptable ranges for these attributes.
• Software-as-a-Service (SaaS): A delivery model for applications where software is hosted centrally
and accessed on a subscription basis. The client is freed from infrastructure maintenance and
upgrades. SaaS is enabled by multitenancy and allows services to be composed and reused flexibly.
Web Services (WS): A major expression of service orientation that integrates SOC concepts into the Web.
Web services:
• Are software components that expose functionalities accessible via method invocations over HTTP.
• Use Web Service Description Language (WSDL) to define the service’s interface, including
methods, parameters, and return types.
• Use Simple Object Access Protocol (SOAP) to invoke methods and collect results. SOAP and WSDL
over HTTP ensure platform independence and Web accessibility.
• Are standardized and controlled by the World Wide Web Consortium (W3C).
Web Services Architecture: Popular architectures for developing Web services include ASP.NET and
Axis. These technologies allow easy integration of services into the mainstream Web environment.
Contribution of SOC to Cloud Computing: SOC's emphasis on distributed services that can be
composed and integrated is a major contribution to cloud computing. Web services technologies facilitate
the composition of services, making them accessible and easily integrated into the Web.
1.2.5 Utility-Oriented Computing
• Definition:
Utility computing defines a service-provisioning model for compute services where resources like
storage, compute power, applications, and infrastructure are packaged and offered on a pay-per-use
basis.
• Historical Context:
The idea of computing as a utility (similar to natural gas, water, power, and telephone connections)
has a long history and became a reality with cloud computing.
o John McCarthy, an American scientist, predicted in 1961 that computing could someday be
organized as a public utility.
• Mainframe Era:
o Early traces of utility computing can be found in the mainframe era.
o IBM and other providers offered mainframe power to organizations such as banks and
government agencies.
o This business model led to the introduction of new features like operating systems, process
control, and user-metering.
• Cluster Computing:
o The concept of utility computing expanded from business to academia with the rise of cluster
computing.
o Research institutions began using external IT infrastructures on demand to address
computational challenges.
o External clusters became common for solving large-scale problems in computational science.
• Technological Means:
o The diffusion of the Internet and Web provided the infrastructure for realizing utility
computing on a global scale through simple interfaces.
o Computing grids provided distributed computing infrastructure accessible on demand, taking
utility computing to a new level with market orientation.
• Market Infrastructure:
o Utility computing became accessible on a wider scale, allowing the provision of trading
infrastructures where products like storage, computation, and services are bought or sold.
o E-commerce technologies played a significant role in supporting utility computing.
• Late 1990s E-Commerce Growth:
o The late 1990s saw a significant rise in online purchasing, including products like food,
clothes, and services such as storage space and Web hosting.
o The dot-com bubble burst, but it made the public more inclined to purchase online services.
o This led to the growth of online payment infrastructures, making credit card payments widely
accessible and proven.
• Service-Oriented Computing (SOC):
o SOC introduced leveraging external services for performing specific tasks within software
systems.
o Applications became distributed and were composed as a mesh of services provided by
different entities.
o These services, accessible through the Internet, were offered on a pay-per-use basis.
• Concept of SOC:
o SOC broadened the idea of what could be accessed as a utility, extending beyond compute
power and storage to include services and application components that could be integrated on
demand.
o Quality of Service (QoS) became a crucial topic, focusing on performance attributes like
response time, security, and scalability.
• Impact on Cloud Computing:
o All these factors contributed to the development of utility computing and played an important
role in the realization of cloud computing, where the vision of computing utilities is fully
realized.
1.3 BUILDING CLOUD COMPUTING ENVIRONMENTS
Creation of Cloud Computing Environments
• Development of Applications and Systems:
o Involves creating applications and systems that utilize cloud computing solutions.
• Creation of Frameworks, Platforms, and Infrastructures:
o Involves the development of frameworks, platforms, and infrastructures that deliver cloud
computing services.
1.3.1 Application development
Applications Leveraging Cloud Computing
• Web Applications:
o Benefit from dynamic scaling on demand, adapting to varying user demands.
o Performance is influenced by the workload generated by users.
o Web 2.0 technologies have made the Web a platform for rich, complex applications, including
enterprise applications.
o These applications are characterized by complex processes triggered by user interactions and
multiple backend tiers.
o Sensitive to inappropriate sizing of infrastructure and service deployment or workload
variability.
• Resource-Intensive Applications:
o Can be either data-intensive or compute-intensive.
o Require considerable resources to complete tasks within a reasonable timeframe.
o Large amounts of resources are needed only intermittently, not continuously.
o Examples: Scientific applications requiring massive computing capacity for occasional large-
scale experiments.
o Not interactive and often characterized by batch processing.
• Cloud Computing Benefits for On-Demand Scaling:
o Provides solutions for dynamic scaling across the entire computing stack.
o Methods for renting compute power, storage, and networking.
o Offers runtime environments designed for scalability and dynamic sizing.
o Provides application services that mimic desktop applications but are hosted and managed by
the provider.
o Service orientation enables simple and seamless integration into existing systems.
o Developers access services via simple Web interfaces, often through REST Web services.
o REST Web services are practical for developing and managing cloud applications.

1.3.2 Infrastructure and system development


Core Technologies Enabling Cloud Services
• Distributed computing, virtualization, service orientation, and Web 2.0 form the core
technologies enabling the provisioning of cloud services from anywhere on the globe.
• Developing applications and systems that leverage the cloud requires knowledge across all these
technologies.
• Moreover, new challenges need to be addressed from design and development standpoints.
• Distributed computing:
o A foundational model for cloud computing because cloud systems are distributed systems.
o Besides administrative tasks mostly connected to the accessibility of resources in the cloud,
the extreme dynamism of cloud systems—where new nodes and services are provisioned on
demand—constitutes the major challenge for engineers and developers.
o This characteristic is peculiar to cloud computing solutions and is mostly addressed at the
middleware layer of the computing system.
o Infrastructure-as-a-Service solutions provide the capabilities to add and remove resources,
but it is up to those who deploy systems on this scalable infrastructure to make use of such
opportunities with wisdom and effectiveness.
o Platform-as-a-Service solutions embed into their core offering algorithms and rules that
control the provisioning process and the lease of resources. These can be either completely
transparent to developers or subject to fine control.
o Integration between cloud resources and existing system deployment is another element of
concern.
• Web 2.0 technologies:
o Constitute the interface through which cloud computing services are delivered, managed, and
provisioned.
o Besides the interaction with rich interfaces through the Web browser, Web services have
become the primary access point to cloud computing systems from a programmatic
standpoint.
o Therefore, service orientation is the underlying paradigm that defines the architecture of a
cloud computing system.
o Cloud computing is often summarized with the acronym XaaS—Everything-as-a-Service—
that clearly underlines the central role of service orientation.
o Despite the absence of a unique standard for accessing the resources serviced by different
cloud providers, the commonality of technology smoothes the learning curve and simplifies
the integration of cloud computing into existing systems.
• Virtualization:
o Is another element that plays a fundamental role in cloud computing.
o This technology is a core feature of the infrastructure used by cloud providers.
o As discussed before, the virtualization concept is more than 40 years old, but cloud
computing introduces new challenges, especially in the management of virtual environments,
whether they are abstractions of virtual hardware or a runtime environment.
o Developers of cloud applications need to be aware of the limitations of the selected
virtualization technology and the implications on the volatility of some components of their
systems.
Considerations for Cloud-Based Applications
• These are all considerations that influence the way we program applications and systems based on
cloud computing technologies.
• Cloud computing essentially provides mechanisms to address surges in demand by replicating the
required components of computing systems under stress (i.e., heavily loaded).
• Dynamism, scale, and volatility of such components are the main elements that should guide the
design of such systems.
1.3.3 Computing platforms and technologies
Development of Cloud Computing Applications
• Development of a cloud computing application happens by leveraging platforms and frameworks
that provide different types of services, from the bare-metal infrastructure to customizable
applications serving specific purposes.
1.3.3.1 Amazon Web Services (AWS)
• AWS offers comprehensive cloud IaaS services ranging from virtual compute, storage, and
networking to complete computing stacks.
• AWS is mostly known for its compute and storage-on-demand services, namely Elastic Compute
Cloud (EC2) and Simple Storage Service (S3).
• EC2 provides users with customizable virtual hardware that can be used as the base infrastructure for
deploying computing systems on the cloud.
• It is possible to choose from a large variety of virtual hardware configurations, including GPU and
cluster instances.
• EC2 instances are deployed either by using the AWS console, a comprehensive Web portal for
accessing AWS services, or by using the Web services API available for several programming
languages.
• EC2 also provides the capability to save a specific running instance as an image, thus allowing users
to create their own templates for deploying systems.
• These templates are stored into S3 that delivers persistent storage on demand.
• S3 is organized into buckets, which are containers of objects that are stored in binary form and can
be enriched with attributes.
• Users can store objects of any size, from simple files to entire disk images, and have them accessible
from everywhere.
• Besides EC2 and S3, a wide range of services can be leveraged to build virtual computing systems,
including networking support, caching systems, DNS, database (relational and not) support, and
others.
1.3.3.2 Google AppEngine
• Google AppEngine is a scalable runtime environment mostly devoted to executing Web
applications.
• These applications take advantage of the large computing infrastructure of Google to dynamically
scale as the demand varies over time.
• AppEngine provides both a secure execution environment and a collection of services that simplify
the development of scalable and high-performance Web applications.
• These services include in-memory caching, scalable data store, job queues, messaging, and cron
tasks.
• Developers can build and test applications on their own machines using the AppEngine Software
Development Kit (SDK), which replicates the production runtime environment and helps test and
profile applications.
• Once development is complete, developers can easily migrate their application to AppEngine, set
quotas to contain the costs generated, and make the application available to the world.
• The languages currently supported are Python, Java, and Go.
1.3.3.3 Microsoft Azure
• Microsoft Azure is a cloud operating system and a platform for developing applications in the cloud.
• It provides a scalable runtime environment for Web applications and distributed applications in
general.
• Applications in Azure are organized around the concept of roles, which identify a distribution unit
for applications and embody the application’s logic.
• Currently, there are three types of roles:
o Web role: Designed to host a Web application.
o Worker role: A more generic container of applications and can be used to perform workload
processing.
o Virtual machine role: Provides a virtual environment in which the computing stack can be
fully customized, including the operating systems.
• Besides roles, Azure provides a set of additional services that complement application execution,
such as support for storage (relational data and blobs), networking, caching, content delivery, and
others.
1.3.3.4 Hadoop
• Apache Hadoop is an open-source framework that is suited for processing large data sets on
commodity hardware.
• Hadoop is an implementation of MapReduce, an application programming model developed by
Google, which provides two fundamental operations for data processing: map and reduce.
o Map: Transforms and synthesizes the input data provided by the user.
o Reduce: Aggregates the output obtained by the map operations.
• Hadoop provides the runtime environment, and developers need only provide the input data and
specify the map and reduce functions that need to be executed.
• Yahoo!, the sponsor of the Apache Hadoop project, has put considerable effort into transforming the
project into an enterprise-ready cloud computing platform for data processing.
• Hadoop is an integral part of the Yahoo! cloud infrastructure and supports several business processes
of the company.
• Currently, Yahoo! manages the largest Hadoop cluster in the world, which is also available to
academic institutions.
1.3.3.5 Force.com and Salesforce.com
• Force.com is a cloud computing platform for developing social enterprise applications.
• The platform is the basis for SalesForce.com, a Software-as-a-Service solution for customer
relationship management.
• Force.com allows developers to create applications by composing ready-to-use blocks; a complete
set of components supporting all the activities of an enterprise are available.
• It is also possible to develop your own components or integrate those available in AppExchange
into your applications.
• The platform provides complete support for developing applications, from the design of the data
layout to the definition of business rules and workflows and the definition of the user interface.
• The Force.com platform is completely hosted on the cloud and provides complete access to its
functionalities and those implemented in the hosted applications through Web services technologies.
1.3.3.6 Manjrasoft Aneka
• Manjrasoft Aneka is a cloud application platform for rapid creation of scalable applications and
their deployment on various types of clouds in a seamless and elastic manner.
• It supports a collection of programming abstractions for developing applications and a distributed
runtime environment that can be deployed on heterogeneous hardware (clusters, networked desktop
computers, and cloud resources).
• Developers can choose different abstractions to design their application: tasks, distributed threads,
and map-reduce.
• These applications are then executed on the distributed service-oriented runtime environment, which
can dynamically integrate additional resources on demand.
• The service-oriented architecture of the runtime has a great degree of flexibility and simplifies the
integration of new features, such as abstraction of a new programming model and associated
execution management environment.
• Services manage most of the activities happening at runtime: scheduling, execution, accounting,
billing, storage, and quality of service.
Key Examples of Cloud Computing Platforms
• These platforms are key examples of technologies available for cloud computing.
• They mostly fall into the three major market segments identified in the reference model:
Infrastructure-as-a-Service, Platform-as-a-Service, and Software-as-a-Service.
• In this book, Aneka is used as a reference platform for discussing practical implementations of
distributed applications.
• We present different ways in which clouds can be leveraged by applications built using the various
programming models and abstractions provided by Aneka.

You might also like