PG Cloud Computing Unit-I
PG Cloud Computing Unit-I
UNIT-I: INTRODUCTION
Cloud Computing at a Glance, The Vision of Cloud Computing, Defining a
Cloud, Cloud Computing Reference Model, Characteristics and Benefits,
Challenges Ahead, Historical Developments - Distributed Systems,
Virtualization, Web 2.0, Service-Oriented Computing, Utility-Oriented
Computing, Building Cloud Computing Environments - Application
Development, Infrastructure and System Development, Computing
Platforms and Technologies - Amazon Web Services (AWS), Google
AppEngine, Microsoft Azure, Hadoop, Force.com and Salesforce.com
1. SaaS
Software as a Service (SaaS) is a form of application delivery that relieves
users of the burden of software maintenance while making development and
testing easier for service providers.
The cloud delivery model's top layer is where applications are located. End
customers get access to the services this tier offers via web portals. Because
online software services provide the same functionality as locally installed
computer programs, consumers (users) are rapidly switching from them.
Today, ILMS and other application software can be accessed via the web as a
service.
The cloud consumer has full control over all the cloud services.
The provider has full control over software applications-based services.
The cloud provider has partial control over the implementation of cloud
services.
The consumer has limited control over the implementation of these cloud
services.
2. PaaS
Platform as a Service is a strategy that offers a high level of abstraction to
make a cloud readily programmable in addition to infrastructure-oriented
clouds that offer basic compute and storage capabilities (PaaS). Developers
can construct and deploy apps on a cloud platform without necessarily
needing to know how many processors or how much memory their
applications would use. A PaaS offering that provides a scalable environment
for creating and hosting web applications is Google App Engine, for instance.
The cloud provider has entire rights or control over the provision of cloud
services to consumers.
The cloud consumer has selective control based on the resources they
need or have opted for on the application server, database, or
middleware.
Consumers get environments in which they can develop their applications
or databases. These environments are usually very visual and very easy to
use.
Provides options for scalability and security of the user’s resources.
Services to create workflows and websites.
Services to connect users’ cloud platforms to other external platforms.
3. IaaS
Infrastructure as a Service (IaaS) offers storage and computer resources that
developers and IT organizations use to deliver custom/business solutions.
IaaS delivers computer hardware (servers, networking technology, storage,
and data center space) as a service. It may also include the delivery of OS and
virtualization technology to manage the resources. Here, the more important
point is that IaaS customers rent computing resources instead of buying and
installing them in their data centers. The service is typically paid for on a
usage basis. The service may include dynamic scaling so that if the customers
need more resources than expected, they can get them immediately.
The consumer has full/partial control over the infrastructure of the cloud,
servers, and databases.
The consumer has control over the Virtual Machines' implementation and
maintenance.
The consumer has a choice of already installed VM machines with pre-
installed Operating systems.
The cloud provider has full control over the data centers and the other
hardware involved in them.
It has the ability to scale resources based on the usage of users.
It can also copy data worldwide so that data can be accessed from
anywhere in the world as soon as possible.
Types of Cloud
There are the following 4 types of cloud that you can deploy according to the
organization's needs-
o Public Cloud
o Private Cloud
o Hybrid Cloud
o Community Cloud
Public Cloud
Public cloud is open to all to store and access information via the Internet using
the pay-per-usage method.
In public cloud, computing resources are managed and operated by the Cloud
Service Provider (CSP).
Private Cloud
Hybrid Cloud
Hybrid Cloud is a combination of the public cloud and the private cloud. we can
say:
Hybrid cloud is partially secure because the services which are running on the
public cloud can be accessed by anyone, while the services which are running
on a private cloud can be accessed only by the organization's users.
location or what device they use e.g. PC, mobile phone etc. As infrastructure is
off-site (typically provided by a third-party) and accessed via the Internet, users
can connect from anywhere.
6) Maintenance
Maintenance of cloud computing applications is easier, since they do not need
to be installed on each user's computer and can be accessed from different
places. So, it reduces the cost also.
7) Low Cost
By using cloud computing, the cost will be reduced because to take the services
of cloud computing, IT Company need not to set its own infrastructure and pay-
as-per usage of resources.
8) Services in pay-per-use mode
Application Programming Interfaces (APIs) are provided to the users so that
they can access services on the cloud by using these APIs and pay the charges
as per the usage of services.
What are the benefits of cloud computing?
Flexibility
Users can scale services to fit their needs, customize applications and access
cloud services from anywhere with an internet connection.
Efficiency
Enterprise users can get applications to market quickly, without worrying about
underlying infrastructure costs or maintenance.
Strategic value
Flexibility:
Scalability: Cloud infrastructure scales on demand to support fluctuating
workloads.
Efficiency:
Accessibility: Cloud-based applications and data are accessible from
virtually any internet-connected device.
Pay structure: A “utility” pay structure means users only pay for the
resources they use.
Strategic value:
Streamlined work: Cloud service providers (CSPs) manage underlying
infrastructure, enabling organizations to focus on application
development and other priorities.
Portability
Interoperability
Computing Performance
It is necessary for cloud systems to be reliable and robust because most of the
businesses are now becoming dependent on services provided by third-party.
Cost Management
Even as almost all cloud service providers have a “Pay As You Go” model,
which reduces the overall cost of the resources being used, there are times
when there are huge costs incurred to the enterprise using cloud computing.
When there is under optimization of the resources, let’s say that the servers are
not being used to their full potential, add up to the hidden costs. If there is a
degraded application performance or sudden spikes or overages in the usage, it
adds up to the overall cost. Unused resources are one of the other main reasons
why the costs go up. If you turn on the services or an instance of cloud and
forget to turn it off during the weekend or when there is no current use of it, it
will increase the cost without even using the resources.
High Dependence on Network
Due to the complex nature and the high demand for research working with the
cloud often ends up being a highly tedious task. It requires immense
knowledge and wide expertise on the subject. Although there are a lot of
professionals in the field they need to constantly update themselves. Cloud
computing is a highly paid job due to the extensive gap between demand and
supply. There are a lot of vacancies but very few talented cloud engineers,
developers, and professionals. Therefore, there is a need for upskilling so these
professionals can actively understand, manage and develop cloud-based
applications with minimum issues and maximum reliability.
History of Cloud Computing:
In this, we will discuss the history of Cloud computing. And also cover the
history of client server computing, distributed computing, and cloud
computing.
Before Computing was come into existence, client Server Architecture was
used where all the data and control of client resides in Server side. If a
single user want to access some data, firstly user need to connect to the
server and after that user will get appropriate access. But it has many
disadvantages. So, After Client Server computing, Distributed Computing
was come into existence, in this type of computing all computers are
networked together with the help of this, user can share their resources
when needed. It also has certain limitations. So in order to remove
limitations faced in distributed system, cloud computing was emerged.
During 1961, John MacCharty delivered his speech at MIT that
“Computing Can be sold as a Utility, like Water and Electricity.”
According to John MacCharty it was a brilliant idea. But people at that time
don’t want to adopt this technology. They thought the technology they are
using efficient enough for them. So, this concept of computing was not
appreciated much so and very less will research on it. But as the time fleet
the technology caught the idea after few years this idea is implemented. So,
this is implemented by Salesforce.com in 1999.
This company started delivering an enterprise application over the internet
and this way the boom of Cloud Computing was started.
In 2002, Amazon started Amazon Web Services (AWS), Amazon will
provide storage, computation over the internet. In 2006 Amazon will
launch Elastic Compute Cloud Commercial Service which is open for
Everybody to use.
After that in 2009, Google Play also started providing Cloud Computing
Enterprise Application as other companies will see the emergence of cloud
Computing they also started providing their cloud services. Thus, in 2009,
Microsoft launch Microsoft Azure and after that other companies like
Alibaba, IBM, Oracle, HP also introduces their Cloud Services. In today
the Cloud Computing become very popular and important skill.
Distributed Systems:
Distributed System is a collection of autonomous computer systems that are
physically separated but are connected by a centralized computer network that
is equipped with distributed system software. The autonomous computers will
communicate among each system by sharing resources and files and
performing the tasks assigned to them.
Example of Distributed System:
Any Social Media can have its Centralized Computer Network as its
Headquarters and computer systems that can be accessed by any user and
using their services will be the Autonomous Systems in the Distributed System
Architecture.
Distributed System Software: This Software enables computers to
coordinate their activities and to share the resources such as Hardware,
Software, Data, etc.
Database: It is used to store the processed data that are processed by each
Node/System of the Distributed systems that are connected to the
Centralized network.
As we can see that each Autonomous System has a common Application
that can have its own data that is shared by the Centralized Database
System.
To Transfer the Data to Autonomous Systems, Centralized System should
be having a Middleware Service and should be connected to a Network.
Middleware Services enables some services which are not present in the
local systems or centralized system default by acting as an interface
between the Centralized System and the local systems. By using
components of Middleware Services systems communicate and manage
data.
The Data which is been transferred through the database will be divided
into segments or modules and shared with Autonomous systems for
processing.
The Data will be processed and then will be transferred to the Centralized
system through the network and will be stored in the database.
Characteristics of Distributed System:
Resource Sharing: It is the ability to use any Hardware, Software, or Data
anywhere in the System.
Concurrency: It is naturally present in the Distributed Systems, that deal
with the same activity or functionality that can be performed by separate
users who are in remote locations. Every local system has its independent
Operating Systems and Resources.
Scalability: It increases the scale of the system as a number of processors
communicate with more users by accommodating to improve the
responsiveness of the system.
Fault tolerance: It cares about the reliability of the system if there is a
failure in Hardware or Software, the system continues to operate properly
without degrading the performance the system.
Transparency: It hides the complexity of the Distributed Systems to the
Users and Application programs as there should be privacy in every
system.
Heterogeneity: Networks, computer hardware, operating systems,
programming languages, and developer implementations can all vary and
differ among dispersed system components.
Advantages of Distributed System:
Applications in Distributed Systems are Inherently Distributed
Applications.
Information in Distributed Systems is shared among geographically
distributed users.
Resource Sharing (Autonomous systems can share resources from remote
locations).
It has a better price performance ratio and flexibility.
It has shorter response time and higher throughput.
It has higher reliability and availability against component failure.
Disadvantages of Distributed System:
Relevant Software for Distributed systems does not exist currently.
Security possess a problem due to easy access to data as the resources are
shared to multiple systems.
Networking Saturation may cause a hurdle in data transfer i.e., if there is a
lag in the network then the user will face a problem accessing data.
In comparison to a single user system, the database associated with
distributed systems is much more complex and challenging to manage.
If every node in a distributed system tries to send data at once, the network
may become overloaded.
Applications Area of Distributed System:
Finance and Commerce: Amazon, eBay, Online Banking, E-Commerce
websites.
Information Society: Search Engines, Wikipedia, Social Networking,
Cloud Computing.
Cloud Technologies: AWS, Salesforce, Microsoft Azure, SAP.
Entertainment: Online Gaming, Music, youtube.
Healthcare: Online patient records, Health Informatics.
Education: E-learning.
The machine on which the virtual machine is going to create is known as Host
Machine and that virtual machine is referred as a Guest Machine
Types of Virtualization:
1. Hardware Virtualization.
2. Operating system Virtualization.
3. Server Virtualization.
4. Storage Virtualization.
1) Hardware Virtualization:
The main job of hypervisor is to control and monitoring the processor, memory
and other hardware resources.
Usage:
Usage:
Operating System Virtualization is mainly used for testing the applications on
different platforms of OS.
3) Server Virtualization:
Usage:
Server virtualization is done because a single physical server can be divided into
multiple servers on the demand basis and for balancing the load.
4) Storage Virtualization:
Usage:
Web 2.0:
2004 When the word Web 2.0 become famous due to the First Web 2.0
conference (later known as the Web 2.0 summit) held by Tim O’Reilly
and Dale Dougherty, the term was coined by Darcy DiNucci in 1999.
Web 2.0 refers to worldwide websites which highlight user-generated
content, usability, and interoperability for end users.
Web 2.0 is also called the participative social web. It does not refer to a
modification to any technical specification, but to modify the way Web
pages are designed and used. The transition is beneficial but it does not
seem that when the changes occur. Interaction and collaboration with
each other are allowed by Web 2.0 in a social media dialogue as the
creator of user-generated content in a virtual community. Web 2.0 is an
enhanced version of Web 1.0.
Web browser technologies are used in Web 2.0 development and it
includes AJAX and JavaScript frameworks.
Recently, AJAX and JavaScript frameworks have become very popular
means of creating web 2.0 sites.
Service-Oriented Computing
Service Provider and Service consumer are the two major roles within SOA.
1. Service provider: The service provider is the maintainer of the service and the
organization that makes available one or more services for others to use. To
advertise services, the provider can publish them in a registry, together with a
service contract that specifies the nature of the service, how to use it, the
requirements for the service, and the fees charged.
2. Service consumer: The service consumer can locate the service metadata in the
registry and develop the required client components to bind and use the service.
Services might aggregate information and data retrieved from other services or
create workflows of services to satisfy the request of a given service consumer.
This practice is known as service orchestration Another important interaction
pattern is service choreography, which is the coordinated interaction of services
without a single point of control
Advantages of SOA:
Disadvantages of SOA:
Application Development:
Cloud applications are software that users access primarily through the internet,
meaning at least some of it is managed by a server and not users' local
machines. Cloud-native application development strategies help development
teams design apps with consistent experiences (for front-end users and back-end
operations teams) across any IT infrastructure: physical, virtual, or cloud-based.
Cloud Computing has its applications in almost all the fields such as business,
entertainment, data storage, social networking, management, entertainment,
education, art and global positioning system, etc. Some of the widely famous
cloud computing applications are discussed here in this tutorial:
Business Applications
Cloud computing has made businesses more collaborative and easy by
incorporating various apps such as MailChimp, Chatter, Google Apps for
business, and Quickbooks.
SN Application Description
1
MailChimp
It offers an e-mail publishing platform. It is widely employed by the businesses to
design and send their e-mail campaigns.
2
Chatter
Chatter app helps the employee to share important information about organization
in real time. One can get the instant feed regarding any issue.
3
Google Apps for Business
Google offers creating text documents, spreadsheets, presentations, etc.,
on Google Docs which allows the business users to share them in collaborating
manner.
4
Quickbooks
It offers online accounting solutions for a business. It helps in monitoring cash
flow, creating VAT returns and creating business reports.
SN Application Description
1
Box.com
Box.com offers drag and drop service for files. The users need to drop the files
into Box and access from anywhere.
2
Mozy
Mozy offers online backup service for files to prevent data loss.
3
Joukuu
Joukuu is a web-based interface. It allows to display a single list of contents for
files stored in Google Docs, Box.net and Dropbox.
Management Applications
There are apps available for management task such as time tracking, organizing
notes. Applications performing such tasks are discussed below:
SN Application Description
1
Toggl
It helps in tracking time period assigned to a particular project.
2
Evernote
It organizes the sticky notes and even can read the text from images which helps
the user to locate the notes easily.
3
Outright
It is an accounting app. It helps to track income, expenses, profits and losses in
real time.
Social Applications
There are several social networking services providing websites such as Facebook,
Twitter, etc.
SN Application Description
1
Facebook
It offers social networking service. One can share photos, videos, files, status and
much more.
2
Twitter
It helps to interact with the public directly. One can follow any celebrity,
organization and any person, who is on twitter and can have latest updates
regarding the same.
Entertainment Applications
SN Application Description
1
Audio box.fm
It offers streaming service. The music files are stored online and can be played
from cloud using the own media player of the service.
Art Applications
SN Application Description
1
Moo
It offers art services such as designing and printing business cards,
postcards and mini cards.
Infrastructure and System Development
Cloud infrastructure consists of servers, storage devices, network, cloud
management software, deployment software, and platform virtualization.
Hypervisor
Hypervisor is a firmware or low-level program that acts as a Virtual Machine
Manager. It allows to share the single physical instance of cloud resources
between several tenants.
Management Software
It helps to maintain and configure the infrastructure.
Deployment Software
It helps to deploy and integrate the application on the cloud.
Network
It is the key component of cloud infrastructure. It allows to connect cloud
services over the Internet. It is also possible to deliver network as a utility over
the Internet, which means, the customer can customize the network route and
protocol.
Server
The server helps to compute the resource sharing and offers other services such
as resource allocation and de-allocation, monitoring the resources, providing
security etc.
Storage
Cloud keeps multiple replicas of storage. If one of the storage resources fails,
then it can be extracted from another one, which makes cloud computing more
reliable.
Infrastructural Constraints
AWS is well known for its storage and compute on demand services, named as
Elastic Compute Cloud (EC2) and Simple Storage Service (S3).
EC2 offers customizable virtual hardware to the end user which can be utilize as
the base infrastructure for deploying computing systems on the cloud. It is
likely to choose from a large variety of virtual hardware configurations
including GPU and cluster instances. Either the AWS console, which is a wide-
ranged Web portal for retrieving AWS services, or the web services API
available for several programming language is used to deploy the EC2
instances. EC2 also offers the capability of saving an explicit running instance
as image, thus allowing users to create their own templates for deploying
system. S3 stores these templates and delivers persistent storage on demand. S3
is well ordered into buckets which contains objects that are stored in binary
form and can be grow with attributes. End users can store objects of any size,
from basic file to full disk images and have them retrieval from anywhere. In
addition, EC2 and S3, a wide range of services can be leveraged to build virtual
computing system including: networking support, caching system, DNS,
database support, and others.
Google AppEngine –
Google AppEngine is a scalable runtime environment frequently dedicated to
executing web applications. These utilize benefits of the large computing
infrastructure of Google to dynamically scale as per the demand. AppEngine
offers both a secure execution environment and a collection of which simplifies
the development if scalable and high-performance Web applications. These
services include: in-memory caching, scalable data store, job queues,
messaging, and corn tasks. Developers and Engineers can build and test
applications on their own systems by using the AppEngine SDK, which
replicates the production runtime environment, and helps test and profile
applications. On completion of development, Developers can easily move their
applications to AppEngine, set quotas to containing the cost generated, and
make it available to the world. Currently, the supported programming languages
are Python, Java, and Go.
Even with all the cloud computing benefits that Google App Engine ushers in,
there are a few implementation challenges.
1. Control
What does a user do if there is a problem related to the infrastructure? Wait for
Google to solve it? Unfortunately, Back-end infrastructural setup, along with its
advantages, also brings in a limitation of problem-solving.
2. Customer Support
This is one aspect that has been under scrutiny. Users are known to have been
dissatisfied with the customer support facilities.
3. Porting
Several times, developers have access to the Google App Engine file system
only in a limited read-only manner, creating issues. Writing to local files is a
hurdle many times. Moreover, performance is affected because one physical
server could be playing host to many separate and unrelated app engine users.
5. Expense
Some users have an issue that GAE can be costlier than self-hosted
environments.
Microsoft Azure –
Microsoft Azure is a Cloud operating system and a platform in which user can
develop the applications in the cloud. Generally, a scalable runtime environment
for web applications and distributed applications is provided. Application in
Azure are organized around the fact of roles, which identify a distribution unit
for applications and express the application’s logic. Azure provides a set of
additional services that complement application execution such as support for
storage, networking, caching, content delivery, and others.
Hadoop –
Apache Hadoop is an open source framework that is appropriate for processing
large data sets on commodity hardware.
This model provides two fundamental operations for data processing: map and
reduce.
Yahoo! Is the sponsor of the Apache Hadoop project, and has put considerable
effort in transforming the project to an enterprise-ready cloud computing
platform for data processing.
Currently, Yahoo! Manges the world’s largest Hadoop cluster, which is also
available to academic institutions.