A maioria dos provedores 'cloud' fornece IaaS. Isso significa que você obtém um conjunto de máquinas virtuais que você pode gerenciar livremente. Em suma, estes são apenas serviços VPS, com a facilidade adicional de uma API para criar novos servidores quando você quiser. Às vezes, você pode vincular essa API a algumas métricas simples (carga da CPU, tráfego etc.), facilitando-a um pouco.
Mas não é mágica. Isso não tornará seu site escalável sem o trabalho de sua parte. O que você precisa fazer é projetar seu sistema para que você possa adicionar mais máquinas (similares) para distribuir a carga e que ela possa sobreviver à perda de algumas dessas máquinas.
Os primeiros passos são:
-
um aplicativo da web 'nada compartilhado': garanta que todas as páginas estejam o menos apátridas possível. Qualquer persistência entre solicitações HTTP deve ser armazenada não localmente. Inicialmente, isso significa que tudo "crítico" deve ir para um banco de dados e qualquer coisa não crítica para algo como o memcached.
-
um balanceador de carga, distribuidor tolerante a falhas. Seja fornecido pela hospedagem ou pelo seu próprio (HAProxy, verniz, NginX) sendo executado na frente de seus aplicativos (certifique-se de torná-lo redundante também).
-
um banco de dados replicado. por exemplo, o MySQL em um mecanismo mestre / escravo e algum failover que migra um número IP 'flutuante' para o escravo se o mestre falhar. ou um mestre / mestre, que também pode fornecer uma taxa de transferência extra às custas da latência. A Amazon também oferece um banco de dados compatível com o MySQL, com toda a redundância que você provavelmente precisará. Ou vá a algo completamente diferente, como riak, cassandra ... na verdade, essa é a parte mais difícil; mas apenas replicar o MySQL em duas instâncias maiores é um longo caminho; especialmente se você for esperto na camada de cache.