Diagram kasar arsitektur proyek skala besar terbaru yang saya ikuti.
Itu hanya garis besar dasar, diadaptasi dari dokumen arsitektur aktual dan disajikan dengan cara yang menyerupai pendekatan n-tier khas dikombinasikan dengan pendekatan MVC yang khas . Seperti yang Anda lihat logika dan tingkatan data terhubung melalui lapisan layanan, dan lebih khusus lagi API REST , yang terinspirasi oleh Recess , kerangka kerja PHP yang kurang dikenal.
Jangan menemukan kembali roda
Saya bekerja dengan tiga kerangka kerja:
Zend Framework
Raksasa kerangka PHP, dengan basis kode yang ditulis dengan sangat baik dan daftar fitur yang luas. Pada aplikasi skala besar Anda akan menemukan diri Anda mengutak-atik kerangka kerja lebih sering daripada tidak, dan saya menemukan basis kode ZF yang paling menyenangkan untuk dikerjakan. Namun berhati-hatilah, ini bukan kerangka kerja entry level .
Kohana
Kohana awalnya merupakan cabang dari CodeIgniter, dan itu adalah alasan yang cukup bagi saya untuk tidak menggunakannya, pada awalnya. Saat ini telah tumbuh menjadi kerangka kerja yang solid dan elegan yang membedakan dirinya dari satu sama lain dengan mengikuti pendekatan Hierarchical MVC . HMVC memungkinkan untuk memperluas modularisasi dari MVC . Untuk proyek dalam diagram saya mengadaptasi HMVC Kohana ke ZF, tapi saya sudah mulai menggunakan Kohana untuk proyek yang lebih kecil dan mempertimbangkannya untuk yang lebih besar juga.
CodeIgniter
Saya hanya menggunakannya karena proyek warisan yang saya warisi, hindari jika memungkinkan.
Seperti yang ditunjukkan oleh jawaban lainnya, ORM selalu berguna. Saya menggunakan Doktrin secara luas, dan Anda harus melihat pada pemetaan merek baru untuk CouchDB dan MongoDB . Skalabilitas adalah suatu keharusan pada aplikasi skala besar dan Anda harus mengevaluasi solusi NoSQL .
Semua yang dikatakan, yang penting untuk diingat adalah bahwa aplikasi yang lebih besar biasanya memiliki tantangan unik. Anda harus mengevaluasi setiap solusi pihak ketiga populer yang ada, dan Anda mungkin akan mendapatkan banyak dari beberapa solusi yang tidak jelas. Ketika saya pertama kali mengevaluasi Recess, itu jauh dari produksi siap tetapi pendekatannya pada dasarnya membuatnya menjadi proyek.
Performa
Pada situs web tipikal Anda mungkin lolos dengan caching keluaran sederhana dan caching opcode tetapi pada aplikasi skala besar Anda harus benar-benar mempertimbangkan caching memori, yang paling umum adalah membangun memcached .
xdebug sebagian besar dikenal sebagai debugger, tetapi dapat berfungsi sebagai profiler juga. Saya baru-baru ini mulai menggunakan Zend Server dan saya sangat menyukai fitur penelusuran kode . Sayangnya itu tidak tersedia di Edisi Komunitas , tetapi xdebug adalah alternatif yang lumayan.
Jika Anda menggunakan Apache, pastikan untuk mengoptimalkannya . nginx dan lighttpd adalah pilihan yang tampaknya lebih baik , kinerja bijaksana, tapi saya belum pernah menggunakan mereka banyak dan saya tidak bisa mengatakan.
Sedangkan untuk basis data, kueri & hasil caching Doctrine bekerja sangat baik, terutama dikombinasikan dengan memcached . Dan tentu saja, kita tidak bisa melupakan ujung depan. Tim Kinerja Luar Biasa Yahoo telah mengumpulkan daftar praktik terbaik yang luas . Saya bukan pengembang front-end, tetapi saya telah melihat hasil luar biasa pada proyek solo.
Terakhir PHP memiliki mekanisme pengumpulan sampah yang baru , layak untuk dilihat.
Keamanan
Dunia keamanan PHP kacau balau. Saya bukan ahli, jadi perlakukan yang berikut ini sebagai kiat umum:
Buka Proyek Keamanan Aplikasi Web
Ada banyak hal bagus di sana, tetapi untuk tinjauan singkat Anda harus mulai dengan daftar sepuluh besar . Dan riset solusi PHP untuk kerentanan umum tersebut.
Stack kerentanan
Kebiasaan yang baik adalah memantau bug terbuka PHP secara berkala . Bahkan jika Anda sendiri bukan ahli, hampir selalu ada tips untuk mengatasi ancaman keamanan. Dan tentu saja, Anda harus memperluas kebiasaan itu ke setiap bagian tumpukan, terutama yang paling rentan, seperti server web dan basis data.
Kerumunan orang di IT Security Stack Exchange dapat membantu Anda dengan jawaban yang lebih terdidik.
Bacaan lebih lanjut