Arsitektur N-tingkat membagi aplikasi menjadi lapisan logis dan tingkat fisik.
diagram logis
Lapisan adalah cara untuk memisahkan tanggung jawab dan mengelola dependensi. Setiap lapisan memiliki tanggung jawab tertentu. Lapisan yang lebih tinggi dapat menggunakan layanan di lapisan yang lebih rendah, tetapi bukan sebaliknya.
Tingkatan dipisahkan secara fisik, berjalan pada komputer terpisah. Secara kontraktual, tingkatan dapat membuat model komunikasi mereka ketat atau santai. Dalam model ketat, permintaan harus melalui tingkat yang berdekatan, satu per satu, dan tidak dapat melewati tingkat apa pun di antaranya. Misalnya, dari firewall aplikasi web ke tingkat web, lalu ke tingkat menengah 1, dan sebagainya. Sebaliknya, dalam pendekatan santai, permintaan dapat melewati beberapa tingkatan jika diperlukan. Pendekatan ketat memiliki lebih banyak latensi dan overhead, dan pendekatan santai memiliki lebih banyak konektor dan kemudian lebih sulit untuk diubah. Sistem dapat menggunakan pendekatan hibrid: memiliki tingkatan yang santai dan ketat jika perlu.
Tingkat dapat memanggil ke tingkat lain secara langsung, atau menggunakan pola olahpesan Asinkron melalui antrean pesan. Meskipun setiap lapisan mungkin dihosting di tingkatnya sendiri, itu tidak diperlukan. Beberapa lapisan mungkin dihosting pada tingkat yang sama. Memisahkan tingkatan secara fisik meningkatkan skalabilitas dan ketahanan, tetapi juga menambahkan latensi dari komunikasi jaringan tambahan.
Aplikasi tiga tingkat tradisional memiliki tingkat presentasi, tingkat tengah, dan tingkat database. Tingkat tengah bersifat opsional. Aplikasi yang lebih kompleks dapat memiliki lebih dari tiga tingkatan. Diagram di atas menunjukkan aplikasi dengan dua tingkat tengah, merangkum area fungsionalitas yang berbeda.
Aplikasi N-tingkat dapat memiliki arsitektur lapisan tertutup atau arsitektur lapisan terbuka :
- Dalam arsitektur lapisan tertutup, lapisan hanya dapat memanggil lapisan berikutnya segera turun.
- Dalam arsitektur lapisan terbuka, lapisan dapat memanggil salah satu lapisan di bawahnya.
Arsitektur lapisan tertutup membatasi dependensi antar lapisan. Namun, ini mungkin membuat lalu lintas jaringan yang tidak perlu, jika satu lapisan hanya meneruskan permintaan ke lapisan berikutnya.
Kapan menggunakan arsitektur ini
Arsitektur N-tingkat biasanya diimplementasikan sebagai aplikasi infrastructure-as-service (IaaS), dengan setiap tingkatan berjalan pada sekumpulan VM terpisah. Namun, aplikasi N-tingkat tidak perlu murni IaaS. Seringkali, lebih baik menggunakan layanan terkelola untuk beberapa bagian arsitektur, terutama penembolokan, olahpesan, dan penyimpanan data.
Pertimbangkan arsitektur N-tingkat untuk:
- Aplikasi web sederhana.
- Titik awal yang baik ketika persyaratan arsitektur belum jelas.
- Memigrasikan aplikasi lokal ke Azure dengan refaktor minimal.
- Pengembangan terpadu aplikasi lokal dan cloud.
Arsitektur N-tingkat sangat umum dalam aplikasi lokal tradisional, sehingga sangat cocok untuk memigrasikan beban kerja yang ada ke Azure.
Manfaat
- Portabilitas antara cloud dan lokal, dan antara platform cloud.
- Kurva pembelajaran yang lebih sedikit untuk sebagian besar pengembang.
- Biaya relatif rendah dengan tidak menyusun ulang solusi
- Evolusi alami dari model aplikasi tradisional.
- Terbuka untuk lingkungan heterogen (Windows/Linux)
Tantangan
- Mudah untuk berakhir dengan tingkat menengah yang hanya melakukan operasi CRUD pada database, menambahkan latensi ekstra tanpa melakukan pekerjaan yang berguna.
- Desain monolitik mencegah penyebaran fitur independen.
- Mengelola aplikasi IaaS lebih berfungsi daripada aplikasi yang hanya menggunakan layanan terkelola.
- Mungkin sulit untuk mengelola keamanan jaringan dalam sistem besar.
- Aliran pengguna dan data biasanya mencakup beberapa tingkatan, menambahkan kompleksitas pada kekhawatiran seperti pengujian dan pengamatan.
Praktik terbaik
- Gunakan autoscaling untuk menangani perubahan beban. Lihat praktik terbaik Autoscaling.
- Gunakan olahpesan asinkron
untuk memisahkan tingkatan. - Cache data semistatik. Lihat praktik terbaik Penembolokan.
- Konfigurasikan tingkat database untuk ketersediaan tinggi, menggunakan solusi seperti grup ketersediaan AlwaysOn SQL Server.
- Tempatkan firewall aplikasi web (WAF) antara ujung depan dan Internet.
- Tempatkan setiap tingkatan di subnetnya sendiri, dan gunakan subnet sebagai batas keamanan.
- Batasi akses ke tingkat data, dengan mengizinkan permintaan hanya dari tingkat menengah.
Arsitektur N-tingkat pada komputer virtual
Bagian ini menjelaskan arsitektur N-tingkat yang direkomendasikan yang berjalan pada VM.
Setiap tingkat terdiri dari dua VM atau lebih, ditempatkan dalam set ketersediaan atau set skala komputer virtual. Beberapa VM memberikan ketahanan jika satu VM gagal. Load balancer digunakan untuk mendistribusikan permintaan di seluruh VM dalam tingkatan. Tingkat dapat diskalakan secara horizontal dengan menambahkan lebih banyak VM ke kumpulan.
Setiap tingkatan juga ditempatkan di dalam subnetnya sendiri, yang berarti alamat IP internal mereka berada dalam rentang alamat yang sama. Hal ini memudahkan penerapan aturan grup keamanan jaringan dan tabel rute ke tingkat individual.
Tingkat web dan bisnis tidak memiliki status. VM apa pun dapat menangani permintaan apa pun untuk tingkat tersebut. Tingkat data harus terdiri dari database yang direplikasi. Untuk Windows, kami merekomendasikan SQL Server, menggunakan grup ketersediaan AlwaysOn untuk ketersediaan tinggi. Untuk Linux, pilih database yang mendukung replikasi, seperti Apache Cassandra.
Kelompok keamanan jaringan membatasi akses ke setiap tingkatan. Misalnya, tingkat database hanya mengizinkan akses dari tingkat bisnis.
Nota
Lapisan berlabel "Tingkat Bisnis" dalam diagram referensi kami adalah moniker ke tingkat logika bisnis. Demikian juga, kami juga memanggil tingkat presentasi "Tingkat Web." Dalam contoh kami, ini adalah aplikasi web, meskipun arsitektur multi-tingkat juga dapat digunakan untuk topologi lain (seperti aplikasi desktop). Beri nama tingkatan Anda apa yang paling sesuai bagi tim Anda untuk mengomunikasikan niat tingkat logis dan/atau fisik tersebut dalam aplikasi Anda - Anda bahkan dapat mengekspresikan penamaan tersebut dalam sumber daya yang Anda pilih untuk mewakili tingkat tersebut (misalnya vmss-appName-business-layer).
Pertimbangan tambahan
Arsitektur N-tingkat tidak dibatasi untuk tiga tingkatan. Untuk aplikasi yang lebih kompleks, umumnya memiliki lebih banyak tingkatan. Dalam hal ini, pertimbangkan untuk menggunakan perutean lapisan-7 untuk merutekan permintaan ke tingkat tertentu.
Tingkatan adalah batas skalabilitas, keandalan, dan keamanan. Pertimbangkan untuk memiliki tingkatan terpisah untuk layanan dengan persyaratan yang berbeda di area tersebut.
Gunakan set skala komputer virtual untuk penskalaan otomatis.
Cari tempat dalam arsitektur tempat Anda dapat menggunakan layanan terkelola tanpa pemfaktoran ulang yang signifikan. Secara khusus, lihat penembolokan, olahpesan, penyimpanan, dan database.
Untuk keamanan yang lebih tinggi, tempatkan DMZ jaringan di depan aplikasi. DMZ mencakup appliance virtual jaringan (NVA) yang menerapkan fungsionalitas keamanan seperti firewall dan inspeksi paket. Untuk informasi selengkapnya, lihat arsitektur referensi Network DMZ.
Untuk ketersediaan tinggi, tempatkan dua atau beberapa NVA dalam set ketersediaan, dengan load balancer eksternal untuk mendistribusikan permintaan Internet di seluruh instans. Untuk informasi selengkapnya, lihat Menyebarkan appliance virtual jaringan yang sangat tersedia.
Jangan izinkan akses RDP atau SSH langsung ke VM yang menjalankan kode aplikasi. Sebagai gantinya, operator harus masuk ke jumpbox, juga disebut host bastion. Ini adalah VM di jaringan yang digunakan administrator untuk menyambungkan ke VM lain. Jumpbox memiliki grup keamanan jaringan yang memungkinkan RDP atau SSH hanya dari alamat IP publik yang disetujui.
Anda dapat memperluas jaringan virtual Azure ke jaringan lokal Anda menggunakan jaringan privat virtual (VPN) situs-ke-situs atau Azure ExpressRoute. Untuk informasi selengkapnya, lihat arsitektur referensi jaringan hibrid .
Jika organisasi Anda menggunakan Direktori Aktif untuk mengelola identitas, Anda mungkin ingin memperluas lingkungan Direktori Aktif Anda ke Azure VNet.
Sumber Daya Terkait
- [Aplikasi N-tingkat Windows di Azure dengan SQL Server][n-tier-windows-SQL]
- modul Microsoft Learn: Tur gaya arsitektur N-tingkat
- Azure Bastion
- Informasi selengkapnya tentang olahpesan dalam gaya arsitektur N-tingkat di Azure