Esta questão seria quase impossível de responder em sua forma atual, porque é muito amplo de um assunto. As coisas necessárias para responder a isso envolvem todo um campo de engenharia onde as pessoas ganham a vida fazendo tempo integral (inclusive eu). IMHO, é parte ciência e parte arte, e você encontrará vários livros (por meu colega) por aí que falam sobre esse assunto.
Portanto, posso fornecer apenas alguns indicadores breves e amplos.
- Não existe uma fórmula única para determinar a melhor direção a escalar. Devido a vários aplicativos com as mesmas métricas capturadas e previstas, a maneira de dimensioná-las pode ser totalmente diferente. Tudo depende de onde os gargalos são baseados no comportamento de aplicação (mis).
- A melhor maneira é realmente testar e medir. Certifique-se de que seu aplicativo esteja instrumentado para que você possa testar o aplicativo com cargas variadas e observar / medir os efeitos em TODOS os seus recursos (servidor, rede, etc.). Você também precisará testar à medida que escala em direções diferentes.
- A partir da experiência, a maioria dos problemas de escalonamento de aplicativos da web não é (ou não deveria) ser resolvida jogando mais hardware / recursos nele. Mais frequentemente do que não, é o código e suas ineficiências (que eu classifico como um defeito)
Com isso dito, se eu fizesse tudo isso e precisasse escolher uma solução de hospedagem, a que tivesse mais flexibilidade e capacidade, tanto em termos de oferta quanto de controle de custos, seria a Amazon Web Services (AWS). . É o único provedor de hospedagem que usei que se aproxima dos grandes data centers corporativos e fornece a maioria dos recursos que eu estava procurando. Os principais recursos são:
- Você pode realmente hospedar seu aplicativo lá para começar com um custo (ou quase nenhum) usando o nível gratuito
- Você pode dimensionar verticalmente (aumentar a CPU e a memória em um único host) com apenas alguns cliques e reinicializar
- Você pode dimensionar horizontalmente (é claro) com mais servidores e outros serviços dependentes (como balanceadores de carga)
- Eles têm muitos outros serviços além da hospedagem de VMs (o serviço do EC2 é apenas um dos serviços deles)
Não tenho experiência com outros provedores de IaaS (Rackspace, Microsoft Azure etc.), portanto não posso compará-los nem compará-los. Talvez isso ajude você a seguir um caminho para começar sua pesquisa.
Divulgação: No momento de escrever esta resposta, não possuo ações da Amazon nem trabalho para elas =)