We have our infras relying on AWS in the us-east-1 region. (EC2, CloudFront, RDS, ElastiCache)
We are now having more and more users from the APAC. Users start to complain about network speed to our website. (please note we are already using CloudFront for serving static assets)
Some clues after research:
- Clone a set of infras to an APAC region (eg. JP)
- $$ concern
- A fact found by a quick test: The latency between us-east-1 <---> ap-norteast-1 is around 160-180ms.
- Not really feasible in our case. Although we can create DB read replica in JP, web servers must still send write operations to US.
- ElastiCache does not support cross-region. ie. US ElastiCache is only accessible by US ec2 instances.
- A VPC in each region, interconnect both VPC's with IPSec/VPN tunnel. JP contains only web servers, all other services remain in US.
- Still, there is latency between US and JP
- Using WAN optimizer for the VPN tunnel in #2
- Anyone has experiences on this? I couldnt find much in google for VPC-to-VPC optimization...
- Using CloudFlare's Railgun
- We only need to install the Railgun listener in the US web servers
- Much much simpler, we even dont need anything running in JP
My questions:
- What is the best way/industry best practice? To scale up into another region? I know some companies have their infras in a single region only, but how do they ensure the speed for oversea users?
- For #2, does persistent tunnel help?
- For #2/#3, assuming the latency and network speed between regions can be optimized, is it really necessary to have web servers in JP? How about having only proxy servers in JP that proxy requests to US web servers?
Any help will be appreciated, thanks :D