0% found this document useful (0 votes)
5 views

CC Unit-3.1 Notes

Uploaded by

munisrikar0511
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views

CC Unit-3.1 Notes

Uploaded by

munisrikar0511
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 7

P.Srinivasulu, Assoc.

Professor, Cloud Computing


Dept. of CSE, PBRVITS, Kavali.
UNIT- III
Cloud Application Design: Design Considerations, Reference Architectures,
Cloud Application Design Methodologies, Data Storage Approaches,
Multimedia Cloud: Introduction, Case Study: Live Video Streaming App,
Streaming Protocols, Case Study: Video Transcoding APP.

Cloud Application Design


1)Introduction: -
Web applications have evolved significantly in the past decade and are now quite dynamic
in nature allowing users to interact and collaborate, include user generated content such as
comments and discussions, integrate social networks and multimodal content such as text, images,
audio, video, presentations, etc., in various formats.
Due to this dynamic nature of modern web applications, the traffic patterns for such
applications are becoming more and more unpredictable.
Some applications experience seasonal variations in their workloads, e.g., e-Commerce
websites see elevated user traffic in holiday seasons.
Traditional approaches that were based on the ’one size fits all’ paradigm no longer
work for modern applications.
Here will learn about the design considerations for cloud applications, the reference
architectures for various types of applications and design methodologies such as SOA, CCM and
MVC.

2) Design Considerations for Cloud Applications


There are important design considerations for developing applications that can leverage the benefits of cloud
computing. Some of them are shown below:
a)Scalability
b)Reliability & Availability
c)Security
d)Maintenance & Upgradation
e)Performance

a)Scalability :-
Scalability is an important factor that drives the application designers to move to cloud
computing environments. Building applications that can serve millions of users without taking a hit
on their performance has always been challenging.
With the growth of cloud computing application designers can provision adequate resources
to meet their workload levels. However, simply provisioning more and more resources may not bring
performance gains if the applications are not designed to scale well.
Traditional approaches were based on either over- provisioning of resources to handle the
peak workload levels expected or provisioning based on average workload levels.
Both approaches have their disadvantages.
-While the over- provisioning approach leads to underutilization of resources and increased costs,
-the approach based on average workload levels can lead to traffic overloads, slow
response times, low throughputs and hence loss of opportunity to serve the customers.
In order to leverage the benefits of cloud computing such as dynamic scaling, the following
design considerations must be kept in mind:
 Loose coupling of components: By designing loosely coupled components, it is possible to scale
each component independently.
 Asynchronous communication: By allowing asynchronous communication between components, it
is possible to add capacity by adding additional servers when the application load increases.
 Stateless design: Stateless designs that store state outside of the components in a separate database
allow scaling the application components independently.
 Database choice and design: Choice of the database and the design of data storage schemes affect the
application scalability. Decisions such as whether to choose a traditional relational database (SQL
approach) with strict schemas or a schema-less database (No-SQL approach) should be made after
careful analysis of the application's data storage and analysis requirements.

b)Reliability & Availability:-


Reliability of a system is defined as the probability that a system will perform the intended
functions under stated conditions for a specified amount of time.
Availability is the probability that a system will perform a specified function under given
conditions at a prescribed time.
1
P.Srinivasulu, Assoc. Professor, Cloud Computing
Dept. of CSE, PBRVITS, Kavali.
The important considerations to be kept in mind while developing highly reliable and available
applications are:
 No single point of failure: To high achieve reliability and availability, having a redundant resource or an
automated fallback resource is important.
 Trigger automated actions on failures: By using failures and triggers for automated actions it is
possible to improve the application reliability and availability.
For example, if an application server experiences high CPU usage and is a unable to serve new
requests, a new application server is automatically launched.
 Graceful degradation: Graceful degradation means that if some component of the application
becomes unavailable the application as a whole would still be available and continue to serve the
users, though, with limited functionality.
For example, in an e-Commerce application, if a component that manages a certain category of
products becomes unavailable, the users should still be able to view products from other categories.
 Logging: Logging all events in all the application components can help in detecting bottlenecks and
failures so that necessary design/deployment changes can be made to improve application reliability
and availability.
 Replication: All application data should be replicated. Replication is used to create and maintain
multiple copies of the data in the cloud. In the event of data loss at the primary location, organizations
can continue to operate their applications from secondary data sources.

c)Security:-
Security is an important design consideration for cloud applications given the out- sourced
nature of cloud computing environments.
In domains such as healthcare there are several government laws that require the applications
to ensure security of health information of patients.
Key security considerations for cloud computing environments include:
-Securing data at rest
-Securing data in motion
-Authentication
-Authorization
-Identity and access management
-Key management
-Data integrity
-Auditing

d)Maintenance & Upgradation: -


To achieve a rapid time-to-market, businesses typically launch their applications with a core
set of features ready and then incrementally add new features as and when they are complete.
Businesses may need to adapt their applications based on the feedback from the users. In such
scenarios, it is important to design applications with low maintenance and upgradation costs.

Design decisions such as loosely coupled components help in reducing the application
maintenance and upgradation time.

In applications with loosely coupled components, changes can be made to a component


without affecting other components. Moreover, components can be tested individually.
Other decisions such as logging and triggering automated actions also help in lowering the
maintenance costs.

e)Performance:-
Applications should be designed while keeping the performance requirements in mind.
Performance requirements depend on the type of the application, For example applications which
experience high database read-intensive workloads, can benefit from read-replication or caching
approaches.

There are various metrics that are used to evaluate the application performance, such as
response time, throughput, etc.

For a good user experience a response time less than 4 seconds is generally acceptable.
However certain applications may have even more strict requirements.

2
P.Srinivasulu, Assoc. Professor, Cloud Computing
Dept. of CSE, PBRVITS, Kavali.
Reference Architectures for Cloud Applications
Introduction:-
Multi-tier cloud applications can have various deployment architecture alternatives.
Choosing the right deployment architecture is important to ensure that the application meets the
specified performance requirements.
Below diagram shows a typical deployment architecture for e-Commerce, Business-to-
Business, Banking and Financial applications.

The various tiers in this deployment include:


-Load Balancing Tier, Application Tier and Database Tier
Load Balancing Tier:-
The first tier is the load balancing tier. Load balancing tier consists of one or more load
balancers. It is recommended to have at least two load balancer instances to avoid the single point
of failure.
Whenever possible, it is also recommended to provision the load balancer instances in
separate availability zones of the cloud service provider to improve reliability and availability.
Application Tier:-
It consists of one or more application servers. For this tier, it is recommended to configure
auto scaling. Auto scaling can be triggered when the recorded values for any of the specified
metrics such as CPU usage, memory usage, etc. goes above defined thresholds.
The minimum and maximum size of the application server auto scaling groups can be
configured. It is recommended to have at least two application servers running at all times to avoid
a single point of failure.
When the workload increases rapidly, the existing application server instances may fail to
serve all requests. Therefore, it is recommended to set the threshold values for the auto scaling
metrics conservatively to take care of the time lag involved in the new instances becoming
operational.
When an auto scaling event occurs, a new instance is launched. In the auto scaling options,
the threshold for scaling down are also specified.
Database Tier:-
It includes a master database instance and multiple slave instances. The master node serves
all the write requests and the read requests are served from the slave nodes. This improves the
throughput for the database tier since most applications have a higher number of read requests than
write requests.
Multiple slave nodes also serve as a backup for the master node. In the event of failure of
the master node, one of the slave modes can be automatically configured to become the master.
Regular snapshots of the database are recommended. The frequency of snapshots may be
configured to be daily or hourly. It is recommended to store snapshots in distributed persistent
cloud storage solutions (such as Amazon S3).
3
P.Srinivasulu, Assoc. Professor, Cloud Computing
Dept. of CSE, PBRVITS, Kavali.
Architecture for content delivery applications
Below diagram shows typical deployment architecture for content delivery applications such as
online photo albums, video webcasting, etc.

Both relational and non-relational data stores are shown in this deployment. A content
delivery network (CDN) which consists of a global network of edge locations is used for media
delivery. CDN is used to speed up the delivery of static content such as images and videos.
Architecture for compute intensive applications:-
Below diagram shows typical deployment architecture for compute intensive applications such as
Data Analytics, Media Transcoding, etc.

4
P.Srinivasulu, Assoc. Professor, Cloud Computing
Dept. of CSE, PBRVITS, Kavali.
The above diagram shows web, application, storage, computing/analytics and database tiers.
The analytics tier consists of cloud- based distributed batch processing frameworks such as Hadoop
which are suitable for analyzing big data.
Data analysis jobs (such as MapReduce) are submitted to the analytics tier from the
application servers. The jobs are queued for execution and upon completion the analyzed data is
presented from the application servers.

Cloud Application Design Methdologies


Introduction:-
Multi-tier cloud applications can have various deployment architecture alternatives.
Choosing the right deployment architecture is important to ensure that the application meets the
specified performance requirements.

5
P.Srinivasulu, Assoc. Professor, Cloud Computing
Dept. of CSE, PBRVITS, Kavali.

6
P.Srinivasulu, Assoc. Professor, Cloud Computing
Dept. of CSE, PBRVITS, Kavali.

You might also like