Cloud Computing
Cloud Computing
Cloud Computing
Cloud Computing is defined as storing and accessing of data and computing services over the
internet. It doesn't store any data on your personal computer. It is the on-demand availability
of computer services like servers, data storage, networking, databases, etc. The main purpose
of cloud computing is to give access to data centers to many users. Users can also access data
from a remote server. Cloud computing is the delivery of different services through the Internet.
These resources include tools and applications like data storage, servers, databases,
networking, and software.
Whenever you travel through a bus or train, you take a ticket for your destination and hold back
to your seat till you reach your destination. Likewise other passengers also takes ticket and
travel in the same bus with you and it hardly bothers you where they go. When your stop comes
you get off the bus thanking the driver. Cloud computing is just like that bus, carrying data and
information for different users and allows to use its service with minimal cost.
Rather than keeping files on a proprietary hard drive or local storage device, cloud-based
storage makes it possible to save them to a remote database. As long as an electronic device
has access to the web, it has access to the data and the software programs to run it. Cloud
computing is a popular option for people and businesses for a number of reasons including cost
savings, increased productivity, speed and efficiency, performance, and security.
Cloud computing is a virtualization-based technology that allows us to create, configure, and
customize applications via an internet connection. The cloud technology includes a
development platform, hard disk, software application, and database.
The term cloud refers to a network or the Internet. We can say that Cloud is something, which
is present at remote location. It is a technology that uses remote servers on the internet to store,
manage, and access data online rather than local drives. The data can be anything such as files,
images, documents, audio, video, and more. Cloud can provide services over public and private
networks, i.e., WAN, LAN or VPN (Virtual Private Network).
There are the following operations that we can do using cloud computing:
• Developing new applications and services
• Storage, back up, and recovery of data
• Hosting blogs and websites
• Delivery of software on demand
• Analysis of data
• Streaming videos and audios
Applications such as e-mail, web conferencing, customer relationship management (CRM)
execute on cloud.
Cloud Computing refers to manipulating, configuring, and accessing the hardware and software
resources remotely. It offers online data storage, infrastructure, and application.
Cloud computing offers platform independency, as the software is not required to be installed
locally on the PC. Hence, the Cloud Computing is making our business applications mobile
and collaborative.
Cloud computing metaphor: the group of networked elements providing services need not be
individually addressed or managed by users; instead, the entire provider-managed suite of
hardware and software can be thought of as an amorphous cloud.
Computing
The ACM (Association for Computing Machinery) Computing Curricula 2005 and 2020
defined "computing" as follows:
"In a general way, we can define computing to mean any goal-oriented activity requiring,
benefiting from, or creating computers. Thus, computing includes designing and building
hardware and software systems for a wide range of purposes; processing, structuring, and
managing various kinds of information; doing scientific studies using computers; making
computer systems behave intelligently; creating and using communications and entertainment
media; finding and gathering information relevant to any particular purpose, and so on. The list
is virtually endless, and the possibilities are vast."
NIST (National Institute of Standards and Technology) Definition of Cloud Computing
Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access
to a shared pool of configurable computing resources (e.g., networks, servers, storage,
applications, and services) that can be rapidly provisioned and released with minimal
management effort or service provider interaction. This cloud model is composed of five
essential characteristics, three service models, and four deployment models.
Essential Characteristics:
On-demand self-service. A consumer can unilaterally provision computing capabilities, such
as server time and network storage, as needed automatically without requiring human
interaction with each service provider.
Broad network access. Capabilities are available over the network and accessed through
standard mechanisms that promote use by heterogeneous thin or thick client platforms (e.g.,
mobile phones, tablets, laptops, and workstations).
Resource pooling. The provider’s computing resources are pooled to serve multiple consumers
using a multi-tenant model, with different physical and virtual resources dynamically assigned
and reassigned according to consumer demand. There is a sense of location independence in
that the customer generally has no control or knowledge over the exact location of the provided
resources but may be able to specify location at a higher level of abstraction (e.g., country,
state, or datacenter). Examples of resources include storage, processing, memory, and network
bandwidth.
Rapid elasticity. Capabilities can be elastically provisioned and released, in some cases
automatically, to scale rapidly outward and inward commensurate with demand. To the
consumer, the capabilities available for provisioning often appear to be unlimited and can be
appropriated in any quantity at any time.
Measured service. Cloud systems automatically control and optimize resource use by
leveraging a metering capability at some level of abstraction appropriate to the type of service
(e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be
monitored, controlled, and reported, providing transparency for both the provider and
consumer of the utilized service.
Trends in Computing
• Distributed Computing
• Grid Computing
• Cluster Computing
• Utility Computing
• Cloud Computing
Centralized System
Centralized systems are systems that use client/server architecture where one or more client
nodes are directly connected to a central server. This is the most commonly used type of system
in many organisations where client sends a request to a company server and receives the
response.
Example – Bitcoin. Let’s take bitcoin for example because it’s the most popular use case of
decentralized systems. No single entity/organisation owns the bitcoin network. The network is
a sum of all the nodes who talk to each other for maintaining the amount of bitcoin every
account holder has.
Characteristics of Decentralized System
• Lack of a global clock: Every node is independent of each other and hence, have different
clocks that they run and follow.
• Multiple central units (Computers/Nodes/Servers): More than one central unit which can
listen for connections from other nodes.
• Dependent failure of components: one central node failure causes a part of system to fail;
not the whole system.
Architecture of Decentralized System
peer-to-peer architecture – all nodes are peers of each other. No one node has supremacy over
other nodes.
master-slave architecture – One node can become a master by voting and help in coordinating
of a part of the system but this does not mean the node has supremacy over the other node
which it is coordinating.
Applications of Decentralized System
• Private networks – peer nodes joined with each other to make a private network.
• Cryptocurrency – Nodes joined to become a part of a system in which digital currency is
exchanged without any trace and location of who sent what to whom.
Use Cases
• Blockchain
• Decentralized databases – Entire database split in parts and distributed to different nodes
for storage and use. For example, records with names starting from ‘A’ to ‘K’ in one node,
‘L’ to ‘N’ in second node and ‘O’ to ‘Z’ in third node.
• Cryptocurrency
Distributed Systems
A distributed system is a collection of independent computers that appears to its users as a
single coherent system.
Early computing was performed on a single processor. Uni-processor computing can be called
centralized computing.
Centralized data networks are those that maintain all the data in a single computer, location
and to access the information you must access the main computer of the system, known as
“server”.
On the other hand, a distributed data network works as a single logical data network, installed
in a series of computers (nodes) located in different geographic locations and that are not
connected to a single processing unit, but are fully connected to provide integrity and
accessibility to information from any point. In this system all the nodes contain information
and all the clients of the system are in equal condition. In this way, distributed data networks
can perform autonomous processing.
Maintenance -Centralized networks are the easiest to maintain since they have only one point
of failure, this is not the case of the distributed ones, which are more difficult to maintain.
Stability - The centralized ones are very unstable, since any problem that affects the central
server can generate chaos throughout the system. However, the distributed ones are more
stable, by storing the totality of the system information in a large number of nodes that maintain
equal conditions with each other.
Security - Distributed networks have higher level of security, since to carry out malicious
attacks would have to attack a large number of nodes at the same time. As the information is
distributed among the nodes of the network, in this case if a legitimate change is made it will
be reflected in the rest of the nodes of the system that will accept and verify the new
information; but if some illegitimate change is made, the rest of the nodes will be able to detect
it and will not validate this information. This consensus between nodes protects the network
from deliberate attacks or accidental changes of information.
Speed - Distributed systems have an advantage over centralized systems in terms of network
speed, since as the information is not stored in a central location, a bottleneck is less likely, in
which the number of people attempting to access a server is larger than it can support, causing
waiting times and slowing down the system.
Scalability - Centralized systems tend to present scalability problems since the capacity of the
server is limited and cannot support infinite traffic. Distributed systems have greater scalability,
due to the large number of nodes that support the network.
Availability – In centralized systems, if there are several requests, the server can break down
and no longer respond. But distributes systems can withstand significant pressure on the
network. All the nodes in the network have the data. Then, the requests are distributed among
the nodes. Therefore, the pressure does not fall on a computer, but on the entire network. In
this case, the total availability of the network is much greater than in the centralized one.
Reliability – In centralized system, server failure can cause failure of the entire system. But in
distributed system, if one machine crashes, the system as a whole can still survive. Higher
availability and improved reliability can be achieved in distributed systems.
Distributed Applications
Applications that consist of a set of processes that are distributed across a network of machines
and work together as an ensemble to solve a common problem. There are several applications
which coordinate among themselves to address a particular problem.
Not only in the past; now also, it is mostly, several applications are client server type of things,
resource management centralized at the server. So, we want to make it in a distributed fashion.
There is peer to peer computing which represents a movement towards more truly distributed
applications.
In client-server model, different clients invoke a particular server:
Peer-to-Peer
Peer-to-peer (P2P) computing or networking is a distributed application architecture that
partitions tasks or workloads between peers. Peers are equally privileged, equipotent
participants in the application. They are said to form a peer-to-peer network of nodes.
Peers make a portion of their resources, such as processing power, disk storage or network
bandwidth, directly available to other network participants, without the need for central
coordination by servers or stable hosts. Peers are both suppliers and consumers of resources,
in contrast to the traditional client-server model in which the consumption and supply of
resources is divided.
A peer-to-peer (P2P) network in which interconnected nodes ("peers") share resources amongst
each other without the use of a centralized administrative system:
A network based on the client-server model, where individual clients request services and
resources from centralized servers:
There are different peers, there are different applications which are running in the peers, and
these applications talk to each other to realize a particular job.
Grid Computing
Grid computing is a group of networked computers which work together as a virtual
supercomputer to perform large tasks, such as analysing huge sets of data or weather modeling.
The term grid computing originated in the early 1990s as a metaphor for making computer
power as easy to access as an electric power grid. An electrical grid is an interconnected
network for delivering electricity from producers to consumers. It consists of generating
stations, electrical substations, high voltage transmission lines, distribution lines that connect
individual customers.
Grid computing is the use of widely distributed computer resources to reach a common goal.
Grid computing is distinguished from conventional high-performance computing systems such
as cluster computing in that grid computers have each node set to perform a different
task/application. Grid computers also tend to be more heterogeneous and geographically
dispersed (thus not physically coupled) than cluster computers. Although a single grid can be
dedicated to a particular application, commonly a grid is used for a variety of purposes. Grids
are a form of distributed computing whereby a "super virtual computer" is composed of many
networked loosely coupled computers acting together to perform large tasks.
Grid Computing can be defined as a network of computers working together to perform a task
that would rather be difficult for a single machine. All machines on that network work under
the same protocol to act like a virtual supercomputer. The task that they work on may include
analysing huge datasets or simulating situations which require high computing power.
Computers on the network contribute resources like processing power and storage capacity to
the network.
Grid Computing is a subset of distributed computing, where a virtual super computer comprises
of machines on a network connected by some bus, mostly Ethernet or sometimes the Internet.
It can also be seen as a form of Parallel Computing where instead of many CPU cores on a
single machine, it contains multiple cores spread across various locations.
A form of networking. Unlike conventional networks that focus on communication among
devices, grid computing harnesses unused processing cycles of all computers in a network for
solving problems too intensive for any stand-alone machine.
Grid computing represents a distributed computing approach that attempts to achieve high
computational performance by a non-traditional means. Rather than achieving high
performance computational needs by having large clusters of similar computing resources or a
single high-performance system, such as a supercomputer, grid computing attempts to harness
the computational resources of a large number of dissimilar devices. Grid computing typically
leverages the spare CPU cycles of devices that are not currently needed for a system’s own
needs, and then focus them on the particular goal of the grid computing resources. While these
few spare cycles from each individual computer might not mean much to the overall task, in
aggregate, the cycles are significant.
Grid computing is a computing infrastructure that provides dependable, consistent, pervasive
and inexpensive access to computational capabilities.
Grid computing enables the virtualization of distributed computing and data resources such as
processing, network bandwidth and storage capacity to create a single system image, granting
users and applications seamless access to vast IT capabilities. Just as an Internet user views a
unified instance of content via the Web, a grid user essentially sees a single, large virtual
computer.
b) Technology benefits
• Optimise existing infrastructure
• Increase access to data and collaboration
Grid Components