Itu tergantung pada apa kebutuhan Anda. Jika Anda membutuhkan kinerja tinggi, solusi latensi rendah yang bergantung pada banyak tugas kecil, Anda dapat menggunakan struktur yang serupa dengan yang Anda gambarkan. Solusi paling umum, di Java, PHP, dan C # tidak default untuk ini.
Sebagian besar aplikasi web sangat bergantung pada database - kebanyakan dari mereka sangat banyak sehingga halaman tidak dapat membuat tanpa setidaknya satu panggilan. Jelas Anda tidak ingin mengekspos database Anda secara publik, karena beberapa alasan:
- Keamanan (seperti yang disebutkan Oded ) - Anda pasti tidak ingin mengekspos jaringan Anda secara publik! Idealnya satu-satunya antarmuka ke sistem Anda dari luar harus https ke server Anda.
- Kemudahan pengembangan - Anda benar- benar , benar - benar tidak ingin menulis SQL dalam Javascript, dan bahasa yang dirancang untuk presentasi web tidak bekerja dengan baik dengan RDB. Mereka tidak memiliki konsep negara, misalnya.
Jadi, ketika Anda membutuhkan database, Anda menggunakan bahasa yang cocok dengan mereka seperti Java, C #, PHP, dll. Cara termudah untuk menghasilkan halaman ternyata adalah sebagai berikut: Anda menggunakan bahasa templating (paling terkenal PHP, tetapi JSP dan ASP adalah dua bahasa lain yang sangat umum) untuk membangun halaman. Bahasa ini menyediakan konstruksi yang memanggil ke modul lain. Dalam PHP ini biasanya di halaman atau dalam file PHP lain, menggunakan pola MVC. Di JSP Anda menggunakan scriptlets atau Bahasa Ekspresi JSP. Modul-modul lain ini dapat bekerja keras untuk menyambung ke DB, melakukan logika, dan mengembalikan nilai ke lapisan tampilan Anda. Hasil akhirnya adalah halaman HTML yang dihasilkan, diberikan di server dan dikirim ke klien.
Ketika database Anda berada di jaringan yang sama dengan renderer halaman Anda, Anda juga mendapatkan kinerja yang lebih baik. Klien hanya perlu melakukan satu permintaan dan menerima halaman - Anda mungkin perlu melakukan 10-15 permintaan DB sebelum Anda memiliki semua informasi yang dibutuhkan pengguna. Latensi milidetik di jaringan Anda akan menjadi detik hingga menit jika klien harus melakukan semuanya.
Ketika sistem tumbuh lebih besar, pemisahan masalah dan kompetensi inti menjadi sangat penting. HTML bagus untuk tampilan. Javascript bagus untuk konten dinamis. SQL sangat bagus untuk menanyakan basis data, dan bahasa lainnya bagus dalam logika bisnis. Tugas kita sebagai pengembang adalah menggunakan semua alat yang tersedia untuk membangun sistem yang dapat dipelihara. Kemudahan pengembangan adalah bagian besar dari sistem yang baik. Dalam pikiran saya, ini hampir sama pentingnya dengan kinerja dan kegunaan. Sistem hebat berkembang seiring waktu. Sistem yang buruk ditulis dengan buruk sejak awal dan tidak pernah diperbaiki.