O nosso aplicativo da web deve ser Cloud ou vários VPS?

3

Digamos que temos um aplicativo da Web e um processo automatizado / por baixo do capô que atualiza o banco de dados. No momento, todos eles funcionavam no mesmo servidor.

Gostaríamos de separar o processo em lote da atividade do apache e do banco de dados:

  • servidor 1: webserver - flutuação / surtos de carga da CPU e consumo de BW
  • servidor 2: dbserver - E / S flutuante do servidor da Web e E / S constante / pesada do processo em lote
  • servidor 3: processo em lote - carga da CPU estável / baixa e BW constante / pesado

Uma solução seria configurar 3 VPS (por exemplo, no Slicehost / Rackspace).

Ou devemos ir Cloud? Digamos que o Amazon EC2: configurar 3 instâncias do EC2 é realmente um exagero, não é? E se eu transferir todos os 3 "servidores" para uma instância do EC2, teremos a mesma confiabilidade que uma solução de 3 VPS? (considere 1 EC2 = 1 VPS 1.6 GB 1 / 1.2 GHz Opteron / Xeon)

Quais são as diferenças / vantagens de cada solução (1EC2 ou 3VPS)?

    
por Trident Splash 09.09.2009 / 15:13

2 respostas

2

Você não está realmente fazendo uso do conceito "Cloud" (dinamicamente escalonável) em sua arquitetura proposta - você está executando vários VPSs.

Então minha resposta seria; se você for desse jeito, não acho que você tenha alguma vantagem usando o Amazon EC2 sobre VPS / servidor dedicado. Na verdade, há provavelmente mais desvantagens (por exemplo, mais difícil de fazer armazenamento persistente, e sim, eu sei que você deve planejar a falha de disco / servidor em um VPS padrão)

Expandindo a resposta - você provavelmente acabaria com um desses 3 servidores em pleno funcionamento e sendo o gargalo enquanto outro estava quase fazendo nada.

Uma arquitetura mais 'parecida com a nuvem' seria ter

Instância do servidor Web usando o Balanceamento de carga elástica .

Quando ele fica ocupado (algumas métricas como carga da CPU / fila / tempo de carregamento da página, etc.), você tem um processo de monitoramento gira outra instância do servidor da Web e a adiciona ao farm. Repita conforme necessário. Quando as coisas se acalmam, as instâncias do servidor web podem ser removidas do farm.

Servidor de banco de dados

Se você puder usar o serviço Amazons SimpleDB , então tudo é feito para você. Se você precisa de um banco de dados mais tradicional, esta é provavelmente a parte mais difícil do sistema para arquitetar de uma maneira que seja facilmente escalável. Eu vou pular convenientemente aqui!

Uma instância de "processamento de trabalho"

Digamos que seus trabalhos em lote estejam armazenados em algum tipo de fila (por exemplo, Simple Queue Service - SQS ). Um servidor de processamento em lote seleciona jobs dessa fila e os processa. Se a fila crescer além de um certo tamanho, você gera mais instâncias de 'processamento em lote'.

Você pode ficar muito chique com isso e ter alguns de seus trabalhos em execução em uma instância do servidor da web quando a carga estiver leve e passar para instâncias dedicadas quando estiver pesada - ou praticamente qualquer mistura que você possa imaginar. Mas, para realmente usar o conceito de 'Nuvem', você deve ter uma arquitetura que suporte a adição dinâmica de um número X de servidores ao seu pool.

O garoto-propaganda dessa abordagem provavelmente é Animoto que é um serviço que tira as suas fotos, mistura-as com algumas músicas e cospe um vídeo. Um trabalho intensivo de CPU que é perfeito para um conjunto de instâncias do EC2. Confira o gráfico, indo de 50 a 3500 servidores em questão de dias - isso é o poder da computação em nuvem.

    
por 09.09.2009 / 16:50
2

Esta é a minha opinião pessoal - para que outra pessoa sinta-se à vontade para discordar ou corrigir meus pontos, se eu estiver equivocado.

"The Cloud" é apenas um VPS com nova marca. Qualquer instância do EC2 na Amazon será tão estável e fornecerá o mesmo poder de processamento quanto um VPS (dependendo das especificações). O benefício que a plataforma da Amazon oferece é que suas instâncias do EC2 são fáceis de criar, copiar e iniciar. Se seus sistemas são projetados para aproveitar esses recursos, a Amazon seria um bom caminho a percorrer. Se você planeja carregar todas as tarefas em um sistema, não verá nenhum benefício em migrar para a "nuvem da Amazon".

Além disso, eu diria que ambas as soluções oferecem a mesma confiabilidade. Se algum desses servidores cair, todo o sistema estará inativo. No entanto, o ato de dividir em servidores separados lhe dará uma vantagem de desempenho, mas não fornece nenhuma confiabilidade adicional - o oposto; adiciona pontos de falha no sistema.

Se a confiabilidade é seu objetivo, eu procuraria configurar vários servidores web e / ou db com failover. Se a velocidade é o seu objetivo, eu iria dividir em 3 VPSes (ou servidores dedicados). Se você tiver tempo ou objetivos para escalabilidade e confiabilidade, então projete seu sistema para implantação com o Amazon EC2 (com E lastic Load Balancing ) também funcionaria bem.

    
por 09.09.2009 / 15:53