Como liberar lentamente um aplicativo da Web para mais e mais usuários, para que muitos usuários simultâneos não travem seu site?

5

Eu tenho um aplicativo da web que espero ir viral muito rapidamente.

Como posso controlar o tráfego para que ele não trave com muita carga?

Esta aplicação não requer login de usuário. Ela será testada corretamente, mas não tenho certeza do tipo de tráfego que deve ser esperado até que eu apresente ao vivo.

    
por Mag20 02.11.2013 / 18:07
fonte

4 respostas

5

É mais difícil controlar sem um login.

Outra opção é proteger o site com uma "chave de acesso" que você pode fornecer aos seus usuários beta. Eu pessoalmente não gosto disso e eles vão inibir a expansão inicial do seu site, já que todos os usuários precisarão dessa chave, e o site não será indexado pelo Google, etc.

O seu melhor é fazer alguns testes de carga. Resolva os gargalos no seu código e tenha um plano de expansão se achar que ele se expandirá rapidamente. Você precisa ter este plano pronto para que você possa simplesmente clicar em um botão e adicionar outro servidor com carga balanceada, etc.

    
por 02.11.2013 / 18:51
fonte
1

Qual é o seu gargalo?

Assumindo que a largura de banda é um problema seu, por exemplo ao servir imagens de alta resolução, usar um CDN será benéfico.

Se o seu site é computacionalmente caro, o balanceamento de carga entre vários servidores parece ser o caminho a ser seguido. Hospedar seu webapp em uma nuvem facilitará esse dimensionamento, e você sempre poderá reduzir ou passar para uma solução conservadora quando puder estimar com precisão o número de usuários. O dimensionamento em vários servidores pode se tornar difícil se os usuários interagirem entre si usando seu site. Nesse caso, a comunicação ponto a ponto entre usuários ou uma fila de mensagens entre seus servidores parece uma boa ideia.

Você pode querer ajustar sua pilha de tecnologia para um melhor desempenho. Conteúdo estático pode ser armazenado em cache. Se você estiver executando uma linguagem interpretada no servidor, uma implementação alternativa pode ter um perfil de desempenho melhor (possivelmente trocando tempo de inicialização ou memória para execução geral mais rápida). Não há desculpa para usar scripts CGI neste dia e idade para uma webapp moderna.

Eu não sei como você lançará seu site. Se você está alvejando um público internacional, uma possibilidade seria liberar o site em um determinado horário local para cada usuário. Uma variação disso seria exibir o site como fechado para uma determinada porcentagem de IPs quando a carga é alta. No entanto, exigir um endereço de email para efetuar login seria realmente preferível. Se a carga estiver alta, diga ao usuário que ele receberá o e-mail de ativação em cerca de dez minutos (mas, dê prioridade a ele). Você também pode fornecer URLs com um token de acesso a indivíduos específicos antes de abrir o site oficialmente. Você pode tentar estimar o interesse público de várias métricas, como a porcentagem de pessoas que usaram seus tokens, o número de tweets, etc.

Um controlado lançamento pode ser alcançado, dando a cada usuário de pré-abertura um número de mais fichas, que ele pode dar. Isso permite ajustar a taxa de expansão até você abrir para o público em geral. Tenha cuidado com essas táticas: enquanto a escassez artificial pode aumentar o interesse, isso também torna mais difícil para o seu produto “se tornar viral”.

Se houver poucos slots fixos disponíveis para os usuários, você poderá exibir sua posição em uma fila de espera e talvez dar uma pista sobre o tempo de espera restante. Como você pode reduzir o tempo de espera percebido é uma questão interessante sobre UX.

No final, essa não é apenas uma questão técnica interessante, mas também uma questão de marketing .

    
por 02.11.2013 / 19:12
fonte
1

Como um novato neste site e o risco de não conhecer a etiqueta adequada, por que você não projeta o aplicativo com o scale-out em mente, imediatamente. Comece com um NoSQL escalável ou banco de dados semelhante no back-end, camada de cache abaixo do site, serviços distribuídos que escalam automaticamente (SOA, se você preferir) ou como alguém diz ao pressionar o botão. A janela de oportunidade é estreita sobre as coisas, por que não planejar uma expansão rápida e pegar a onda versus tentar controlar os usuários. Existem estruturas de software com as quais você pode construir agora, dependendo de quais tecnologias você precisa, que têm escala em mente.

    
por 03.11.2013 / 05:17
fonte
0

Use um balanceador de carga para direcionar o tráfego para dois sites, sendo um deles o site ativo, sendo o outro uma página de boas-vindas com uma mensagem amigável que solicita ao visitante que tente novamente mais tarde ...

    
por 03.11.2013 / 04:51
fonte