SlideShare a Scribd company logo
1 of 12
Download to read offline
Created by P3 InfoTech Solutions Pvt. Ltd., http://p3infotech.in | 1
Web Application Deployment in the Cloud
Using Amazon Web Services – From Infancy to Maturity
P3 InfoTech Solutions Pvt. Ltd
http://www.p3infotech.in
July 2013
Web Application Deployment in the Cloud
Using Amazon Web Services – From Infancy to Maturity
Created by P3 InfoTech Solutions Pvt. Ltd., http://p3infotech.in | 2
Web Application Deployment in the Cloud Using Amazon
Web Services – From Infancy to Maturity
1. Introduction
This case study describes three scenarios of a web application deployment in the Cloud
using Amazon Web Services (AWS) – starting from a basic one-server setup to an
advanced setup with Auto Scaling and High Availability. These scenarios reflect the
lifecycle of an application that starts with few users during its early days, then goes on
to having more users, and eventually becomes business-critical. These case studies
demonstrate the following key points:
● Application deployment on AWS is future-proof. Applications can be
deployed in AWS starting with a low-cost basic setup and then incrementally add
features such as Higher Performance, Scalability, and High Availability as the
need arises. This is a result of the great flexibility and extensibility that AWS
provides thanks to the large number of features available and the ability to
choose these features on an à la carte basis.
● Few changes (if any) are required to the application. The addition of features
to application’s deployment architecture requires only few changes to the
application, if any. In most cases, changes only need to be made to the
application’s deployment setup in AWS, without any changes to the application
itself. Where there are changes required to the application, they are easy to
accomplish thanks to AWS’ APIs which are available in all the programming
languages commonly used for web development.
2. AWS Architectural Components
An Amazon Elastic Compute Cloud (EC2) instance is a Virtual Machine (VM)
provided by AWS. EC2 instances are the basic unit of computing in AWS and come in
various CPU and memory configurations. For more information about EC2, refer
http://aws.amazon.com/ec2/.
Amazon Elastic Block Storage (EBS) is block storage attached to an EC2 instance.
EBS has been designed for high reliability and performance. An EBS instance (referred
to as an EBS volume) can only be attached to a single EC2 instance at any time. This
means that every application server needs to have its own EBS volume to store the
application code and data. Moreover, EBS volumes cannot be used as-is to share data
among EC2 servers. For more information about EC2, refer
http://aws.amazon.com/ebs/.
Web Application Deployment in the Cloud
Using Amazon Web Services – From Infancy to Maturity
Created by P3 InfoTech Solutions Pvt. Ltd., http://p3infotech.in | 3
Amazon Simple Storage Service (S3) is a highly reliable and durable storage provided
by AWS. S3 has been designed for high reliability by maintaining multiple replicas of the
data. The design point for S3 is 99.999999999% durability and 99.99% availability of
objects over a given year. As opposed to EBS, S3 is not attached to any particular EC2
instance; rather, S3 storage is accessible from any EC2 instance and therefore can be
readily used to store data shared by EC2 instances. Another key thing to note about S3
is that browsers can directly connect to files stored in S3 via a unique URL for every file;
thus S3 can serve the data itself without the requirement of a separate EC2 server.
These attributes make S3 a great choice for serving static content such as CSS and
JavaScript files, Images, Videos, etc. For more information about S3, refer
http://aws.amazon.com/s3/.
Amazon Relational Database Service (RDS) is a hosted database service provided by
AWS. RDS provides standard SQL databases such as MySQL, Oracle and Microsoft
SQL, but takes care of common database management tasks so that the application
administrator is not burdened with them. For more information about RDS, refer
http://aws.amazon.com/rds/.
Amazon Elastic Load Balancing (ELB) is a hosted load balancing service provided by
AWS. ELB automatically distributes incoming load among the EC2 instances attached
to the ELB. ELB has in-built detection of unhealthy instances and ensures that load is
not distributed to those instances. For more information about ELB, refer
http://aws.amazon.com/elasticloadbalancing/.
Amazon CloudWatch provides monitoring for AWS resources, such as EC2, RDS and
ELB. It can be used to collect and track metrics to gain visibility into resource utilization,
application performance, and operational health. More importantly, since CloudWatch
monitors resources in real-time, it can be used to react immediately to keep the
application running smoothly. Some of the metrics that CloudWatch monitors are: CPU
utilization, Memory usage, Disk IO statistics, Request latency, Request counts, and
Network IO statistics. For more information about CloudWatch, refer
http://aws.amazon.com/cloudwatch/.
Amazon Elastic IP Addresses are static addresses assigned to AWS resources (an
EC2 or ELB). Elastic IP addresses are associated with an account and not a particular
EC2 instance, allowing them to be remapped to another instance in case of an
EC2/ELB failure. For more information on Elastic IP addresses, refer
http://aws.amazon.com/ec2/.
Auto Scaling allows application owners to scale EC2 capacity up or down automatically
according to the conditions defined (based on CloudWatch metrics). Auto Scaling is a
very powerful feature that can be provided only due to the elastic, on-demand and
immediate properties of Cloud Computing. With Auto Scaling, EC2 instances can be
increased seamlessly during demand spikes to maintain performance, and decreased
Web Application Deployment in the Cloud
Using Amazon Web Services – From Infancy to Maturity
Created by P3 InfoTech Solutions Pvt. Ltd., http://p3infotech.in | 4
automatically during demand lulls to minimize costs. Auto Scaling is particularly well
suited for applications that experience significant variability in usage. For more
information on Auto Scaling, refer http://aws.amazon.com/autoscaling/.
Availability Zones are distinct datacenters that are engineered to be insulated from
failures in other Availability Zones and provide inexpensive, low latency network
connectivity to other Availability Zones in the same Region.
Amazon CloudFront is a content distribution network (CDN) provided by AWS. It
enables fast access to static data such as photos and streaming videos by storing the
data at edge locations close to users. For more information about CloudFront, refer
http://aws.amazon.com/cloudfront/.
3. Case Study #1 – Starter Plan for Small Application
This scenario applies to a non-business-critical small application. The application’s
availability requirement ranges between 99% and 99.9% – this translates to a downtime
of 438 minutes to 44 minutes per month.
The application itself consists of web server and possibly a separate app server, a
relational database, and a bunch of static files (CSS, JavaScript, Images, etc.). The
application could be hosted on either a Windows or Linux operating system.
3.1. Key points regarding the deployment architecture
Figure 1: Architecture Diagram for Starter Setup
● The application is hosted on a single EC2 instance.
● The EC2 instance hosts both the Web server and the database server.
Web Application Deployment in the Cloud
Using Amazon Web Services – From Infancy to Maturity
Created by P3 InfoTech Solutions Pvt. Ltd., http://p3infotech.in | 5
● The size of the EC2 instance can vary between a micro instance to large
instance, depending on the performance and usage requirements.
● The root volume of the EC2 instance is an Elastic Block Store (EBS) volume.
This is a best practice and safeguards against data loss in case of failure of the
EC2 instance.
● The application code as well as the database files are stored on the EBS volume.
● Amazon S3 is used for storing and serving static content such as CSS,
JavaScript, images, audio files, video files, documents, etc. The benefit of
serving static files from S3 is that it offloads this work from the EC2 instance,
thus reducing the load on it.
3.2. Changes Required to Application
Compared to a non-AWS deployment, the application needs to be modified in the
following ways for this deployment.
 Awareness of S3: The application will need to be modified a little bit to be aware
of S3, but only if it has any user-generated content. The user-generated files
should be temporarily uploaded to the local EBS volume attached to the EC2
instance and then transferred to S3. This can be easily done with a little working
knowledge of the S3 APIs. If the application does not have any user-generated
content, then the move to S3 should only involve a change to URL used to server
static data in the application’s settings.
3.3. Deployment Tips
1. The AWS region used for deployment should be carefully selected. The AWS
region that is closest to most of the application’s users should be selected.
2. Amazon CloudWatch should be used to monitor the EC2 instance and be
configured to send out notifications if something goes wrong. Notifications can be
sent via email or SMS (only supported in US).
3. If the application will keep running for a long duration (more than 6 months) and
for several hours of a day (more than 12 hours) , use a Reserved EC2 instance
instead of OnDemand instance; this can greatly reduce your EC2 costs.
4. Auto Scaling can be used to further reduce downtime in case the EC2 instance
fails. To achieve this, Auto Scaling should be setup with a ‘minimum size’ and
‘maximum size’ set to 1. With this setup, if the EC2 instance fails, the Auto
Scaling feature will start a new instance from the same image.
Web Application Deployment in the Cloud
Using Amazon Web Services – From Infancy to Maturity
Created by P3 InfoTech Solutions Pvt. Ltd., http://p3infotech.in | 6
5. Hourly or daily backups of the EBS volume should be taken to reduce the
extent of data loss if something bad happens to the EBS volume. For an even
higher degree of data protection, a remote copy of this backup should be
maintained on a different AWS region.
3.4. Benefits of using Starter plan
Following are the key benefits of this deployment compared to a non-AWS deployment.
1. Can be notified via CloudWatch in case something goes wrong.
2. Serving of static files is offloaded to S3, thus freeing up resources on the EC2
instance for running the application and database.
3. Flexibility: this deployment provides flexibility as a result of the many options
offered by AWS. For example:
 As the application’s performance requirement increases, it can be easily
moved to a bigger EC2 instance at any time.
 The size of the EBS volume can be easily increased at any time.
 The application can be migrated to a different AWS region.
4. Future-proof: this deployment architecture can be easily extended to a more
reliable deployment (e.g. the next 2 deployment scenarios) when the need
arises.
4. Case Study #2 – Intermediate Plan with Auto Scaling
This scenario is applicable to a non-business-critical medium sized application that
gets traffic load throughout the day. The traffic has highs and lows during certain
periods of the day that reflect peak and low usage times for the application. The
application is not business critical, and doesn’t require investing in a high availability
or disaster recovery solution. The application can tolerate downtime of up to a few hours
per month, translating to availability requirement in the range 99% and 99.9% (438
minutes to 44 minutes per month).
As in the previous scenario, the application itself consists of web server, a relational
database, and a bunch of static files (CSS, JavaScript, Images, etc.). The application
could be hosted on either a Windows or Linux operating system.
Web Application Deployment in the Cloud
Using Amazon Web Services – From Infancy to Maturity
Created by P3 InfoTech Solutions Pvt. Ltd., http://p3infotech.in | 7
4.1. Key points regarding the deployment architecture
Figure 2: Architecture Diagram for Scalable Setup
● Dynamic scaling is achieved via AWS Auto Scaling feature. With Auto Scaling
the application can be scaled automatically when demand increases or
decreases.
For instance, consider the following EC2 uptime data we got from one of our
clients.
o The application is deployed with up to 4 EC2 instances
o EC2 instances #1 and #2 are always running, i.e. 100% of the time
Web Application Deployment in the Cloud
Using Amazon Web Services – From Infancy to Maturity
Created by P3 InfoTech Solutions Pvt. Ltd., http://p3infotech.in | 8
o EC2 instances #3 and #4 handle the additional load during peak hours or
traffic burst periods.
o EC2 instance #3 runs for 40% of the time
o EC2 instance #4 runs for 20% of the time
● Elastic Load Balancer (ELB) is used to distribute incoming application traffic
across the EC2 instance.
● A separate EC2 instance is used for the DB server which is a best practice for
any but the most simplest of applications.
Note: Although we have shown the database on a separate EC2 instance, this
could be replaced with RDS also which is essentially an EC2 instance +
database software that is managed by AWS.
● 5 EBS-storage volumes are used, one for each EC2 instance.
Note: there are 4 EC2 instances for the application and 1 EC2 instance for the
database.
● As with the previous case study, Amazon S3 is used for storing static content
such as images, audio files etc.
4.2. Changes Required to Application
This setup requires no further changes in the application compared to the starter plan.
4.3. Deployment Tips
Following are some deployment tips for this plan, in addition to the deployment tips for
the starter plan.
1. Auto Scaling Rules should be carefully specified taking into account the
application’s traffic profile and performance characteristics as well as the hosting
budget.
2. The utilization of the EC2 instances that are part of the Auto Scaling Group
should be reviewed. For instances that will be running most of the time, using
Reserved EC2 instances instead of OnDemand instances can result in
significant cost savings.
4.4. Benefits of Intermediate plan
The intermediate plan has the following benefits over the starter plan.
Web Application Deployment in the Cloud
Using Amazon Web Services – From Infancy to Maturity
Created by P3 InfoTech Solutions Pvt. Ltd., http://p3infotech.in | 9
1. Higher capacity due to multiple application instances: This deployment
architecture uses multiple EC2 instance to host the application, enabling the
application to handle much more load than with a single instance.
2. Auto Scaling: This scenario demonstrates how the application can scale
seamlessly in AWS by using the Auto Scaling feature. Dynamic scaling helps
provision resources for the application to closely match the actual demand. This
ensures a great experience for the users of the application, while keeping costs
low. With Auto Scaling, it is possible to configure rules for when and how to scale
up or scale down the number of EC2 instances used by the application.
3. Separate DB: The deployment uses a separate EC2 instance for the database.
This is a deployment best practice. By having the database served out of a
separate EC2 instance, the application and the database do not contend for the
same resources. This provides more reliable application performance and makes
it easier to any diagnose performance problems.
4. Non-disruptive software upgrades: Software upgrades can be performed in a
rolling fashion, one EC2 instance at a time. While the EC2 instance is being
upgraded, the other EC2 instances of the Auto Scaling group will continue to
serve requests.
5. Case Study #3 – Advanced Plan with High Availability for Business
Critical Applications
The major difference between this scenario and the previous ones is that the application
is business critical and therefore cannot tolerate any downtime. The availability
requirement of the application is 99.99% uptime (less than 5 minutes of downtime per
month).
As in the previous scenario, the application itself consists of web server, a relational
database, and a bunch of static files (CSS, JavaScript, Images, etc.). The application
could be hosted on either a Windows or Linux operating system.
Web Application Deployment in the Cloud
Using Amazon Web Services – From Infancy to Maturity
Created by P3 InfoTech Solutions Pvt. Ltd., http://p3infotech.in | 10
5.1. Key points regarding the deployment architecture
Figure 3: Architecture Diagram for Scalable + Highly Available Setup
● This deployment adds high availability to the application. High availability
means that there is no single point of failure. If any single component in the
setup fails, the application will continue to be operational (though, with a slightly
reduced performance).
● This setup uses two AWS availability zones. The setup of the advanced plan
replicates the intermediate plan setup in 2 availability zones. By launching
instances in two availability zones, the application is protected from failures
within a single availability zone. Even if one entire availability zone fails, the
application will still be able to operate from the other availability zone.
● High-availability for database using a replicated master-slave setup. Data is
synchronously replicated from the master to the slave to ensure there is no loss
of data when the master fails. When the master database fails, the slave will be
Web Application Deployment in the Cloud
Using Amazon Web Services – From Infancy to Maturity
Created by P3 InfoTech Solutions Pvt. Ltd., http://p3infotech.in | 11
promoted as the master and will start serving both read and write requests. The
master-slave setup provides 2 benefits:
1. High-availability for the database
2. Better read performance for the database since reads can be served from
both the master and the slave
● ELB is a highly available service by design; hence only one ELB is required.
● Amazon CloudFront is used to cache static data on edge locations near to the
users. User requests for static content are automatically served from the
CloudFront edge location nearest to the user. This helps improve the application
experience for the users as the data gets downloaded faster on the users’
computers.
5.2. Changes Required in Application Design
Awareness about Database Master-Slave Architecture (optional): To make best
use of this architecture, the application needs to be aware of the Master-Slave setup of
the database. This is an optional enhancement for the application that results in better
database performance; however, this configuration can also be used without this
enhancement.
One of the DB instances acts as the master and the other as a slave. All application
servers must write data only to the master.
The application servers in availability zone 2 (the one with the slave DB server) should
send read requests to the slave DB server. This reduces the load on the Master DB
Server by distributing the reads between the Master and the Slave servers, resulting in
better database performance and greater scalability.
5.3. Deployment Tips
Following are some deployment tips for this plan, in addition to the deployment tips for
the intermediate plan.
1. We recommend using RDS for the database, as it provides a simple way to use
a replicated multi-availability zone setup.
2. For a predictable, balanced, and reliable setup, the Auto Scaling
configurations should be identical in the two availability zones. This
configuration includes things such as: size of the EC2 instances, size of EBS
volumes, and Auto Scaling rules.
Web Application Deployment in the Cloud
Using Amazon Web Services – From Infancy to Maturity
Created by P3 InfoTech Solutions Pvt. Ltd., http://p3infotech.in | 12
5.4. Benefits over Intermediate Plan
● High Availability: In this configuration, there is no single point of failure enabling
the application can withstand the failure of any single component. This
significantly increases the availability of the application.
● Increased Database Capacity and Performance: Distributing database reads
among two instances doubles the database read capacity.
● Faster load times for static files: Use of Amazon CloudFront for serving static
files results in faster load times as the data is served from a server closer to the
user. This leads to a better user experience for the users.
6. Summary
In this case study, we have described 3 architectures for deploying applications in AWS:
starter plan, intermediate plan, and advanced plan. We started with the starter plan
which consists of a single EC2 instance and is suitable for small applications non
business-critical for business. Then, we moved to the intermediate plan which is
suitable for medium or large sized applications non business-critical for business. The
intermediate plan introduced the use of Auto Scaling group for elastically scaling the
application capacity. Finally, we discussed the advanced plan that is meant for
business-critical applications that need to be highly available.
While discussing these case studies, we made use of several AWS features: EC2, EBS,
RDS, Elastic IP, S3, CloudFront, CloudWatch, EBS Snapshots, Auto Scaling, and
Availability Zones. One of the best things about using AWS is that it provides a large set
of services, which can be used à la carte. This allows an application to start with a basic
deployment such as the starter plan with only a basic set of services. As the
application’s use grows and its deployment requirements become more demanding for
performance and availability, the deployment architecture can be easily scaled up and
other AWS services can be incorporated to provide enterprise grade performance and
availability. All this without any up-front investments and paying only for the resources
you use.
About P3 InfoTech Solutions Pvt. Ltd.
P3 InfoTech Solutions Pvt. Ltd. helps organizations achieve business breakthroughs by
adopting Cloud Computing through our Outsourced Product Development and Cloud Consulting
service offerings. Discover our passion for Cloud Computing and Web Applications at
http://www.p3infotech.in.

More Related Content

More from P3 InfoTech Solutions Pvt. Ltd.

Python Programming Essentials - M29 - Python Interpreter and Files
Python Programming Essentials - M29 - Python Interpreter and FilesPython Programming Essentials - M29 - Python Interpreter and Files
Python Programming Essentials - M29 - Python Interpreter and FilesP3 InfoTech Solutions Pvt. Ltd.
 
Python Programming Essentials - M28 - Debugging with pdb
Python Programming Essentials - M28 - Debugging with pdbPython Programming Essentials - M28 - Debugging with pdb
Python Programming Essentials - M28 - Debugging with pdbP3 InfoTech Solutions Pvt. Ltd.
 
Python Programming Essentials - M25 - os and sys modules
Python Programming Essentials - M25 - os and sys modulesPython Programming Essentials - M25 - os and sys modules
Python Programming Essentials - M25 - os and sys modulesP3 InfoTech Solutions Pvt. Ltd.
 
Python Programming Essentials - M21 - Exception Handling
Python Programming Essentials - M21 - Exception HandlingPython Programming Essentials - M21 - Exception Handling
Python Programming Essentials - M21 - Exception HandlingP3 InfoTech Solutions Pvt. Ltd.
 
Python Programming Essentials - M20 - Classes and Objects
Python Programming Essentials - M20 - Classes and ObjectsPython Programming Essentials - M20 - Classes and Objects
Python Programming Essentials - M20 - Classes and ObjectsP3 InfoTech Solutions Pvt. Ltd.
 
Python Programming Essentials - M19 - Namespaces, Global Variables and Docstr...
Python Programming Essentials - M19 - Namespaces, Global Variables and Docstr...Python Programming Essentials - M19 - Namespaces, Global Variables and Docstr...
Python Programming Essentials - M19 - Namespaces, Global Variables and Docstr...P3 InfoTech Solutions Pvt. Ltd.
 
Python Programming Essentials - M18 - Modules and Packages
Python Programming Essentials - M18 - Modules and PackagesPython Programming Essentials - M18 - Modules and Packages
Python Programming Essentials - M18 - Modules and PackagesP3 InfoTech Solutions Pvt. Ltd.
 
Python Programming Essentials - M16 - Control Flow Statements and Loops
Python Programming Essentials - M16 - Control Flow Statements and LoopsPython Programming Essentials - M16 - Control Flow Statements and Loops
Python Programming Essentials - M16 - Control Flow Statements and LoopsP3 InfoTech Solutions Pvt. Ltd.
 
Python Programming Essentials - M11 - Comparison and Logical Operators
Python Programming Essentials - M11 - Comparison and Logical OperatorsPython Programming Essentials - M11 - Comparison and Logical Operators
Python Programming Essentials - M11 - Comparison and Logical OperatorsP3 InfoTech Solutions Pvt. Ltd.
 
Python Programming Essentials - M10 - Numbers and Artihmetic Operators
Python Programming Essentials - M10 - Numbers and Artihmetic OperatorsPython Programming Essentials - M10 - Numbers and Artihmetic Operators
Python Programming Essentials - M10 - Numbers and Artihmetic OperatorsP3 InfoTech Solutions Pvt. Ltd.
 

More from P3 InfoTech Solutions Pvt. Ltd. (20)

Python Programming Essentials - M31 - PEP 8
Python Programming Essentials - M31 - PEP 8Python Programming Essentials - M31 - PEP 8
Python Programming Essentials - M31 - PEP 8
 
Python Programming Essentials - M29 - Python Interpreter and Files
Python Programming Essentials - M29 - Python Interpreter and FilesPython Programming Essentials - M29 - Python Interpreter and Files
Python Programming Essentials - M29 - Python Interpreter and Files
 
Python Programming Essentials - M28 - Debugging with pdb
Python Programming Essentials - M28 - Debugging with pdbPython Programming Essentials - M28 - Debugging with pdb
Python Programming Essentials - M28 - Debugging with pdb
 
Python Programming Essentials - M27 - Logging module
Python Programming Essentials - M27 - Logging modulePython Programming Essentials - M27 - Logging module
Python Programming Essentials - M27 - Logging module
 
Python Programming Essentials - M25 - os and sys modules
Python Programming Essentials - M25 - os and sys modulesPython Programming Essentials - M25 - os and sys modules
Python Programming Essentials - M25 - os and sys modules
 
Python Programming Essentials - M24 - math module
Python Programming Essentials - M24 - math modulePython Programming Essentials - M24 - math module
Python Programming Essentials - M24 - math module
 
Python Programming Essentials - M23 - datetime module
Python Programming Essentials - M23 - datetime modulePython Programming Essentials - M23 - datetime module
Python Programming Essentials - M23 - datetime module
 
Python Programming Essentials - M22 - File Operations
Python Programming Essentials - M22 - File OperationsPython Programming Essentials - M22 - File Operations
Python Programming Essentials - M22 - File Operations
 
Python Programming Essentials - M21 - Exception Handling
Python Programming Essentials - M21 - Exception HandlingPython Programming Essentials - M21 - Exception Handling
Python Programming Essentials - M21 - Exception Handling
 
Python Programming Essentials - M20 - Classes and Objects
Python Programming Essentials - M20 - Classes and ObjectsPython Programming Essentials - M20 - Classes and Objects
Python Programming Essentials - M20 - Classes and Objects
 
Python Programming Essentials - M19 - Namespaces, Global Variables and Docstr...
Python Programming Essentials - M19 - Namespaces, Global Variables and Docstr...Python Programming Essentials - M19 - Namespaces, Global Variables and Docstr...
Python Programming Essentials - M19 - Namespaces, Global Variables and Docstr...
 
Python Programming Essentials - M18 - Modules and Packages
Python Programming Essentials - M18 - Modules and PackagesPython Programming Essentials - M18 - Modules and Packages
Python Programming Essentials - M18 - Modules and Packages
 
Python Programming Essentials - M17 - Functions
Python Programming Essentials - M17 - FunctionsPython Programming Essentials - M17 - Functions
Python Programming Essentials - M17 - Functions
 
Python Programming Essentials - M16 - Control Flow Statements and Loops
Python Programming Essentials - M16 - Control Flow Statements and LoopsPython Programming Essentials - M16 - Control Flow Statements and Loops
Python Programming Essentials - M16 - Control Flow Statements and Loops
 
Python Programming Essentials - M15 - References
Python Programming Essentials - M15 - ReferencesPython Programming Essentials - M15 - References
Python Programming Essentials - M15 - References
 
Python Programming Essentials - M14 - Dictionaries
Python Programming Essentials - M14 - DictionariesPython Programming Essentials - M14 - Dictionaries
Python Programming Essentials - M14 - Dictionaries
 
Python Programming Essentials - M13 - Tuples
Python Programming Essentials - M13 - TuplesPython Programming Essentials - M13 - Tuples
Python Programming Essentials - M13 - Tuples
 
Python Programming Essentials - M12 - Lists
Python Programming Essentials - M12 - ListsPython Programming Essentials - M12 - Lists
Python Programming Essentials - M12 - Lists
 
Python Programming Essentials - M11 - Comparison and Logical Operators
Python Programming Essentials - M11 - Comparison and Logical OperatorsPython Programming Essentials - M11 - Comparison and Logical Operators
Python Programming Essentials - M11 - Comparison and Logical Operators
 
Python Programming Essentials - M10 - Numbers and Artihmetic Operators
Python Programming Essentials - M10 - Numbers and Artihmetic OperatorsPython Programming Essentials - M10 - Numbers and Artihmetic Operators
Python Programming Essentials - M10 - Numbers and Artihmetic Operators
 

Recently uploaded

Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfOverkill Security
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 

Recently uploaded (20)

Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 

Web Application Deployment in the Cloud Using Amazon Web Services – From Infancy to Maturity

  • 1. Created by P3 InfoTech Solutions Pvt. Ltd., http://p3infotech.in | 1 Web Application Deployment in the Cloud Using Amazon Web Services – From Infancy to Maturity P3 InfoTech Solutions Pvt. Ltd http://www.p3infotech.in July 2013
  • 2. Web Application Deployment in the Cloud Using Amazon Web Services – From Infancy to Maturity Created by P3 InfoTech Solutions Pvt. Ltd., http://p3infotech.in | 2 Web Application Deployment in the Cloud Using Amazon Web Services – From Infancy to Maturity 1. Introduction This case study describes three scenarios of a web application deployment in the Cloud using Amazon Web Services (AWS) – starting from a basic one-server setup to an advanced setup with Auto Scaling and High Availability. These scenarios reflect the lifecycle of an application that starts with few users during its early days, then goes on to having more users, and eventually becomes business-critical. These case studies demonstrate the following key points: ● Application deployment on AWS is future-proof. Applications can be deployed in AWS starting with a low-cost basic setup and then incrementally add features such as Higher Performance, Scalability, and High Availability as the need arises. This is a result of the great flexibility and extensibility that AWS provides thanks to the large number of features available and the ability to choose these features on an à la carte basis. ● Few changes (if any) are required to the application. The addition of features to application’s deployment architecture requires only few changes to the application, if any. In most cases, changes only need to be made to the application’s deployment setup in AWS, without any changes to the application itself. Where there are changes required to the application, they are easy to accomplish thanks to AWS’ APIs which are available in all the programming languages commonly used for web development. 2. AWS Architectural Components An Amazon Elastic Compute Cloud (EC2) instance is a Virtual Machine (VM) provided by AWS. EC2 instances are the basic unit of computing in AWS and come in various CPU and memory configurations. For more information about EC2, refer http://aws.amazon.com/ec2/. Amazon Elastic Block Storage (EBS) is block storage attached to an EC2 instance. EBS has been designed for high reliability and performance. An EBS instance (referred to as an EBS volume) can only be attached to a single EC2 instance at any time. This means that every application server needs to have its own EBS volume to store the application code and data. Moreover, EBS volumes cannot be used as-is to share data among EC2 servers. For more information about EC2, refer http://aws.amazon.com/ebs/.
  • 3. Web Application Deployment in the Cloud Using Amazon Web Services – From Infancy to Maturity Created by P3 InfoTech Solutions Pvt. Ltd., http://p3infotech.in | 3 Amazon Simple Storage Service (S3) is a highly reliable and durable storage provided by AWS. S3 has been designed for high reliability by maintaining multiple replicas of the data. The design point for S3 is 99.999999999% durability and 99.99% availability of objects over a given year. As opposed to EBS, S3 is not attached to any particular EC2 instance; rather, S3 storage is accessible from any EC2 instance and therefore can be readily used to store data shared by EC2 instances. Another key thing to note about S3 is that browsers can directly connect to files stored in S3 via a unique URL for every file; thus S3 can serve the data itself without the requirement of a separate EC2 server. These attributes make S3 a great choice for serving static content such as CSS and JavaScript files, Images, Videos, etc. For more information about S3, refer http://aws.amazon.com/s3/. Amazon Relational Database Service (RDS) is a hosted database service provided by AWS. RDS provides standard SQL databases such as MySQL, Oracle and Microsoft SQL, but takes care of common database management tasks so that the application administrator is not burdened with them. For more information about RDS, refer http://aws.amazon.com/rds/. Amazon Elastic Load Balancing (ELB) is a hosted load balancing service provided by AWS. ELB automatically distributes incoming load among the EC2 instances attached to the ELB. ELB has in-built detection of unhealthy instances and ensures that load is not distributed to those instances. For more information about ELB, refer http://aws.amazon.com/elasticloadbalancing/. Amazon CloudWatch provides monitoring for AWS resources, such as EC2, RDS and ELB. It can be used to collect and track metrics to gain visibility into resource utilization, application performance, and operational health. More importantly, since CloudWatch monitors resources in real-time, it can be used to react immediately to keep the application running smoothly. Some of the metrics that CloudWatch monitors are: CPU utilization, Memory usage, Disk IO statistics, Request latency, Request counts, and Network IO statistics. For more information about CloudWatch, refer http://aws.amazon.com/cloudwatch/. Amazon Elastic IP Addresses are static addresses assigned to AWS resources (an EC2 or ELB). Elastic IP addresses are associated with an account and not a particular EC2 instance, allowing them to be remapped to another instance in case of an EC2/ELB failure. For more information on Elastic IP addresses, refer http://aws.amazon.com/ec2/. Auto Scaling allows application owners to scale EC2 capacity up or down automatically according to the conditions defined (based on CloudWatch metrics). Auto Scaling is a very powerful feature that can be provided only due to the elastic, on-demand and immediate properties of Cloud Computing. With Auto Scaling, EC2 instances can be increased seamlessly during demand spikes to maintain performance, and decreased
  • 4. Web Application Deployment in the Cloud Using Amazon Web Services – From Infancy to Maturity Created by P3 InfoTech Solutions Pvt. Ltd., http://p3infotech.in | 4 automatically during demand lulls to minimize costs. Auto Scaling is particularly well suited for applications that experience significant variability in usage. For more information on Auto Scaling, refer http://aws.amazon.com/autoscaling/. Availability Zones are distinct datacenters that are engineered to be insulated from failures in other Availability Zones and provide inexpensive, low latency network connectivity to other Availability Zones in the same Region. Amazon CloudFront is a content distribution network (CDN) provided by AWS. It enables fast access to static data such as photos and streaming videos by storing the data at edge locations close to users. For more information about CloudFront, refer http://aws.amazon.com/cloudfront/. 3. Case Study #1 – Starter Plan for Small Application This scenario applies to a non-business-critical small application. The application’s availability requirement ranges between 99% and 99.9% – this translates to a downtime of 438 minutes to 44 minutes per month. The application itself consists of web server and possibly a separate app server, a relational database, and a bunch of static files (CSS, JavaScript, Images, etc.). The application could be hosted on either a Windows or Linux operating system. 3.1. Key points regarding the deployment architecture Figure 1: Architecture Diagram for Starter Setup ● The application is hosted on a single EC2 instance. ● The EC2 instance hosts both the Web server and the database server.
  • 5. Web Application Deployment in the Cloud Using Amazon Web Services – From Infancy to Maturity Created by P3 InfoTech Solutions Pvt. Ltd., http://p3infotech.in | 5 ● The size of the EC2 instance can vary between a micro instance to large instance, depending on the performance and usage requirements. ● The root volume of the EC2 instance is an Elastic Block Store (EBS) volume. This is a best practice and safeguards against data loss in case of failure of the EC2 instance. ● The application code as well as the database files are stored on the EBS volume. ● Amazon S3 is used for storing and serving static content such as CSS, JavaScript, images, audio files, video files, documents, etc. The benefit of serving static files from S3 is that it offloads this work from the EC2 instance, thus reducing the load on it. 3.2. Changes Required to Application Compared to a non-AWS deployment, the application needs to be modified in the following ways for this deployment.  Awareness of S3: The application will need to be modified a little bit to be aware of S3, but only if it has any user-generated content. The user-generated files should be temporarily uploaded to the local EBS volume attached to the EC2 instance and then transferred to S3. This can be easily done with a little working knowledge of the S3 APIs. If the application does not have any user-generated content, then the move to S3 should only involve a change to URL used to server static data in the application’s settings. 3.3. Deployment Tips 1. The AWS region used for deployment should be carefully selected. The AWS region that is closest to most of the application’s users should be selected. 2. Amazon CloudWatch should be used to monitor the EC2 instance and be configured to send out notifications if something goes wrong. Notifications can be sent via email or SMS (only supported in US). 3. If the application will keep running for a long duration (more than 6 months) and for several hours of a day (more than 12 hours) , use a Reserved EC2 instance instead of OnDemand instance; this can greatly reduce your EC2 costs. 4. Auto Scaling can be used to further reduce downtime in case the EC2 instance fails. To achieve this, Auto Scaling should be setup with a ‘minimum size’ and ‘maximum size’ set to 1. With this setup, if the EC2 instance fails, the Auto Scaling feature will start a new instance from the same image.
  • 6. Web Application Deployment in the Cloud Using Amazon Web Services – From Infancy to Maturity Created by P3 InfoTech Solutions Pvt. Ltd., http://p3infotech.in | 6 5. Hourly or daily backups of the EBS volume should be taken to reduce the extent of data loss if something bad happens to the EBS volume. For an even higher degree of data protection, a remote copy of this backup should be maintained on a different AWS region. 3.4. Benefits of using Starter plan Following are the key benefits of this deployment compared to a non-AWS deployment. 1. Can be notified via CloudWatch in case something goes wrong. 2. Serving of static files is offloaded to S3, thus freeing up resources on the EC2 instance for running the application and database. 3. Flexibility: this deployment provides flexibility as a result of the many options offered by AWS. For example:  As the application’s performance requirement increases, it can be easily moved to a bigger EC2 instance at any time.  The size of the EBS volume can be easily increased at any time.  The application can be migrated to a different AWS region. 4. Future-proof: this deployment architecture can be easily extended to a more reliable deployment (e.g. the next 2 deployment scenarios) when the need arises. 4. Case Study #2 – Intermediate Plan with Auto Scaling This scenario is applicable to a non-business-critical medium sized application that gets traffic load throughout the day. The traffic has highs and lows during certain periods of the day that reflect peak and low usage times for the application. The application is not business critical, and doesn’t require investing in a high availability or disaster recovery solution. The application can tolerate downtime of up to a few hours per month, translating to availability requirement in the range 99% and 99.9% (438 minutes to 44 minutes per month). As in the previous scenario, the application itself consists of web server, a relational database, and a bunch of static files (CSS, JavaScript, Images, etc.). The application could be hosted on either a Windows or Linux operating system.
  • 7. Web Application Deployment in the Cloud Using Amazon Web Services – From Infancy to Maturity Created by P3 InfoTech Solutions Pvt. Ltd., http://p3infotech.in | 7 4.1. Key points regarding the deployment architecture Figure 2: Architecture Diagram for Scalable Setup ● Dynamic scaling is achieved via AWS Auto Scaling feature. With Auto Scaling the application can be scaled automatically when demand increases or decreases. For instance, consider the following EC2 uptime data we got from one of our clients. o The application is deployed with up to 4 EC2 instances o EC2 instances #1 and #2 are always running, i.e. 100% of the time
  • 8. Web Application Deployment in the Cloud Using Amazon Web Services – From Infancy to Maturity Created by P3 InfoTech Solutions Pvt. Ltd., http://p3infotech.in | 8 o EC2 instances #3 and #4 handle the additional load during peak hours or traffic burst periods. o EC2 instance #3 runs for 40% of the time o EC2 instance #4 runs for 20% of the time ● Elastic Load Balancer (ELB) is used to distribute incoming application traffic across the EC2 instance. ● A separate EC2 instance is used for the DB server which is a best practice for any but the most simplest of applications. Note: Although we have shown the database on a separate EC2 instance, this could be replaced with RDS also which is essentially an EC2 instance + database software that is managed by AWS. ● 5 EBS-storage volumes are used, one for each EC2 instance. Note: there are 4 EC2 instances for the application and 1 EC2 instance for the database. ● As with the previous case study, Amazon S3 is used for storing static content such as images, audio files etc. 4.2. Changes Required to Application This setup requires no further changes in the application compared to the starter plan. 4.3. Deployment Tips Following are some deployment tips for this plan, in addition to the deployment tips for the starter plan. 1. Auto Scaling Rules should be carefully specified taking into account the application’s traffic profile and performance characteristics as well as the hosting budget. 2. The utilization of the EC2 instances that are part of the Auto Scaling Group should be reviewed. For instances that will be running most of the time, using Reserved EC2 instances instead of OnDemand instances can result in significant cost savings. 4.4. Benefits of Intermediate plan The intermediate plan has the following benefits over the starter plan.
  • 9. Web Application Deployment in the Cloud Using Amazon Web Services – From Infancy to Maturity Created by P3 InfoTech Solutions Pvt. Ltd., http://p3infotech.in | 9 1. Higher capacity due to multiple application instances: This deployment architecture uses multiple EC2 instance to host the application, enabling the application to handle much more load than with a single instance. 2. Auto Scaling: This scenario demonstrates how the application can scale seamlessly in AWS by using the Auto Scaling feature. Dynamic scaling helps provision resources for the application to closely match the actual demand. This ensures a great experience for the users of the application, while keeping costs low. With Auto Scaling, it is possible to configure rules for when and how to scale up or scale down the number of EC2 instances used by the application. 3. Separate DB: The deployment uses a separate EC2 instance for the database. This is a deployment best practice. By having the database served out of a separate EC2 instance, the application and the database do not contend for the same resources. This provides more reliable application performance and makes it easier to any diagnose performance problems. 4. Non-disruptive software upgrades: Software upgrades can be performed in a rolling fashion, one EC2 instance at a time. While the EC2 instance is being upgraded, the other EC2 instances of the Auto Scaling group will continue to serve requests. 5. Case Study #3 – Advanced Plan with High Availability for Business Critical Applications The major difference between this scenario and the previous ones is that the application is business critical and therefore cannot tolerate any downtime. The availability requirement of the application is 99.99% uptime (less than 5 minutes of downtime per month). As in the previous scenario, the application itself consists of web server, a relational database, and a bunch of static files (CSS, JavaScript, Images, etc.). The application could be hosted on either a Windows or Linux operating system.
  • 10. Web Application Deployment in the Cloud Using Amazon Web Services – From Infancy to Maturity Created by P3 InfoTech Solutions Pvt. Ltd., http://p3infotech.in | 10 5.1. Key points regarding the deployment architecture Figure 3: Architecture Diagram for Scalable + Highly Available Setup ● This deployment adds high availability to the application. High availability means that there is no single point of failure. If any single component in the setup fails, the application will continue to be operational (though, with a slightly reduced performance). ● This setup uses two AWS availability zones. The setup of the advanced plan replicates the intermediate plan setup in 2 availability zones. By launching instances in two availability zones, the application is protected from failures within a single availability zone. Even if one entire availability zone fails, the application will still be able to operate from the other availability zone. ● High-availability for database using a replicated master-slave setup. Data is synchronously replicated from the master to the slave to ensure there is no loss of data when the master fails. When the master database fails, the slave will be
  • 11. Web Application Deployment in the Cloud Using Amazon Web Services – From Infancy to Maturity Created by P3 InfoTech Solutions Pvt. Ltd., http://p3infotech.in | 11 promoted as the master and will start serving both read and write requests. The master-slave setup provides 2 benefits: 1. High-availability for the database 2. Better read performance for the database since reads can be served from both the master and the slave ● ELB is a highly available service by design; hence only one ELB is required. ● Amazon CloudFront is used to cache static data on edge locations near to the users. User requests for static content are automatically served from the CloudFront edge location nearest to the user. This helps improve the application experience for the users as the data gets downloaded faster on the users’ computers. 5.2. Changes Required in Application Design Awareness about Database Master-Slave Architecture (optional): To make best use of this architecture, the application needs to be aware of the Master-Slave setup of the database. This is an optional enhancement for the application that results in better database performance; however, this configuration can also be used without this enhancement. One of the DB instances acts as the master and the other as a slave. All application servers must write data only to the master. The application servers in availability zone 2 (the one with the slave DB server) should send read requests to the slave DB server. This reduces the load on the Master DB Server by distributing the reads between the Master and the Slave servers, resulting in better database performance and greater scalability. 5.3. Deployment Tips Following are some deployment tips for this plan, in addition to the deployment tips for the intermediate plan. 1. We recommend using RDS for the database, as it provides a simple way to use a replicated multi-availability zone setup. 2. For a predictable, balanced, and reliable setup, the Auto Scaling configurations should be identical in the two availability zones. This configuration includes things such as: size of the EC2 instances, size of EBS volumes, and Auto Scaling rules.
  • 12. Web Application Deployment in the Cloud Using Amazon Web Services – From Infancy to Maturity Created by P3 InfoTech Solutions Pvt. Ltd., http://p3infotech.in | 12 5.4. Benefits over Intermediate Plan ● High Availability: In this configuration, there is no single point of failure enabling the application can withstand the failure of any single component. This significantly increases the availability of the application. ● Increased Database Capacity and Performance: Distributing database reads among two instances doubles the database read capacity. ● Faster load times for static files: Use of Amazon CloudFront for serving static files results in faster load times as the data is served from a server closer to the user. This leads to a better user experience for the users. 6. Summary In this case study, we have described 3 architectures for deploying applications in AWS: starter plan, intermediate plan, and advanced plan. We started with the starter plan which consists of a single EC2 instance and is suitable for small applications non business-critical for business. Then, we moved to the intermediate plan which is suitable for medium or large sized applications non business-critical for business. The intermediate plan introduced the use of Auto Scaling group for elastically scaling the application capacity. Finally, we discussed the advanced plan that is meant for business-critical applications that need to be highly available. While discussing these case studies, we made use of several AWS features: EC2, EBS, RDS, Elastic IP, S3, CloudFront, CloudWatch, EBS Snapshots, Auto Scaling, and Availability Zones. One of the best things about using AWS is that it provides a large set of services, which can be used à la carte. This allows an application to start with a basic deployment such as the starter plan with only a basic set of services. As the application’s use grows and its deployment requirements become more demanding for performance and availability, the deployment architecture can be easily scaled up and other AWS services can be incorporated to provide enterprise grade performance and availability. All this without any up-front investments and paying only for the resources you use. About P3 InfoTech Solutions Pvt. Ltd. P3 InfoTech Solutions Pvt. Ltd. helps organizations achieve business breakthroughs by adopting Cloud Computing through our Outsourced Product Development and Cloud Consulting service offerings. Discover our passion for Cloud Computing and Web Applications at http://www.p3infotech.in.