Pengantar arsitektur tiga tingkat
Arsitektur tiga tingkat adalah arsitektur interaksi paling umum di Internet. Itu muncul ketika bagian server dua tingkat dibagi menjadi dua bagian: lapisan logika dan lapisan data .
Itu terlihat seperti ini:

Lapisan klien adalah bagian dari "aplikasi terdistribusi" yang bertanggung jawab atas interaksi pengguna. Lapisan ini tidak boleh mengandung logika bisnis dan tidak boleh menyimpan data penting. Juga, seharusnya tidak berinteraksi dengan lapisan database secara langsung, tetapi hanya melalui lapisan logika bisnis.
Namun, masih ada logika di sini. Pertama, ini adalah interaksi dengan pengguna melalui antarmuka, validasi data yang dimasukkan olehnya, bekerja dengan file lokal. Ini juga mencakup semua yang terkait dengan otorisasi pengguna dan enkripsi data saat bekerja dengan server.
Kedua, ini adalah logika bisnis sederhana. Misalnya, jika sebuah toko online mengirimkan daftar produk, kita dapat mengurutkan dan memfilternya di sisi klien. Dan penyimpanan data primitif juga ada di sini: caching, cookie pengguna yang masuk, dan sejenisnya.
Lapisan logika bisnis terletak di tingkat kedua, sebagian besar logika bisnis terkonsentrasi di atasnya. Di luarnya, hanya fragmen yang diekspor ke klien, serta elemen logika yang terbenam dalam database (prosedur dan pemicu tersimpan) yang tersisa.
Sebagian besar server logika bisnis tidak hanya berisi logika yang sama ini, tetapi juga menyelesaikan masalah penskalaan: kode dibagi menjadi beberapa bagian dan didistribusikan ke server yang berbeda. Beberapa layanan yang sangat diminati dapat berjalan di lusinan server. Beban di antara mereka dikelola oleh penyeimbang beban.
Aplikasi server biasanya dirancang sedemikian rupa sehingga salinan lain dari server dapat dengan mudah diluncurkan dan mulai bekerja sama dengan salinan lainnya. Artinya, bahkan dalam proses penulisan kode server, Anda tidak akan pernah memiliki jaminan bahwa kelas statis Anda diluncurkan dalam satu contoh.
Lapisan data menyediakan penyimpanan data dan ditempatkan pada tingkat terpisah, diimplementasikan, sebagai aturan, melalui sistem manajemen basis data (DBMS), koneksi ke komponen ini disediakan hanya dari tingkat server aplikasi.
Alasan untuk memisahkan lapisan data
Pemisahan lapisan data menjadi lapisan ketiga yang lengkap terjadi karena berbagai alasan, tetapi yang utama adalah peningkatan beban pada server.
Pertama, database mulai membutuhkan banyak memori dan waktu prosesor untuk pemrosesan data. Oleh karena itu, mereka mulai ditempatkan di mana-mana di server terpisah.
Dengan beban yang meningkat, backend dapat dengan mudah digandakan dan sepuluh salinan dari satu server dapat dinaikkan, tetapi tidak mungkin untuk menduplikasi database - database masih tetap menjadi komponen tunggal dan tak terpisahkan dari sistem.
Kedua, basis data menjadi pintar - mereka memiliki logika bisnisnya sendiri. Mereka mulai mendukung prosedur tersimpan, pemicu, bahasa mereka sendiri seperti PLSQL. Dan bahkan muncul programmer yang mulai menulis kode yang berjalan di dalam DBMS.
Semua logika yang tidak terikat dengan data dibawa ke backend dan diluncurkan secara paralel di lusinan server. Segala sesuatu yang secara kritis terkait dengan data tetap berada di dalam DBMS, dan di sana masalah peningkatan beban harus diselesaikan dengan menggunakan metode kami sendiri:
- Cluster database adalah sekelompok server database yang menyimpan data yang sama dan menyinkronkannya menggunakan protokol tertentu.
- Sharding - data dipecah menjadi blok logis dan didistribusikan ke berbagai server database. Sangat sulit untuk mempertahankan perubahan basis data dengan pendekatan ini.
- Pendekatan NoSQL adalah menyimpan data dalam database yang dibangun untuk menyimpan data dalam jumlah besar. Ini seringkali bukan database, tetapi penyimpanan file tertentu. Fungsionalitas yang sangat buruk dibandingkan dengan database relasional.
- Caching data. Alih-alih cache sederhana di tingkat database, seluruh DBMS caching muncul, yang menyimpan hasilnya hanya di memori.
Jelas bahwa orang yang terpisah dan / atau seluruh tim diperlukan untuk mengelola kebun binatang teknologi server ini, yang menyebabkan penghapusan lapisan data menjadi lapisan terpisah.
Penting! Semua teknologi canggih lahir di kedalaman perusahaan IT besar, ketika pendekatan lama tidak lagi mengatasi tantangan baru. Membuat basis data menjadi lapisan terpisah tidak ditemukan oleh pemrogram mana pun, tetapi oleh sekelompok insinyur di suatu tempat di kedalaman Oracle atau IBM.
Menarik! Ketika Zuckerberg mulai menulis Facebook, dia hanya mengerjakan PHP + MySQL. Ketika ada jutaan pengguna, mereka menulis penerjemah khusus yang menerjemahkan semua kode PHP ke dalam C ++ dan mengompilasinya menjadi kode mesin asli.
Juga, MySQL tidak mampu menyimpan data miliaran pengguna, jadi Facebook mengembangkan konsep database NoSQL dan menulis DBMS NoSQL sisi server yang kuat - Cassandra. Omong-omong, ini sepenuhnya ditulis dalam bahasa Jawa.
Ambiguitas lokasi logika aplikasi
Dan meskipun arsitektur tiga tingkat hampir secara jelas mendistribusikan peran di antara bagian-bagiannya, tidak selalu mungkin untuk menentukan dengan tepat di mana bagian baru dari logika bisnis (kode baru) perlu ditambahkan dalam sistem.
Contoh ambiguitas tersebut ditunjukkan pada gambar di bawah ini:

Bagian server diisi dengan background abu-abu, bagian client diisi dengan warna putih. Contoh bagus dari pendekatan terakhir (paling kanan) adalah aplikasi seluler modern. Sisi client (pada ponsel) berisi tampilan (display), logika, dan data. Dan hanya terkadang data ini disinkronkan dengan server.
Contoh opsi paling kiri adalah server PHP tipikal, yang memiliki semua logika di server, dan ini memberi klien HTML yang sudah statis. Di suatu tempat di antara dua ekstrem ini, proyek Anda akan ditempatkan.
Di awal pekerjaan, setelah Anda mengenal proyek tersebut, Anda perlu berkonsultasi dengan pemrogram yang mengerjakannya, tentang tempat yang lebih baik bagi Anda untuk mengimplementasikan logika tugas selanjutnya.
Jangan ragu untuk melakukannya. Pertama, mereka tidak naik ke biara orang lain dengan piagam mereka. Kedua, akan lebih mudah bagi semua orang (dan Anda juga) untuk menemukan kode yang Anda butuhkan di tempat yang Anda harapkan untuk menemukannya.
GO TO FULL VERSION