Fundamental of cloud
computing
Unit 1 cont..
Building cloud computing environments
Building cloud computing environments
• The creation of cloud computing environments encompasses
both the development of applications and systems that
leverage cloud computing solutions and the creation of
frameworks, platforms, and infrastructures delivering cloud
computing services.
Application development
• Applications that leverage cloud computing benefit from its
capability to dynamically scale on demand.
• One class of applications that takes the biggest advantage of
this feature is that of Web applications.
• second class of applications resource-intensive applications.
Web applications
• Their performance is mostly influenced by the workload
generated by varying user demands.
• With the diffusion of Web 2.0 technologies, the Web has
become a platform for developing rich and complex
applications, including enterprise applications that now
leverage the Internet as the preferred channel for service
delivery and user interaction.
• These applications are characterized by complex processes
that are triggered by the interaction with users and develop
through the interaction between several tiers behind the
Web front end.
• These are the applications that are mostly sensible to
inappropriate sizing of infrastructure and service deployment
or variability in workload
• Another class of applications that can potentially gain
considerable advantage by leveraging cloud computing is
represented by resource-intensive applications.
• These can be either data- intensive or compute-intensive
applications.
• In both cases, considerable amounts of resources are required
to complete execution in a reasonable timeframe.
• It is worth noticing that these large amounts of resources are
not needed constantly or for a long duration.
• For example, scientific applications can require huge
computing capacity to perform large-scale experiments once in
a while, so it is not feasible to buy the infrastructure
supporting them.
• In this case, cloud computing can be the solution. Resource-
intensive applications are not interactive and they are mostly
characterized by batch processing.
Cloud computing provides a solution for on-demand and
dynamic scaling across the entire stack of computing.
This is achieved by
• (a) providing methods for renting compute power, storage,
and networking;
• (b) offering runtime environments designed for scalability
and dynamic sizing;
• (c) providing application services that mimic the behavior of
desktop applications but that are completely hosted and
managed on the provider side.
Infrastructure and system development
• 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 is a foundational model for cloud
computing because cloud systems are distributed systems.
• Besides administrative tasks mostly connected to the
accessibility of resources in the cloud,—where new nodes
and services are provisioned on demand—constitutes the
major challenge for engineers and developers.
• This characteristic is pretty peculiar to cloud computing
solutions and is mostly addressed at the middleware layer of
computing system
• 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.
• 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. Integration between cloud resources
and existing system deployment is another element of
concern.
• Web 2.0 technologies constitute the interface through which
cloud computing services are delivered, managed, and
provisioned.
• 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.
• Virtualization is another element that plays a fundamental
role in cloud computing. This technology is a core feature of
the infrastructure used by cloud providers.
Computing platforms and technologies
• 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.
• Amazon web services (AWS)
• Google AppEngine
• Microsoft Azure
• Hadoop
• Force.com and Salesforce.com
• Manjrasoft Aneka
• Private clouds are an alternative to public clouds.
Open-source cloud computing platforms such as:
• Eucalyptus,
• OpenNebula,
• Nimbus,
• OpenStack
Amazon Web Services (AWS)
• AWS IaaS cloud computing services launched in 2006.
• Businesses in 300+ countries used AWS .
• The infrastructure consists of compute and storage servers
interconnected by high-speed networks and supports a set of
services.
• An application developer:
• Installs applications on a platform of his/her choice.
• Manages resources allocated by Amazon.
Cloud Computing: Theory and Practice.
17 Dan C. Marinescu
Chapter 3
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, which is
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; these 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.
Examples of Amazon Web Services
• AWS Management Console - allows users to access the services
offered by AWS .
• Elastic Cloud Computing (EC2) - allows a user to launch a variety of
operating systems.
• Simple Queuing Service (SQS) - allows multiple EC2 instances to
communicate with one another.
• Simple Storage Service (S3), Simple DB, and Elastic Bloc Storage (EBS) -
storage services.
• Cloud Watch - supports performance monitoring.
• Auto Scaling - supports elastic resource management.
• Virtual Private Cloud - allows direct migration of parallel applications.
Cloud Computing: Theory and Practice.
22 Dan C. Marinescu
Chapter 3
AWS regions and availability zones
• Amazon offers cloud services through a network of data centers on several
continents.
• In each region there are several availability zones interconnected by high-
speed networks.
• An availability zone is a data center consisting of a large number of servers.
• Regions do not share resources and communicate through the Internet.
Cloud Computing: Theory and Practice.
23 Dan C. Marinescu
Chapter 3
Cloud Computing: Theory and Practice.
24 Dan C. Marinescu
Chapter 3
AWS regions and availability zones
• Amazon offers cloud services through a network of data centers on several
continents.
• In each region there are several availability zones interconnected by high-
speed networks.
• An availability zone is a data center consisting of a large number of servers.
• Regions do not share resources and communicate through the Internet.
Cloud Computing: Theory and Practice.
25 Dan C. Marinescu
Chapter 3
Google AppEngine
what is App engine
• Google AppEngine is a scalable runtime environment mostly
devoted to executing Web applications. These 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, 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.
• They can set quotas to contain the costs generated, and
make the application available to the world.
• The languages currently supported are Python, Java, and Go.
Google AppEngine: summary
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.
• There are three types of role: Web role, worker role, and
virtual machine role.
• The Web role is designed to host a Web application, the
worker role is a more generic container of applications and
can be used to perform workload processing, and the
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
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.
• 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.
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.
Manjrasoft Aneka
• Manjrasoft Aneka [165] 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 resource on demand.