Quando você escala, geralmente você quebra seus componentes. Você acaba com algo assim (estes não são nomes padrão, nem você tem que fazer isso, mas isso é comum):
- Servidor (es) de aplicativos (Linux, Apache, PHP)
- Servidores de banco de dados (Linux, MongoDB)
Quantos você precisa de cada um dependerá das necessidades de sua aplicação. Do lado do MongoDB, para produção, você vai querer executar pelo menos um conjunto de réplicas . Isto constituiria um primário, um secundário e um árbitro como mínimo (veja os documentos, mas como orientação rápida, o primário e o secundário devem ser idênticos e geralmente são hosts dedicados, o árbitro não tem dados e é leve, pode ser executado em um host compartilhado).
O servidor de aplicativos receberá solicitações de clientes, sejam eles humanos ou algum outro aplicativo que esteja chamando seu aplicativo. O aplicativo usará o driver PHP para se comunicar com a réplica do MongoDB definida na rede (em vez de localmente, o que você provavelmente já fez até agora).
Eventualmente, se você continuar a crescer, talvez seja necessário expandir para uma configuração do MongoDB fragmentado . Do ponto de vista do PHP, a única diferença é que você fala com um processo mongos em vez de diretamente nos conjuntos de réplicas. Parece que está no caminho para você neste caso, portanto, esteja ciente disso, mas isso não deve ser necessário no futuro imediato.