Geralmente
- Os DBs querem tanto (se não todos) seus dados na memória e CPU, a velocidade do disco rígido é menos importante.
- Os HTTPDs querem E / S de HDD, pois os arquivos estão sendo veiculados do disco.
Se você puder especificar qualquer tipo de servidor, não vejo razão para não criar servidores de alta especificação e executar o DB e o HTTPD na mesma máquina, mas, apesar do custo, acho que essas são as principais vantagens e desvantagens:
Vantagens
- Carregar em um não afeta outro
- Pode ser dimensionado independentemente conforme necessário
- Os ajustes do kernel podem ser aplicados especificamente à tarefa em questão
- Especificação de máquinas específicas para necessidades (DB = RAM, HTTPD = SSD)
- Mais fácil de configurar / gerenciar (minha opinião)
- Mais fácil migrar para o CDN no futuro [?]
- Máquinas isoladas significam que menos é potencialmente comprometido por uma violação de segurança
Desvantagens
- TCP / IP do MySQL vs SOCKs Unix (latência do banco de dados)
- Duas vezes mais pontos de falha
Não tem certeza de onde o custo se encaixa (o que é mais caro).
Embora não seja específico para dividir os servidores, uma coisa que pode ser útil é dividir o conteúdo da Web em conteúdo estático e dinâmico para reduzir a sobrecarga no processamento de conteúdo estático (não é necessário carregar o PHP se você estiver enviando um arquivo estático ).
Nota pessoal : Nós executamos o VMware em um datacenter (alugamos alguns blades) e localmente. Eu prefiro muito mais manter o DB / HTTPD separado. Temos VMs DB / HTTPD separadas no datacenter, mas não localmente. Eu prefiro muito mais a primeira e, embora não tenha estatísticas, as VMs no datacenter são executadas com uma especificação muito menor do que as VMs combinadas de HTTPD / DB fazem localmente com menos problemas de desempenho.