Showing posts with label autoscaling. Show all posts
Showing posts with label autoscaling. Show all posts

Sunday, August 18, 2013

Deeper Health Checks and Problems in Load Balancing in AWS

Health Checks are one of the essential mechanisms that helps you to keep N-Tiered system highly available. Usually a simple script or program is deployed on the Web/App Server. The Health check component of Load Balancer is configured to frequently call this script in Web/App Server in a light weight protocol. Based on the response from the script/program the Load balancer decides the status of the Web/App Servers and accordingly direct the requests to healthy Web/App servers. This is a usual mechanism that is followed in all popular load balancers like Amazon ELB, Netscaler, HAProxy and NGinx in AWS cloud. This sounds simple and straight forward right, but some of the customers i have consulted follow a much deeper Health check diagnostic mechanism and it might have problems when migrated to AWS cloud. 
Let us explore this case in detail :

What is the architecture ?
A simple multi-tiered architecture with : A  load balancer deployed at the front. The Web/App Server has the health script/program. The database is MySQL deployed Master+ Slave mode.  

What is deeper Health Check ?
The script/program deployed in the Web/App Server is little intelligent; when it is called by load balancer it performs simple operations and checks the status of the Database. So when you get a response back from the health check script / program you are verifying whether the health of DB and Web/App server is sound at the load balancer tier.

What is the problem scenario ?
Imagine when migrating this infrastructure to AWS you have adopted the standard architecture pattern consisting of :

  • Amazon ELB is used as the Load balancer
  • Web/App Server in auto scaling mode
  • MySQL moved to Amazon RDS+Multi-AZ with RR

Now let us explore this problem in detail : 

  • Imagine the any of the following condition in your production, network between database and Web/App is down intermittently for few minutes or RDS MySQL is elevating the Hot Standby as new Master. In such scenarios, the health check response actually timeouts at Database level, whereas the Load Balancer will mark the even the healthy App Servers as unhealthy because of the deeper health checks. This is not good especially for Amazon Auto Scaled scenario's where Amazon ELB marks Web/App EC2 as unhealthy because of deeper health check and Amazon Auto Scaling keeps restarting the Web/App EC2 auto automatically to maintain minimum healthy farm. This unwanted effect can cascade the overall availability and surely not good for the production in AWS. So in short Deeper Health checks are not surely recommended for complex N-Tier systems that follows Auto scaling/healing and Service oriented architecture patterns in AWS. 
  • Usually the purpose of health check is to check the status of next tier or service consumed by a particular tier.  Deeper health checks is heavy weight and it usually takes much more time to respond because majority of your tiers are exercised in this process. If we set this frequency too aggressive, then health checks itself will eat lots of your CPU. So the frequency of the health checks and the response time out have to be set considerably large. Also during heavy traffic scenario, such heavy weight calls can be queued and you might not get faster response in deeper health checks. 
  • Deeper health checks are usually suitable for simple and fixed infrastructures. When your infrastructure is non elastic , the decisions are taken manually by the ops team after analyzing the particular failing tier. For Elastic Auto scaled workloads in AWS it is better to isolate the health checks of load balancing tier separate from Deeper Health checks that can be used for assessing the availability of the infrastructure.

Friday, April 26, 2013

AWS Cost Saving Tip 5: How Amazon Auto Scaling can save costs


One of the biggest technical challenges of running an online business is how well they are able to handle the scalability requirements.  The Load traffic pattern keeps varying for online businesses and accordingly they will have to scale and maintain the acceptable performance levels.  Since the Traffic patterns are fluctuating in online business, they either tend to under provision and loose customers (or) over provision and waste hardware + costs. This problem is well illustrated in the below diagrams.
Business usually makes detailed capacity planning and large upfront investment in their hardware and software. This HW/SW’s are usually provisioned with fixed capacity.


Many times because of variations in capacity planning and usage predictions, you can observe that HW/SW capacity is underutilized. This is because in reality the actual demand may not be uniform with your predictions. The systems are utilized well during peak period but lie idle most of the times when the peak period is over.  This leakage is illustrated in the below diagram in Grey shades.


On the other hand, sometimes online businesses totally get their predictions wrong and under provision their HW/SW. This is a usual occurrence during holiday seasons and campaigns where one cannot predict the user traffic accurately. Though the business provision 4X more capacity during these period as buffer, still there are lots of chances that they get traffic more than expected. In case the traffic exceeds, users can experience degraded performance or altogether cannot access the site itself sometimes. Companies can lose customers and potential business opportunities because of this mismatch. This scenario is illustrated as grey shade in the below diagram


If businesses can closely align their load requirements and capacities then above scenarios can be countered efficiently. To solve this, we need an elastic and auto scalable infrastructure, which can be automated to expand and collapse depending upon the load traffic. Let us explore in AWS Cloud computing context how this problem can be solved.
Auto scaling service was introduced by Amazon Web services especially to balance this problem by increasing/decreasing capacities automatically depending upon the traffic.
Let us explore few Load Volatility patterns and how Amazon Auto Scaling can be used to reduce leakages and save cost.

Scenario 1: Daily Spikes-Valley
Daily Spikes and Valley pattern can be best illustrated by the below diagram.





This pattern is usually observed by ecommerce companies which have peak usage for 12 hours between 8:00 am to 8:00 pm in a day and rest of the day the capacities are usually under-utilized. Imagine you are running 20 X m1.large for you web/app tier and they are fully utilized during peak hours.  During the non-peak period the load decreases gradually and ~25 % utilization overall is observed in the nights.  Since only 25% utilization is observed in nights if you can reduce your capacity to 5 EC2 web/app instances in an automated way it will save infra + labor costs.  Let us calculate the savings one can achieve by introducing Amazon Auto Scaling into this scenario:
Formula:  Number of EC2 X current cost of m1.large (0.24 USD) X Hours
Without Cost Optimization

20 X m1.Large X 744
~3572 USD per month


Cost Optimization with Amazon Auto Scaling

20 X m1.large X 372 (hrs)
~1785 USD per month
15 X m1.large X 124
~446
10 X m1.Large X 124
~298
5 X m1.large X 124
~149

~2678 USD per month

Savings: Using Amazon Auto Scaling you can save ~25 % leakage a month in this scenario

Image source: AWS

Scenario 2: Weekly Fluctuation
Weekly Spikes and Valley pattern can be best illustrated by the below diagram.



This pattern is usually observed by online ticketing companies which have peak usage for 4 days week and normal -> under-utilization other days of the week. Since the load is fluctuating in a week, these companies cannot afford to lease capacity weekly. They usually plan their capacity based on the peak load traffic and provision their infrastructure. Since the entire infrastructure is running all days in a week, they will be wasting resources during the normal days.
These dynamic workloads are very good use case for Amazon Web Services and Amazon Auto Scaling. Let us explore this scenario in detail below. Imagine the ticketing company needs 20 m1.large ec2 instances to handle their peak periods. Instead of running 20 X m1.large EC2 instances satisfying your peak capacities all the time, you can run 5 EC2 instances for the normal days and Schedule an auto scale out to 20 EC2 instances before the peak days of the week. During the normal or peak days of the week, if the load traffic exceeds your capacity planning you can still automatically add more EC2 instances into your fleet.  Since 3 of the 7 days your instances are under-utilized (+) 8-12 hours under-utilization (late nights) during the peak days as well, using amazon auto scaling and dynamically expanding/collapsing the web-app tier will save lots of cost to the company. Let us calculate the savings one can achieve by introducing Amazon Auto Scaling into this scenario:
Without Cost Optimization

20 X m1.Large X 168
~806 USD per week


Cost Optimization with Amazon Auto Scaling

20 X m1.large X 48 (hrs)
~230 USD per week
15 X m1.large X 24
~87
5 X m1.large X 96
~115

~432 USD per week

Savings: From the above calculation you can observe that using Amazon Auto Scaling ~25 % leakage can be saved in a week.

Scenario 3: Seasonal Spike scenario
Seasonal Spikes pattern can be best illustrated by the below diagram.

This pattern is usually observed by online travel/ecommerce companies which have peak holiday period for 3-5 months with heavy utilization and rest of the year with normal/ under-utilized capacities. Companies traditionally used to buy or lease capacities well before the season and spend months provisioning them before the holiday season. Whereas Amazon Cloud world, though you can launch instances on demand, still some companies have this traditional mind set and run their infrastructure with peak capacity throughout the year. Reasons: sometimes it is because of the bad application/infra architecture and at times it because of IT team’s inadequate knowledge in AWS infra. This is a complete waste of resources and will eventually lead to leakage in cost.
Imagine for serving your peak traffic during holiday season you need 20 m1.large web/app instances, instead of having them running for whole year, you can automatically scale them down post the season gradually in Amazon infrastructure.
Using Amazon Auto Scaling you can schedule gradual increase of EC2 instance capacity 2 months before the holiday season and gradually decrease capacity 1-2 months post the peak season.  During the peak season if there is unpredictable increase in traffic auto scaling can still increase the EC2 fleet dynamically to handle the dynamic load. This approach avoids both cost leakage and lost opportunity cost for business. Let us calculate the savings one can achieve by introducing Amazon Auto Scaling into this scenario:
Formula:  Number of EC2 X current cost of m1.large (0.24 USD) X Hours X months
Without Cost Optimization

20 EC2 X m1.Large X 744 hrs X 12 months
~42,854  USD per year


Cost Optimization with Amazon Auto Scaling

20 X m1.large X 744 X 4
~14,284 USD per year
10 X m1.large X 744 X 2
~3571
5 X m1.large X 124 X 7
~6249

~24,105 USD per year



Savings: Using Amazon Auto Scaling you can save ~43 % leakage over a year in this scenario


Other Tips

Cost Saving Tip 1: Amazon SQS Long Polling and Batch requests
Cost Saving Tip 2: How right search technology choice saves cost in AWS ?
Cost Saving Tip 3: Using Amazon CloudFront Price Class to minimize costs
Cost Saving Tip 4 : Right Sizing Amazon ElastiCache Cluster
Cost Saving Tip 5: How Amazon Auto Scaling can save costs ?
Cost Saving Tip 6: Amazon Auto Scaling Termination policy and savings
Cost Saving Tip 7: Use Amazon S3 Object Expiration
Cost Saving Tip 8: Use Amazon S3 Reduced Redundancy Storage






Friday, April 19, 2013

AWS Cost Saving Tip 6: Amazon Auto Scaling Termination policy and savings


We all know that Amazon Auto Scaling launches and terminates EC2 instances automatically in response the traffic. Amazon Auto Scaling supports 5 types of termination policies currently to scale down the EC2 instances in event of low traffic. In this tip we are going to explore how choosing the termination policy wisely can save cost.
Imagine you are running online website with spikey traffic pattern in a day as illustrated below. 


If Instances are rapidly launched and terminated it may lead to cost leakage sometimes. Recommended approach is to scale out aggressively and scale down slowly, Example: If new instances are launched by auto scaling in an hour, we are already paying for that hour, so it is ideal that we retain those EC2 instances during that hour as much as possible and terminate them nearing the hour.
Let us see what options we have in Amazon Auto scaling for termination policies. Instead of discussing all the termination policies, we will take 2 policies and see their fitment:

Oldest Instance: You can configure this option if you want the oldest EC2 instance in your Auto Scaling group to be terminated. Auto Scaling uses the instance launch time to identify the EC2 instance that was launched first and terminates them. One catch to this approach is that Oldest EC2 instance need not be closest to that instance hour, so there are chances that they are terminated within 5 minutes of an instance hour start. Example: Imagine 4 X m1.xlarge EC2 instances are started at 9:00 AM EST and X new instances are launched subsequently during the day in batches according to load pattern. At 1:05 PM EST the traffic is slowed down drastically and Auto Scaling uses the OldestInstance Termination policy to bring down the 4 EC2 instances launched at 9:00 AM EST. Looks fine till now. But there is sudden surge of traffic @ 1:40 PM EST which demands 4 new EC2 instances to be launched. Now Auto Scaling launches the needed EC2 instances in the same instance hour (between 1:00 PM to 2:00 PM EST), we have unnecessarily terminated 4 EC2 instances , paid for it and as well launched another 4 and paid for it again as well. This boils down to cost leakage of 4 X 0.480 (current cost of m1.xlarge instance) = 1.92 USD for single Valley->Spike scenario. Imagine this pattern occurs 3- 4 times a day and totaling to ~120 times a month , which contributes to a cost leakage of 1.92 X 120 = 230 USD per month.
This cost leakage can be more than what we have predicted if:
  • ·      Valley-Spike scenario occurs more frequently per day
  • ·      Number of EC2 instances involved in Auto Scaling are more
  • ·      Instance Types used are bigger capacities and costlier

Now let us see how we can use more optimal Auto scaling termination policy to avoid this leakage. Welcome to ClosestToNextInstanceHour Termination policy.

ClosestToNextInstanceHour: You should configure this option if you want the instance that is closest to completing the billing hour to be terminated. In this case the Amazon Auto Scaling will not terminate the oldest instance, but it will terminate the instance that is closest to the next instance hour. Since it maximizes the EC2 instance run to the hour, the Valley-Spike can be accommodated without terminating-launching the EC2 instance rapidly. By selecting the instance that is closest to the next instance hour, it helps maximize the hours your instances run while minimizing the billable instance-hours. It is recommended to use this termination policy based on your scaling fitment and  save cost.


Other Tips

Cost Saving Tip 1: Amazon SQS Long Polling and Batch requests
Cost Saving Tip 2: How right search technology choice saves cost in AWS ?
Cost Saving Tip 3: Using Amazon CloudFront Price Class to minimize costs
Cost Saving Tip 4 : Right Sizing Amazon ElastiCache Cluster
Cost Saving Tip 5: How Amazon Auto Scaling can save costs ?
Cost Saving Tip 6: Amazon Auto Scaling Termination policy and savings
Cost Saving Tip 7: Use Amazon S3 Object Expiration
Cost Saving Tip 8: Use Amazon S3 Reduced Redundancy Storage

Wednesday, July 25, 2012

Part 8: (AZ Series) Availability Zones : Simple Latency Test


AWS Availability Zones: Simple latency test


We did a simple test to check the latency between Amazon Availability zones 1a and 1b (our account). 
The Test architecture had:
  • Multiple Grinder Load Clients
  • Tomcat Application Server and 1-RDS MySQL Database Server
  • M1.large instance type was used for the Tomcat and RDS MySQL
  • 100,000 txns generated in 60 seconds 
  • Region: US-East , Availability Zones : 1A and 1B in our account
  • In Practice Majority of Web/App EC2 and Master Database should reside in same AZ. For ease of testing purpose we have followed the above architecture.


Test 1: Observations
·         Java/Tomcat based App EC2 was launched on US-EAST-1A
·         RDS MySQL was launched on US-EAST-1A ( same availability zone)
·         Both were EC2 instances were m1.large capacity
·         100K txns/minute was generated from Tomcat to RDS instance
·         Average latency of 3 ms was observed for 100K txns in a single AZ setup

Test 2: Observations
·         Java/Tomcat based App EC2 was launched on US-EAST-1A
·         RDS MySQL was launched on US-EAST-1B (different availability zone)
·         Both were EC2 instances were m1.large capacity
·         100K txns/minute was generated from Tomcat to RDS instance
·         Average latency of 9 ms was observed for 100K txns in the multi-AZ setup.
·        Though it is roughly ~3X increase of latency from Test1, since the Average latency is in the range of single digit ms, it is suggested to use Multi-AZ deployments for applications requiring high availability.  Note: The observed ~3X latency difference will usually vary depending upon the Availability Zones (AZ origin / AZ destination /AWS Region) and it should not be treated as exact figure.

Other Related Articles :
(Full Article) Exploring Amazon Availability Zones 
Part 8: (AZ Series) Availability Zones : Simple Latency Test
Part 7: (AZ Series) AWS Availability Zones Usage charges
Part 6: (AZ Series) Guidelines for architecting applications across AWS Availability Zones
Part 5:(AZ Series) Availability Zone Names are logical names
Part 4: (AZ Series) How Amazon VPC uses Availability zones
Part 3: (AZ Series) How AWS Building blocks inherently leverage Availability Zones?
Part 2: (AZ Series) Why we should leverage AWS Availability Zones?
Part 1: (AZ Series) What is AWS Availability Zone ?







Part 7: (AZ Series) AWS Availability Zones Usage charges


AWS Availability Zones: Usage Charges

We are charged a small bandwidth charge (Regional Data Transfer) for data that crosses Availability Zones. Regional Data Transfer rates apply if at least one of the following is true, but is only charged once for a given instance even if both are true:
·   The other instance is in a different availability zone, regardless of which type of address is used.
    • Data transferred between instances in the same availability zone on EC2 costs $0.00 per GB.
    • Data transferred between instances across different availability zones on EC2 costs $0.01 per GB.
·   Public or Elastic IP addresses are used, regardless of which zone the other instance is in.
Also Data transfer between VPC and non-VPC instances in the same Region, regardless of Availability Zone, is charged at the usual rate of $0.01 per Gigabyte


Other Related Articles :
(Full Article) Exploring Amazon Availability Zones 
Part 8: (AZ Series) Availability Zones : Simple Latency Test
Part 7: (AZ Series) AWS Availability Zones Usage charges
Part 6: (AZ Series) Guidelines for architecting applications across AWS Availability Zones
Part 5:(AZ Series) Availability Zone Names are logical names
Part 4: (AZ Series) How Amazon VPC uses Availability zones
Part 3: (AZ Series) How AWS Building blocks inherently leverage Availability Zones?
Part 2: (AZ Series) Why we should leverage AWS Availability Zones?
Part 1: (AZ Series) What is AWS Availability Zone ?

Part 6: (AZ Series) Guidelines for architecting applications across AWS Availability Zones


Guidelines for architecting applications across AWS Availability Zones


A typical Web-Application Stack consists of following tiers; DNS tier, Load Balancers, Web Tier, App Tier, Cache, Database and Storage layer. It is important to run all independent application stacks in more than one AZ, so that if one zone fails, the application in the other zone can continue to run without disruption in AWS infrastructure. All the above mentioned tiers can be distributed and deployed to run on at least 2 or more availability zones inside an AWS region. In our experience we have seen the following set of tiers and software’s can be deployed across multiple availability zones with minimal configuration changes:







Sample Web/App Architecture using Multiple Availability zones


Following diagram illustrates a reference architecture using Multiple Availability zones of Amazon. Let us see what the various tiers in this architecture are and how they are using AZ concept.






DNS tier: Route53 
Load balancing Tier: Amazon ELB inbuilt with Multi-AZ
Web /App Tier: EC2 instances launched across Multiple Availability zones using Amazon AutoScaling. Integrated with Amazon ELB and CloudWatch 
Database Tier: RDS MySQL with Hot Standby, Multiple Read Replica’s in multiple AZ’s depending upon the Read Scaling needed 
Caching Tier: Amazon ElastiCache cluster or EC2 MemCached distributed in Multiple –AZ
Search Tier: Since Amazon CloudSearch currently support only single AZ; users can look at deploying Solr replication/Replicated shards across multiple Availability zones
NoSQL Tier: Amazon DynamoDB inherently replicates data in Multiple AZ’s/Facilities
CDN Tier: Amazon CloudFront internally uses global network of edge locations
Monitoring Tier: Amazon CloudWatch is used for monitoring the infrastructure. EC2 instances use detailed monitoring.


Other Related Articles :
(Full Article) Exploring Amazon Availability Zones 
Part 8: (AZ Series) Availability Zones : Simple Latency Test
Part 7: (AZ Series) AWS Availability Zones Usage charges
Part 6: (AZ Series) Guidelines for architecting applications across AWS Availability Zones
Part 5:(AZ Series) Availability Zone Names are logical names
Part 4: (AZ Series) How Amazon VPC uses Availability zones
Part 3: (AZ Series) How AWS Building blocks inherently leverage Availability Zones?
Part 2: (AZ Series) Why we should leverage AWS Availability Zones?
Part 1: (AZ Series) What is AWS Availability Zone ?

Part 5:(AZ Series) Availability Zone Names are logical names


Availability Zone Names are logical 


Availability Zones are not the same across AWS accounts. There is a common misconception that an AZ name like "US-east-1a" identifies a specific physical availability zone for everyone.  The fact is that AWS can map/remap the same AZ name to different physical availability zones across multiple accounts. The Availability Zone us-east-1a for account A is not necessarily the same as us-east-1a for account B. Zone assignments are mapped independently for each account. This is important when our infrastructure or use cases spans across multiple accounts. Example: Infrastructure provisioned through Account-A and Load Testing Agents are launched through Account-B, and both pointing to "US-east-1a" may not map to same AZ.


Other Related Articles :
(Full Article) Exploring Amazon Availability Zones 
Part 8: (AZ Series) Availability Zones : Simple Latency Test
Part 7: (AZ Series) AWS Availability Zones Usage charges
Part 6: (AZ Series) Guidelines for architecting applications across AWS Availability Zones
Part 5:(AZ Series) Availability Zone Names are logical names
Part 4: (AZ Series) How Amazon VPC uses Availability zones
Part 3: (AZ Series) How AWS Building blocks inherently leverage Availability Zones?
Part 2: (AZ Series) Why we should leverage AWS Availability Zones?
Part 1: (AZ Series) What is AWS Availability Zone ?

Part 4: (AZ Series) How Amazon VPC uses Availability zones


Multiple Availability Zones inside Amazon VPC


Using Amazon Virtual Private Cloud (Amazon VPC) we can provision a private, isolated section of the Amazon Web Services (AWS) Cloud where we can launch AWS resources in a virtual network that we define. We have seen enterprises mostly prefer VPC model of deployment in Amazon cloud.
Inside Amazon VPC, we can define a virtual network topology that closely resembles a traditional network with complete control over our virtual networking environment, including selection of IP address range, creation of subnets, and configuration of route tables and network gateways. Since Availability zone concept works inside VPC, for deploying highly available applications inside VPC it is recommended to run it in multiple Availability Zones.
Create multiple subnets inside a VPC and put each subnet in a distinct Availability Zone for High Availability. Currently a single VPC can span multiple Availability Zones and Multiple VPN connections, but we cannot create subnets inside Amazon VPC that spans multiple availability zones. Amazon VPC is available in all the regions of AWS infrastructure.
VPN Gateways are regional objects, and can be accessed from any of the subnets (subject, of course, to any Network ACLs that you create); Sample architecture using VPC-Multi-AZ is illustrated below:







Let me detail the above diagram:
Point 1) Amazon VPC is created in US-East Region of AWS.
Point 2) Multiple subnets are created inside a VPC and each subnet is put in a distinct Amazon Availability Zone for High Availability. Example: Have your Web, App and DB layer distributed in public/private subnets inside availability zone 1a and keep a similar set in availability zone 1b as well for HA. Since we cannot create subnets inside Amazon VPC that spans multiple availability zones, we need to achieve HA using the above mentioned subnet-AZ network architecture.
Point 3) Multiple VPN connections from the single VPC are attached to multiple customer gateways located in multiple geographies (simulating "branch office" architecture).

Other Related Articles :
(Full Article) Exploring Amazon Availability Zones 
Part 8: (AZ Series) Availability Zones : Simple Latency Test
Part 7: (AZ Series) AWS Availability Zones Usage charges
Part 6: (AZ Series) Guidelines for architecting applications across AWS Availability Zones
Part 5:(AZ Series) Availability Zone Names are logical names
Part 4: (AZ Series) How Amazon VPC uses Availability zones
Part 3: (AZ Series) How AWS Building blocks inherently leverage Availability Zones?
Part 2: (AZ Series) Why we should leverage AWS Availability Zones?
Part 1: (AZ Series) What is AWS Availability Zone ?

Part 3: (AZ Series) How AWS Building blocks inherently leverage Availability Zones?


How AWS Building blocks inherently leverage Availability Zones?


Most of the higher-level AWS, such as Amazon Simple Storage Service (S3), Amazon DynamoDB, Amazon CloudWatch, Amazon Simple Queue Service (SQS), and Amazon Elastic Load Balancing (ELB), have been built with inherent fault tolerance and high availability in mind. They already work across multiple availability zones inside an Amazon Region. Let us see how each of them uses the Availability zone concept;


Amazon ELB:  Amazon ELB can direct and load balance requests to multiple EC2 instances launched across multiple availability zones inside a Region. Load Balancer Instances are spawned in Multiple Availability Zones in the ELB tier as well internally when the traffic increases. 
Amazon RDS MySQL:  Amazon RDS for MySQL and Oracle currently supports Multi-AZ Hot Standby architecture, where the Primary Master will run on one Availability zone and Hot Standby (Secondary) will run on another Availability zone. In event of Primary AZ failure, the Hot Standby will start serving the requests from the alternative AZ. We can also create and launch multiple RDS Read Replica’s in Multiple Availability Zones for Read scaling and HA.
Amazon S3: Any data that is stored on S3 (Standard Storage option) is synchronized at multiple locations/facilities inside an Amazon Region. Amazon S3 Objects are redundantly stored on multiple devices across multiple facilities (AZ’s) in an Amazon S3 Region. To help ensure durability, Amazon S3 PUT and COPY operations synchronously store our data across multiple facilities before returning a successful response.
Amazon DynamoDB: Amazon DynamoDB service replicates data across three facilities/Availability zones in an AWS Region to provide fault tolerance in the event of a server failure or Availability Zone outage. Also to achieve high uptime and durability, Amazon DynamoDB does synchronous replication of data across these (multiple) facilities.
Amazon SQS: Amazon SQS stores all queue and messages redundantly on multiple servers and in multiple data centers/availability zones, which means that no single computer or network failure will render SQS messages inaccessible.
Amazon ElastiCache: Currently Amazon ElastiCache Cluster cannot span multiple Availability Zones inside an AWS Region. Deploy redundant ElastiCache Clusters in different Availability Zones for HA in AWS or alternatively use efficient cache warming techniques in your architecture for fault tolerance in this layer.
Amazon CloudWatch: Amazon CloudWatch can monitor EC2 instances which are deployed at multiple availability zones inside an Amazon Region. Amazon CloudWatch is an AWS building block and it is a Highly Available service by design. 
Amazon AutoScaling: Amazon AutoScaling can scale out/down EC2 instances across multiple Availability zones inside an Amazon Region. Amazon AutoScaling cannot span EC2 scale out across Amazon Regions.

Other Related Articles :
(Full Article) Exploring Amazon Availability Zones 
Part 8: (AZ Series) Availability Zones : Simple Latency Test
Part 7: (AZ Series) AWS Availability Zones Usage charges
Part 6: (AZ Series) Guidelines for architecting applications across AWS Availability Zones
Part 5:(AZ Series) Availability Zone Names are logical names
Part 4: (AZ Series) How Amazon VPC uses Availability zones
Part 3: (AZ Series) How AWS Building blocks inherently leverage Availability Zones?
Part 2: (AZ Series) Why we should leverage AWS Availability Zones?
Part 1: (AZ Series) What is AWS Availability Zone ?

Need Consulting help ?

Name

Email *

Message *

DISCLAIMER
All posts, comments, views expressed in this blog are my own and does not represent the positions or views of my past, present or future employers. The intention of this blog is to share my experience and views. Content is subject to change without any notice. While I would do my best to quote the original author or copyright owners wherever I reference them, if you find any of the content / images violating copyright, please let me know and I will act upon it immediately. Lastly, I encourage you to share the content of this blog in general with other online communities for non-commercial and educational purposes.

Followers