Do topo da minha cabeça eu olharia para o Amazon SimpleDB já que você já está no ecossistema aws. Mas é difícil dizer sem mais informações sobre seu aplicativo do que apenas "um aplicativo da web".
Especificamente, estou procurando técnicas para dimensionar um aplicativo da Web que não tenha um servidor de banco de dados central, na nuvem, mas as recomendações gerais são ótimas.
Eu já vi o GlusterFS , que parece ótimo, mas ainda não estou claro como ele se encaixa na arquitetura de uma aplicação web. Isso também é interessante para mim.
Obrigado pelos conselhos e links.
Do topo da minha cabeça eu olharia para o Amazon SimpleDB já que você já está no ecossistema aws. Mas é difícil dizer sem mais informações sobre seu aplicativo do que apenas "um aplicativo da web".
Você pode usar o link do Elastic Load Balancing para balancear a carga de alguns servidores web nginex e, em seguida, dois ou três servidores de aplicativos com Thin ( link ) configurado como um cluster. Como Cloud DBMS, você pode usar o RDS, que é a oferta da Amazon para o MySql. Você pode compartilhar as sessões, mas usando armazenamento de sessão AR ou usando memchaced.
O Thin é um servidor de aplicativos para Ruby, mas você pode substituir Thin por Apache + mod_php, Tomcat ou qualquer outra coisa.
Os servidores de aplicativos devem montar um sistema de arquivos em cluster, como o GlusterFS, onde você deve colocar seu código (o mesmo código para qualquer servidor).
Em seguida, usando a ferramenta de linha de comando da Amazon, você pode configurar quando os servidores novas instâncias devem ser criados, por exemplo, quando um servidor atingir 70% do uso da CPU.
Você pode usar o Varnish para armazenamento em cache estático, instalado na mesma instância do servidor da Web ou usando sua própria instância (melhor).
Existem várias soluções, embora a mais fácil seja usar o Heroku.