AWS - como atender mais rapidamente aos usuários ultramarinos

6

Nossas infraestruturas contam com a AWS na região do us-east-1. (EC2, CloudFront, RDS, ElastiCache)

Agora temos mais e mais usuários da APAC. Os usuários começam a reclamar da velocidade da rede para o nosso site. (por favor, note que já estamos usando o CloudFront para servir ativos estáticos)

Algumas pistas depois da pesquisa:

  1. Clone um conjunto de infras em uma região APAC (por exemplo, JP)
    • $$ preocupação
    • Um fato encontrado por um teste rápido: a latência entre us-east-1 < --- > o ap-norteast-1 tem cerca de 160-180ms.
    • Não é realmente viável no nosso caso. Embora possamos criar uma réplica de leitura de banco de dados no JP, os servidores da Web ainda devem enviar operações de gravação para os EUA.
    • O ElastiCache não suporta a região cruzada. ie. O US ElastiCache só é acessível por instâncias ec2 dos EUA.
  2. Um VPC em cada região interconecta ambos os VPCs com o túnel IPSec / VPN. O JP contém apenas servidores da web, todos os outros serviços permanecem nos EUA.
    • Ainda assim, há latência entre EUA e JP
  3. Usando o otimizador de WAN para o túnel VPN em # 2
    • Alguém tem experiências sobre isso? Eu não encontrei muito no google para otimização de VPC para VPC ...
  4. Usando o Railgun da CloudFlare
    • Precisamos apenas instalar o ouvinte Railgun nos servidores da web dos EUA
    • Muito mais simples, ainda não precisamos de nada em execução no JP

Minhas perguntas:

  • Qual é a melhor maneira / prática recomendada do setor? Para escalar em outra região? Eu sei que algumas empresas têm seus infras em uma única região, mas como elas asseguram a velocidade para os usuários ultramarinos?
  • Para o nº 2, a ajuda persistente do túnel?
  • Para # 2 / # 3, supondo que a latência e a velocidade da rede entre as regiões possam ser otimizadas, é realmente necessário ter servidores da web no JP? Que tal ter apenas servidores proxy no JP que os pedidos de proxy para servidores web dos EUA?

Qualquer ajuda será apreciada, obrigado: D

    
por Chris Lam 12.07.2014 / 18:34

2 respostas

7

O mundo é um lugar razoavelmente grande e, embora a largura de banda da rede esteja aumentando constantemente a latência de rede entre uma parte do mundo e a extremidade oposta do globo, não vai desaparecer tão cedo.

Otimização e ajuste em vários níveis podem melhorar a experiência do usuário, mas no final você alcançará o nível em que a única maneira viável de melhorar o desempenho é reduzir a latência colocando seus dados fisicamente mais próximos do usuário final.

Umbomlivrocommuitosinsightseaorigemdográficoacimaé Rede de navegadores de alto desempenho pelo desempenho da Web engenheiro Ilya Grigorik.

O que é mais econômico / ideal depende de seu cenário específico, de sua base de código e requer testes cuidadosos. Não há solução única de infra-estrutura mágica.

A maioria dos aplicativos que precisam escalar em massa passam por um ou vários reprojetos para lidar com isso. Escolhas de design, tecnologia e suposições que pareciam válidas para a quantidade X de usuários provaram estar erradas por 100 ou 1000 vezes.

Lições interessantes aprendidas são encontradas no blog de alta escalabilidade

Redesenhar o código do seu aplicativo para que conteúdo dinâmico possa ser armazenado em cache melhor é uma abordagem, por ex. Dê uma olhada no modelo de verniz que permite que seu aplicativo da Web invalide o conteúdo dinâmico em cache sob demanda, o que funciona muito bem quando muito conteúdo dinâmico realmente não precisa ser regenerado completamente para cada solicitação. Isso deve permitir que você faça um melhor uso de um CDN e significa que você pode ficar em uma única região de disponibilidade.

Recriar seu aplicativo para que ele funcione em várias zonas de disponibilidade também melhorará a recuperação de diasters e não apenas melhorará o desempenho para usuários internacionais.

    
por 12.07.2014 / 20:09
5

Você tem que trocar entre experiência do usuário e dólares. Primeiro, gostaria de saber quantos usuários em percentual são provenientes da APAC. Se for inferior a 10%, o melhor curso de ação é provavelmente esperar para ver o que acontece.

Você também não diz que tipo de aplicativo está suportando e como é sensível à latência. Você tomaria uma decisão se fosse um aplicativo de bate-papo com vídeo em tempo real e outro se fosse um aplicativo de mídia social eventualmente consistente.

Tudo o que disse, você encontrou o conjunto certo de opções.

Eu gosto da sua opção 2 melhor. Eu colocaria o máximo possível de proxy / serviço da web o mais próximo possível do maior número possível de usuários. Apesar do fato de que algum tráfego sempre terá que retornar ao seu local do us-east-1, fazer com que a primeira conexão termine na região levará a uma experiência de usuário muito melhor. Pense em viagens de ida e volta SSL.

Eu também verifico SPDY .

Eu também penso em mudar de us-east-1 para us-west-2 para sua presença nos EUA.

Os túneis VPN são uma boa ideia e não tão difíceis de configurar.

Eu configuraria túneis redundantes usando o OpenVPN .

    
por 12.07.2014 / 18:52