How could I determine which AWS location is best for serving customers from a particular region?

Amazon S3Amazon Ec2Amazon Web-Services

Amazon S3 Problem Overview


AWS has several locations for storage and EC2 instances to run upon with different pricing. How could I determine which location is best for a particular region. Is it intuitive (closer to your serving region is the best) or are there any reliability concerns (particular AWS location facing more outages than others). Is there any data available for making such decision?

I am developing an application that is mainly targeted towards Indian customers. So, I am considering Singapore or Tokyo as an option.

Amazon S3 Solutions


Solution 1 - Amazon S3

Determining lowest latency AWS location for custom usage

The smart and innovative folks from TurnKey Linux recently open sourced their solution to your problem, see AWS Regional Data Centers mapping on GitHub:

> This project is used to generate the indexes (and visual map for > reference) used by the TurnKey Hub to find the closest AWS data center > for a user. [emphasis mine]

The algorithm in use is further detailed in Finding the closest data center using GeoIP and indexing as well as the follow up post Finding the closest APT package archive using GeoIP and indexing.

While a bit of a gimmick, the visualization is seriously cool and confirms resp. illustrates the reason for the at first sight surprising fact Josh mentioned already, namely that users in Australia currently tend to get better latency via the US West (Northern California / us-west-1) rather than the Asia Pacific (Singapore / ap-southeast-1) region. (Tip: checking Future Cables at the bottom right corner reveals this is likely going to change, which is further detailed in Greg's Cable Map, which indicates Australia might jump between both AWS locations latency wise in the years to come ;)

Using lowest latency AWS location automatically via Amazon Route 53

Meanwhile AWS is providing a helpful map illustrating their Global Infrastructure for a quick assessment, alongside respective details like e.g. number of availability zones and the API endpoint.

More importantly though, AWS has just announced the geographic DNS support Jahufar mentioned already, see the introductory post Multi-Region Latency Based Routing now Available for AWS, which is making available the same latency based routing technology that powers Amazon CloudFront to users of Amazon EC2, Elastic Load Balancing, and more.

So in case your environment is comprised of an Auto Scaling EC2 Instances architecture already, simply applying this latency based routing should solve your problem automatically.

While the use case obviously targets offerings spawning multiple AWS regions, the sophisticated features around Latency Based Routing and Weighted Round Robin Record Sets might allow you to determine the desired information more easily yourself as well.

Solution 2 - Amazon S3

Try cloudping.info, it will do HTTPS ping from your browser to each AWS region.

Region	Latency
US-East (Virginia)	28 ms
US-West (California)	100 ms
US-West (Oregon)	110 ms
Europe (Ireland)	100 ms
Europe (Frankfurt)	119 ms
Asia Pacific (Singapore)	269 ms
Asia Pacific (Sydney)	239 ms
Asia Pacific (Japan)	209 ms
South America (Brazil)	147 ms
      

Solution 3 - Amazon S3

There is also a website for speed test: https://cloudharmony.com/speedtest if you easily want to check which region is best for you.

Solution 4 - Amazon S3

Here's a console tool that shows the nearest aws region:

It's written in golang and very easy to use:

➥ ./awsping --verbose 1
      Code            Region                                      Latency
    0 eu-central-1    Europe (Frankfurt)                         36.97 ms
    1 eu-west-1       Europe (Ireland)                           63.18 ms
    2 us-east-1       US-East (Virginia)                        126.52 ms
    3 ap-south-1      Asia Pacific (Mumbai)                     156.98 ms
    4 us-west-1       US-West (California)                      192.92 ms
    5 us-west-2       US-West (Oregon)                          226.23 ms
    6 sa-east-1       South America (São Paulo)                 247.74 ms
    7 ap-northeast-1  Asia Pacific (Tokyo)                      312.22 ms
    8 ap-northeast-2  Asia Pacific (Seoul)                      329.54 ms
    9 ap-southeast-2  Asia Pacific (Sydney)                     337.84 ms
   10 ap-southeast-1  Asia Pacific (Singapore)                  395.73 ms

Regions are ordered by the latency.

You can run it on any server and determine the nearest region for you.

Solution 5 - Amazon S3

Testing latency to different regions is obviously advisable! I'm located in Australia and many users here get better latency to US West than to Singapore - in part it comes down to local ISPs peering and international connectivity. It's relatively straightforward to test if you have users in the region you're targeting.

Reliability on the AWS side (i.e. not user network issues) is mostly a consequence of deployment across multiple Availability Zones. There are more choices in US regions than in APAC ones simply because they've been serving those markets longer. A side effect of this is that features are deployed relatively late to Singapore/Tokyo - normally new features start rollout in US East.

As you already have S3 and EC2 in mind as services you'd like to use and they're both available in closer regions, evaluate whether newer web services from AWS are immediately important - if not, shoot for something (latency) close by.

Solution 6 - Amazon S3

Amazon is now offering the ability to route to a datacenter based on lowest end-user latency. It's Route53's new "Latency Based Routing"!

http://docs.amazonwebservices.com/Route53/latest/DeveloperGuide/CreatingLatencyRRSets.html

Solution 7 - Amazon S3

EDIT: Look at Mark Tsai's answer. That's the way to go (Route 53 didn't exist when I wrote this one)

This probably belongs in ServerFault but here goes:

What you are basically asking for is Geo DNS.

Right now it's not directly supported in AWS - although I've seen some talk of it being implemented in some AWS forum posts - most probably in their Route 53 service.

Until then, you could look into 3rd party solutions such as Zerigo that would provide you with Geo DNS facility.

Or if you are hardcore you could roll your own by configuring BIND with IP2Location

EDIT: There is a post on ServerFault that talks about Geo DNS providers

As for your question regarding performance and AWS reliability: You should consider serving up your site from the nearest AZ to your user - it makes perfect sense in terms of speed and not having all your instances in a single AZ. You could check AWS Service Health Dashboard to get an general idea how reliable Amazon's services are in different AZs. Note that this data is directly from Amazon - I've not seen any independent stats anywhere else.

Solution 8 - Amazon S3

Good tool/site to Check Latency from our location

http://www.cloudwatch.in/

enter image description here

Solution 9 - Amazon S3

http://blog.datapath.io/aws-network-latency-map discusses a commercial offering to get this information. It shows latency time from the location you specify, to the AWS service you specify, on a map.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionGagandeep SinghView Question on Stackoverflow
Solution 1 - Amazon S3Steffen OpelView Answer on Stackoverflow
Solution 2 - Amazon S3Alex BView Answer on Stackoverflow
Solution 3 - Amazon S3LarSView Answer on Stackoverflow
Solution 4 - Amazon S3shorrtyView Answer on Stackoverflow
Solution 5 - Amazon S3JoshView Answer on Stackoverflow
Solution 6 - Amazon S3Ming TsaiView Answer on Stackoverflow
Solution 7 - Amazon S3Jay SidriView Answer on Stackoverflow
Solution 8 - Amazon S3BJ PatelView Answer on Stackoverflow
Solution 9 - Amazon S3Douglas HeldView Answer on Stackoverflow