CLOUD COMPUTING
1ST IA QUESTION BANK
1. Explain the Cloud-computing Reference model with a neat diagram.
Ans - A fundamental characteristic of cloud computing is the capability to deliver, on demand, a
variety of IT services that are quite diverse from each other. This variety creates different perceptions
of what cloud computing is among users. Despite this lack of uniformity, it is possible to classify cloud
computing services offerings into three major categories:
Infrastructure-as-a-Service (IaaS),
Platform-as-a-Service (PaaS), and
Software-as-a-Service (SaaS).
These categories are related to each other as described in Figure 1.5
The model organizes the wide range of cloud computing services into a layered view that walks the
computing stack from bottom to top.
At the base of the stack, Infrastructure-as-a-Service solutions deliver infrastructure on demand in the
form of virtual hardware, storage, and networking. Virtual hardware is utilized to provide compute
on demand in the form of virtual machine instances. These are created at users’ request on the
provider’s infrastructure, and users are given tools and interfaces to configure the software stack
installed in the virtual machine. The pricing model is usually defined in terms of dollars per hour.
Virtual storage is delivered in the form of raw disk space or object store. Virtual networking identifies
the collection of services that manage the networking among virtual instances and their connectivity
to the Internet or private networks.
Platform-as-a-Service solutions are the next step in the stack. They deliver scalable and elastic
runtime environments on demand and host the execution of applications. These services are backed
by a core middleware platform that is responsible for creating the abstract environment where
applications are deployed and executed. It is the responsibility of the service provider to provide
scalability and to manage fault tolerance, while users are requested to focus on the logic of the
application developed by leveraging the provider’s APIs and libraries. This approach increases the
level of abstraction at which cloud computing is leveraged but also constrains the user in a more
controlled environment.
At the top of the stack, Software-as-a-Service solutions provide applications and services on demand.
Most of the common functionalities of desktop applications—such as office automation, document
management, photo editing, and customer relationship management (CRM) software—are
replicated on the provider’s infrastructure and made more scalable and accessible through a browser
on demand. These applications are shared across multiple users whose interaction is isolated from
the other users. The SaaS layer is also the area of social networking Websites, which leverage cloud-
based infrastructures to sustain the load generated by their popularity.
2. List and explain the different cloud computing platforms and technologies.
Ans - 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. S3 is organized into buckets; these are
containers of objects that are stored in binary form. Users can store objects of any size, from simple
files to entire disk images, and have them accessible from everywhere.
Google AppEngine
Google AppEngine is a scalable runtime environment mostly devoted to executing Web applications.
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, and make
the application available to the world. The languages currently supported are Python, Java.
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. Currently, 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.
Hadoop
Apache Hadoop is an open-source framework that is suited for processing large data sets on
commodity hardware. 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.
[Link] and [Link]
[Link] is a cloud computing platform for developing social enterprise applications. [Link]
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. The [Link] 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 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).
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.
3. Define cloud computing. Describe the characteristics and benefits of cloud computing. List the
challenges in cloud computing.
Ans - Characteristics and benefits
Cloud computing has some interesting characteristics that bring benefits to both cloud service
consumers (CSCs) and cloud service providers (CSPs). These characteristics are:
• No up-front commitments
• On-demand access
• Nice pricing
• Simplified application acceleration and scalability
• Efficient resource allocation
• Energy efficiency
• Seamless creation and use of third-party services
No Up-Front Commitments:
Cloud services allow you to start small without significant initial investments. You don't need to buy
hardware or invest in long-term infrastructure contracts, which lowers the barrier to entry.
On-Demand Access:
Cloud resources are available whenever you need them. Whether it's compute power, storage, or
specialized services, you can quickly provision these resources on-demand without waiting for
physical setup.
Nice Pricing:
Many cloud providers offer a pay-as-you-go model, where you only pay for the resources you actually
use. This flexible pricing model can result in significant cost savings compared to traditional, fixed-
cost IT investments.
Simplified Application Acceleration and Scalability:
Cloud platforms provide built-in tools and frameworks to accelerate application development and
deployment. Moreover, they offer automated scaling capabilities, so your applications can handle
increased loads seamlessly.
Efficient Resource Allocation:
Cloud providers optimize resource allocation by pooling hardware across many customers. This leads
to better utilization of computing resources, reducing waste and maximizing performance.
Energy Efficiency:
By leveraging economies of scale and advanced data center designs, cloud providers can achieve
higher energy efficiency. This not only lowers operational costs but also reduces the environmental
footprint compared to traditional on-premises data centers.
Seamless Creation and Use of Third-Party Services:
The cloud ecosystem supports easy integration with a wide range of third-party services and APIs.
This flexibility enables developers to enhance their applications with additional functionalities
without building everything from scratch.
Challenges ahead
Challenges’ concerning the dynamic provisioning of cloud computing services and resources arises.
For example, in the Infrastructure-as-a-Service domain, how many resources need to be provisioned,
and for how long should they be used, in order to maximize the benefit? Technical challenges also
arise for cloud service providers for the management of large computing infrastructures and the use
of virtualization technologies on top of them.
Security in terms of confidentiality, secrecy, and protection of data in a cloud environment is another
important challenge. Organizations do not own the infrastructure they use to process data and store
information. This condition poses challenges for confidential data, which organizations cannot afford
to reveal.
Legal issues may also arise. These are specifically tied to the ubiquitous nature of cloud computing,
which spreads computing infrastructure across diverse geographical locations. Different legislation
about privacy in different countries may potentially create disputes as to the rights that third parties
(including government agencies) have to your data.
4. Explain how the two technologies grid computing and web 2.0 has contributed for cloud
computing.
Ans – Grid Computing
Grid computing appeared in the early 1990s as an evolution of cluster computing. In an analogy to
the power grid, grid computing proposed a new approach to access large computational power, huge
storage facilities, and a variety of services. Users can “consume” resources in the same way as they
use other utilities such as power, gas, and water. Grids initially developed as aggregations of
geographically dispersed clusters by means of Internet connections. These clusters belonged to
different organizations, and arrangements were made among them to share the computational
power. Several developments made possible the diffusion of computing grids: (a) clusters became
quite common resources; (b) they were often underutilized; (c) new problems were requiring
computational power that went beyond the capability of single clusters; and (d) the improvements in
networking and the diffusion of the Internet made possible long-distance, high-bandwidth
connectivity. All these elements led to the development of grids, which now serve a multitude of
users across the world.
Web 2.0
The Web is the primary interface through which cloud computing delivers its services. At present, the
Web encompasses a set of technologies and services that facilitate interactive information sharing,
collaboration, user-centered design, and application composition. This evolution has transformed the
Web into a rich platform for application development and is known as Web 2.0. This term captures a
new way in which developers architect applications and deliver services through the Internet and
provides new experience for users of these applications and services.
Web 2.0 brings interactivity and flexibility into Web pages, providing enhanced user experience by
gaining Web-based access to all the functions that are normally found in desktop applications. These
capabilities are obtained by integrating a collection of standards and technologies such as XML,
Asynchronous JavaScript and XML (AJAX), Web Services, and others.
5. Briefly Explain the major distributed system technologies that led to cloud computing.
Ans - Distributed systems: Clouds are essentially large distributed computing facilities that make
available their services to third parties on demand. As a reference, we consider the characterization
of a distributed system proposed by Tanenbaum et al. [1]: A distributed system is a collection of
independent computers that appears to its users as a single coherent system.
Three major milestones have led to cloud computing: mainframe computing, cluster computing,
and grid computing.
Mainframes.
These were the first examples of large computational facilities leveraging multiple processing units.
Mainframes were powerful, highly reliable computers specialized for large data movement and
massive input/output (I/O) operations. They were mostly used by large organizations for bulk data
processing tasks such as online transactions, enterprise resource planning, and other operations
involving the processing of significant amounts of data. One of the most attractive features of
mainframes was the ability to be highly reliable computers that were “always on” and capable of
tolerating failures transparently. No system shutdown was required to replace failed components,
and the system could work without interruption. Now their popularity and deployments have
reduced, but evolved versions of such systems are still in use for transaction processing (such as
online banking, airline ticket booking, supermarket and telcos, and government services).
Clusters.
Cluster computing started as a low-cost alternative to the use of mainframes and supercomputers.
The technology advancement that created faster and more powerful mainframes and
supercomputers eventually generated an increased availability of cheap commodity machines as a
side effect. These machines could then be connected by a high-bandwidth network and controlled by
specific software tools that manage them as a single system. Built by commodity machines, they
were cheaper than mainframes and made high-performance computing available to a large number
of groups, including universities and small research labs. Moreover, clusters could be easily extended
if more computational power was required.
Grids.
Grid computing appeared in the early 1990s as an evolution of cluster computing. In an analogy to
the power grid, grid computing proposed a new approach to access large computational power, huge
storage facilities, and a variety of services. Users can “consume” resources in the same way as they
use other utilities such as power, gas, and water. Grids initially developed as aggregations of
geographically dispersed clusters by means of Internet connections.
These clusters belonged to different organizations, and arrangements were made among them to
share the computational power. Several developments made possible the diffusion of computing
grids: (a) clusters became quite common resources; (b) they were often underutilized; (c) new
problems were requiring computational power that went beyond the capability of single clusters;
and (d) the improvements in networking and the diffusion of the Internet made possible long-
distance, high-bandwidth connectivity. All these elements led to the development of grids, which
now serve a multitude of users across the world.
6. What are the uses of creating data center? Explain practical examples of cloud
computing.
7. Explain different hardware architectures for parallel processing.
Ans - The core elements of parallel processing are CPUs. Based on the number of instruction and
data streams that can be processed simultaneously, computing systems are classified into the
following four categories:
• Single-instruction, single-data (SISD) systems
An SISD computing system is a uniprocessor machine capable of executing a single
instruction, which operates on a single data stream.
In SISD, machine instructions are processed sequentially; hence computers adopting this
model are popularly called sequential computers.
Most conventional computers are built using the SISD model. All the instructions and data to
be processed have to be stored in primary memory.
• Single-instruction, multiple-data (SIMD) systems
An SIMD computing system is a multiprocessor machine capable of executing the same
instruction on all the CPUs but operating on different data streams .
Machines based on an SIMD model are well suited to scientific computing since they involve
lots of vector and matrix operations.
• Multiple-instruction, single-data (MISD) systems
An MISD computing system is a multiprocessor machine capable of executing different
instructions on different PEs but all of them operating on the same data set perform different
operations on the same data set.
Machines built using the MISD model are not useful in most of the applications; a few
machines are built, but none of them are available commercially.
They became more of an intellectual exercise than a practical configuration
• Multiple-instruction, multiple-data (MIMD) systems
An MIMD computing system is a multiprocessor machine capable of executing multiple
instructions on multiple data sets .
Each PE in the MIMD model has separate instruction and data streams; hence machines built
using this model are well suited to any kind of application.
Unlike SIMD and MISD machines, PEs in MIMD machines work asynchronously.
MIMD machines are broadly categorized into shared-memory MIMD and distributed-
memory MIMD based on the way PEs are coupled to the main memory.
8. If you are designing a weather forecasting system, how would you decide between
using a parallel or distributed computing approach?
9. Define component and connector. Explain data center architectural style.
Ans - A component represents a unit of software that encapsulates a function or a feature of the
system. Examples of components can be programs, objects, processes, pipes, and filters.
A connector is a communication mechanism that allows cooperation and coordination among
components. Connectors are not encapsulated in a single entity, but they are implemented in a
distributed manner over many system components.
Data-centered architectures
• In data-centered architecture, the data is centralized and accessed frequently by other
components, which modify data.
• The main purpose of this style is to achieve integrity of data.
• The most well-known examples of the data-centered architecture is a database architecture
• For example, a set of related tables with fields and data types in an RDBMS.
• Another example of data-centered architectures is the web architecture which has a common data
schema (i.e. meta-structure of the Web)
Types of Components: There are two types of components −
• A central data structure or data store or data repository, which is responsible for providing
permanent data storage. It represents the current state.
• A data accessor or a collection of independent components that operate on the central data store,
perform computations, and might put back the results.
Interactions or communication between the data accessors is only through the data store. The data is
the only means of communication among clients.
The flow of control differentiates the architecture into two categories −
• Repository Architecture Style
• Blackboard Architecture Style
Repository Architecture Style -
In Repository Architecture Style, the data store is passive and the clients (software components or
agents) of the data store are active, which control the logic flow.
• The client sends a request to the system to perform actions (e.g. insert data).
• The computational processes are independent and triggered by incoming requests.
• If the types of transactions in an input stream of transactions trigger selection of processes to
execute, then it is traditional database or repository architecture, or passive repository.
• This approach is widely used in DBMS, library information system.
• Blackboard Architecture Style
In Blackboard Architecture Style, the data store is active, and its clients are passive.
Therefore, the logical flow is determined by the current data status in data store.
Parts of Blackboard Model:
The blackboard model is usually presented with three major parts −
1. Knowledge Sources (KS)
2. Blackboard Data Structure
3. Control
1. Knowledge Sources (KS)
Knowledge Sources, also known as Listeners or Subscribers are distinct and independent units. They
solve parts of a problem and aggregate partial result. Interaction among knowledge sources takes
place uniquely through the blackboard.
2. Blackboard Data Structure
The problem-solving state data is organized into an application-dependent hierarchy. Knowledge
sources make changes to the blackboard that lead incrementally to a solution to the problem.
3. Control: Control manages tasks and checks the work state.
10. Given a multi-core processor and a cluster of computers, analyze the benefits and
limitations of using parallel computing versus distributed computing.
11. Explain client server architectural style.
Ans – The client/server model features two major components: a server and a client. These two
components interact with each other through a network connection using a given protocol. The
communication is unidirectional: The client issues a request to the server, and after processing the
request the server returns a response. There could be multiple client components issuing requests to
a server that is passively waiting for them. Hence, the important operations in the client-server
paradigm are request, accept (client side), and listen and response (server side).
For the client design, we identify two major models:
a. Thin-client model.
b. Fat-client model.
a. Thin-client model. In this model, the load of data processing and transformation is put on the
server side, and the client has a light implementation that is mostly concerned with retrieving and
returning the data it is being asked for, with no considerable further processing.
b. Fat-client model. In this model, the client component is also responsible for processing and
transforming the data before returning it to the user, whereas the server features a relatively light
implementation that is mostly concerned with the management of access to the data.
1) Two-tier architecture
This architecture partitions the systems into two tiers, which are located one in the client component
and the other on the server. The client is responsible for the presentation tier by providing a user
interface; the server concentrates the application logic and the data store into a single tier. The
server component is generally deployed on a powerful machine that is capable of processing user
requests, accessing data, and executing the application logic to provide a client with a response. This
architecture is suitable for systems of limited size and suffers from scalability issues.
2) Three-tier architecture/N-tier architecture
The three-tier architecture separates the presentation of data, the application logic, and the data
storage into three tiers. This architecture is generalized into an N-tier model in case it is necessary to
further divide the stages composing the application logic and storage tiers. This model is generally
more scalable than the two-tier one because it is possible to distribute the tiers into several
computing nodes, thus isolating the performance bottlenecks.
12. Briefly explain the technologies of distributed system.