Um diagrama aproximado da arquitetura do mais recente projeto de larga escala em que estive envolvido.
É apenas um esboço básico, adaptado dos documentos reais da arquitetura e apresentado de uma maneira que se assemelha a uma abordagem típica de n camadas combinada com uma abordagem típica do MVC . Como você pode ver, as camadas lógica e de dados estão conectadas por meio de uma camada de serviço e, mais especificamente, uma API REST , inspirada no Recess , uma estrutura PHP menos conhecida.
Não reinvente a roda
Eu trabalho com três estruturas:
Zend Framework
O gigante das estruturas PHP, com uma base de código impressionantemente bem escrita e uma extensa lista de recursos. Em aplicativos de grande escala, você se encontrará aprimorando a estrutura com mais frequência, e acho a base de código da ZF a mais agradável de se trabalhar. Mas cuidado, não é uma estrutura de nível básico .
Kohana
Kohana começou como um fork do CodeIgniter, e isso foi motivo suficiente para eu não usá-lo, inicialmente. Atualmente, ele cresceu e se transformou em uma estrutura sólida e elegante que se diferencia entre si, seguindo uma abordagem hierárquica de MVC . O HMVC permite uma maior extensão da modularização do que o MVC . Para o projeto no diagrama, adaptei o HMVC do Kohana ao ZF, mas comecei a usar o Kohana para projetos menores e considerando-o como maior também.
CodeIgniter
Só o uso por causa de um projeto herdado que herdei, evite se possível.
Como as outras respostas apontaram, um ORM sempre é útil. Eu uso o Doctrine extensivamente e você deve dar uma olhada em seus novos mapeadores para CouchDB e MongoDB . A escalabilidade é essencial em aplicativos de grande escala e você deve avaliar as soluções NoSQL .
Tudo o que foi dito, o importante é lembrar que aplicativos maiores geralmente têm desafios únicos. Você deve avaliar todas as soluções populares de terceiros existentes e provavelmente ganhará muito com algumas soluções obscuras. Quando avaliei o Recess pela primeira vez, ele estava longe de estar pronto para a produção, mas sua abordagem entrou no projeto.
atuação
Em sites típicos, você pode se safar com o cache de saída simples e o código de código de operação, mas em aplicativos de grande escala você deve considerar o cache de memória, que geralmente é construído em torno do memcached .
O xdebug é conhecido principalmente como depurador, mas também pode servir como criador de perfil . Recentemente, comecei a usar o Zend Server e adoro absolutamente seus recursos de rastreamento de código . Infelizmente, esses não estão disponíveis na Community Edition , mas o xdebug é uma alternativa bastante decente.
Se você estiver usando o Apache, certifique-se de otimizar o inferno . Aparentemente, nginx e lighttpd são escolhas melhores , em termos de desempenho, mas eu não os usei muito e não posso dizer.
Quanto ao banco de dados, o cache de consultas e resultados do Doctrine faz maravilhas, especialmente combinados com o memcached . E, claro, não podemos esquecer o front end. A equipe de desempenho excepcional do Yahoo reuniu uma extensa lista de práticas recomendadas . Eu não sou realmente um desenvolvedor front-end, mas vi resultados surpreendentes em projetos solo.
Por fim, o PHP possui um novo mecanismo de coleta de lixo , que vale a pena examinar.
Segurança
O mundo da segurança do PHP é caótico, para dizer o mínimo. Como não sou especialista, trate o seguinte como dicas genéricas:
Projeto de segurança de aplicativos da Web abertos
Muitas coisas boas estão lá, mas para uma visão geral rápida, você deve começar com a lista dos dez melhores . E pesquise soluções PHP para essas vulnerabilidades comuns.
Vulnerabilidades de pilha
Um bom hábito é monitorar periodicamente os bugs abertos do PHP . Mesmo que você não seja um especialista, quase sempre existem dicas de solução alternativa para ameaças à segurança. E, é claro, você deve estender o hábito a todas as outras partes da pilha, especialmente as mais vulneráveis, como o servidor da Web e o banco de dados.
A multidão no IT Security Stack Exchange pode ajudá-lo com respostas mais educadas.
Leitura adicional