Un diagramma approssimativo dell'architettura dell'ultimo progetto su larga scala in cui sono stato coinvolto.
È solo uno schema di base, adattato dagli attuali documenti di architettura e presentato in un modo che ricorda un tipico approccio di livello n combinato con un tipico approccio MVC . Come puoi vedere, i livelli logici e di dati sono collegati tramite un livello di servizio, e più precisamente un'API REST , ispirata a Recess , un framework PHP meno conosciuto.
Non reinventare la ruota
Lavoro con tre framework:
Zend Framework
Il colosso dei framework PHP, con una base di codice straordinariamente ben scritta e un ampio elenco di funzionalità. Su applicazioni su larga scala ti ritroverai a modificare il framework il più delle volte, e trovo la base di codice di ZF la più piacevole con cui lavorare. Ma attenzione, non è un framework entry level .
Kohana
Kohana è iniziato come un fork di CodeIgniter, e questa era una ragione sufficiente per non usarlo inizialmente. Oggi è cresciuto in un quadro solido ed elegante che si differenzia dagli altri seguendo un approccio gerarchico MVC . HMVC consente una maggiore estensione della modularizzazione rispetto a MVC . Per il progetto nel diagramma ho adattato l'HMVC di Kohana a ZF, ma ho iniziato a usare Kohana per progetti più piccoli e considerandolo anche per quelli più grandi.
CodeIgniter
Lo uso solo a causa di un progetto legacy che ho ereditato, evitalo se possibile.
Come sottolineato dalle altre risposte, un ORM è sempre utile. Uso ampiamente Doctrine e dovresti dare un'occhiata ai suoi nuovissimi mappatori per CouchDB e MongoDB . La scalabilità è un must per le applicazioni su larga scala e dovresti valutare le soluzioni NoSQL .
Detto questo, la cosa importante da ricordare è che le applicazioni più grandi di solito hanno sfide uniche. Dovresti valutare ogni popolare soluzione di terze parti che esiste e probabilmente otterrai molto da un paio di oscure. Quando ho valutato Recess per la prima volta, era lungi dall'essere pronto per la produzione, ma il suo approccio essenzialmente lo ha inserito nel progetto.
Prestazione
Sui siti Web tipici è possibile cavarsela con la semplice memorizzazione nella cache dell'output e la cache del codice operativo, ma su applicazioni su larga scala si dovrebbe davvero prendere in considerazione la memorizzazione nella cache, che più comunemente si basa su memcached .
xdebug è principalmente noto come debugger, ma può anche fungere da profiler . Di recente ho iniziato a utilizzare Zend Server e adoro le sue funzionalità di tracciamento del codice . Purtroppo quelli non sono disponibili nella Community Edition , ma xdebug è un'alternativa abbastanza decente.
Se stai usando Apache, assicurati di ottimizzarlo . nginx e lighttpd sono scelte apparentemente migliori , per quanto riguarda le prestazioni, ma non le ho usate molto e non posso davvero dirlo.
Per quanto riguarda il database, la query e la cache dei risultati di Doctrine fanno miracoli, specialmente se combinati con memcached . E, naturalmente, non possiamo dimenticare il front-end. Il team di prestazioni eccezionali di Yahoo ha raccolto un ampio elenco di migliori pratiche . Non sono uno sviluppatore di front-end, ma ho visto risultati sorprendenti in progetti solisti.
Infine, PHP ha un nuovissimo meccanismo di raccolta dei rifiuti , che vale la pena esaminare.
Sicurezza
Il mondo della sicurezza di PHP è caotico, per non dire altro. Non sono un esperto, quindi tratta i seguenti suggerimenti generici:
Aprire il progetto di sicurezza delle applicazioni Web
C'è un sacco di roba buona lì dentro, ma per una rapida panoramica dovresti iniziare con la lista dei primi dieci . E ricerca soluzioni PHP per quelle vulnerabilità comuni.
Stack vulnerabilità
Una buona abitudine è monitorare periodicamente i bug aperti di PHP . Anche se non sei un esperto, ci sono quasi sempre dei suggerimenti per aggirare le minacce alla sicurezza. E, naturalmente, dovresti estendere l'abitudine a tutte le altre parti dello stack, in particolare a quelle più vulnerabili, come il web server e il database.
Il pubblico di IT Security Stack Exchange può aiutarti con risposte più istruite.
Ulteriori letture