Cloud hosting: precisamos disso?

3

Temos um servidor (4 GB de RAM, dois Intel Xeon E5420 de 4 núcleos) executando as seguintes tarefas:

  • website com conteúdo estático (atualmente apenas alguns CMS, planejamos adicionar um proxy reverso de armazenamento em cache)
  • painel de controle do cliente (basicamente interface da web para um banco de dados)
  • scripts de back-end para nosso software de desktop - alguns scripts PHP que executam algumas consultas / atualizações de banco de dados, mas serão atingidos a cada 5 minutos por cliente
  • banco de dados armazenando dados para os dois acima

Esperamos um afluxo grande (até centenas de milhares) de usuários nas próximas semanas. Meus superiores estão preocupados que nossa configuração atual possa não ser capaz de lidar com a carga, e estão considerando migrar para a hospedagem na nuvem - no entanto, não estou convencido de que isso ajudaria. Pelo que eu entendo de computação em nuvem, a virtualização não será de muita ajuda, a menos que possamos dividir a carga de trabalho em várias máquinas (a menos que tenham servidores individuais significativamente mais poderosos que os nossos). Eles oferecem clusters MySQL, no entanto, os scripts de backend simplesmente lêem / escrevem alguns valores em poucas linhas e não executam consultas SQL computacionalmente intensas, então, novamente, não tenho certeza se os clusters MySQL farão muita diferença em comparação com o Apache / Sobrecarga PHP + latência de rede MySQL. Quanto ao site, poderíamos também mover a maior parte do conteúdo estático para um CDN, pois temos alguns clipes de vídeo que poderiam sobrecarregar nossa largura de banda.

Então, a hospedagem em nuvem nos beneficiaria de alguma forma?

    
por Vladimir Panteleev 14.11.2009 / 09:21

2 respostas

5

Talvez, talvez não. Como você suspeita, a menos que seja possível dividir facilmente a carga de trabalho do sistema em unidades discretas que podem se comunicar pela rede, você não verá qualquer benefício de ir para um provedor "em nuvem" em termos de escalabilidade. Existem provedores de "nuvem" que oferecem máquinas muito maiores (do ponto de vista de RAM, de qualquer maneira - tenho minhas dúvidas de que você obterá consistentemente o equivalente a oito núcleos E5420 de qualquer um deles), mas você pode obter mais RAM para o seu servidor existente, também, se necessário.

Eu gastaria o tempo olhando para cada componente individual do sistema, avaliando o uso de recursos de cada um e, portanto, quanto de um "salvamento" seria movê-lo para uma caixa separada. Em seguida, observe como cada componente (a partir do uso mais intenso de recursos) pode ser armazenado em cluster, para que o trabalho desse componente possa ser dividido em várias máquinas (o que é chamado de "escalabilidade horizontal"). Uma vez feito isso para tudo o que tem o potencial de usar em qualquer lugar próximo aos recursos de uma máquina em seus níveis de carga projetados, você pode consultar seus superiores com um plano e uma estimativa de esforço e custo para dividir tudo.

Nada disso é específico para "nuvem", é apenas uma investigação básica de due diligence sobre como lidar com o aumento da carga do usuário. Onde você pode começar a usar os benefícios da computação em nuvem é quando você precisa escalar rapidamente. Basta apertar um botão e whoomp! há mais recursos à sua disposição. Não espere até que a carga apareça para testá-la - se você valorizar seu tempo de atividade, execute com pelo menos dois de cada componente escalonável o tempo todo, calcule quais serão os limites do gatilho de expansão. avançar, monitorá-los e gerar suas novas instâncias o mais rápido possível. Em seguida, coloque o sistema sob carga pesada e teste que tudo funciona conforme o esperado.

    
por 14.11.2009 / 09:33
2

Como Pauska indica, muito do valor de um ambiente virtualizado é a redundância e a disponibilidade, além da escala. Você pode querer considerar uma solução de estilo de nuvem privada, como a Rackspace, ou criar sua própria, supondo que você tenha uma boa equipe VMWare em casa. Isso levará algum tempo, no entanto, como excelente post womble indica para acertar.

Se você tiver um prazo chegando rápido e não tiver tempo para pesquisar os seus aplicativos, os seguintes itens vêm à mente:

  • Tente mover o serviço da web para um servidor separado, para que o MySQL possa ter toda a máquina de 8 núcleos. Isso é extremamente importante em ambientes MS, mas tenho certeza que também tem valor nas pilhas LAMP.
  • Dê a todas as máquinas envolvidas mais RAM - a RAM é barata. A quantidade de tempo que você levará para pesquisar isso vai custar mais do que a RAM na minha experiência, então faça isso.
  • Considere o armazenamento em cache reverso. Dividir um cache reverso na frente de tudo isso pode aliviar a carga e melhorar a escala sem complicações.
  • Leia a excelente resposta da womble e siga os conselhos dele também.
por 14.11.2009 / 16:52