Gaya arsitektur N-tier

Azure Storage
Azure Cloud Services
Azure Virtual Machines

Arsitektur N-tingkat membagi aplikasi menjadi lapisan logis dan tingkat fisik.

Diagram logis dari gaya arsitektur N-tier

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 tidak sebaliknya.

Tingkatan dipisahkan secara fisik, berjalan pada mesin yang terpisah. Tingkat dapat memanggil ke tingkat lain secara langsung, atau menggunakan pola olahpesan Asinkron melalui antrean pesan. Meskipun setiap lapisan mungkin di-host di tingkatnya sendiri, itu tidak diperlukan. Beberapa lapisan mungkin di-host pada tingkat yang sama. Secara fisik memisahkan tingkatan meningkatkan skalabilitas dan ketahanan, tetapi juga menambahkan latensi dari komunikasi jaringan tambahan.

Aplikasi tiga tingkat tradisional memiliki tingkat presentasi, tingkat menengah, dan tingkat database. Tingkat menengah adalah opsional. Aplikasi yang lebih kompleks dapat memiliki lebih dari tiga tingkatan. Diagram di atas menunjukkan aplikasi dengan dua tingkat menengah, merangkum area fungsionalitas yang berbeda.

Aplikasi N-tier dapat memiliki arsitektur lapisan tertutup atau arsitektur lapisan terbuka:

  • Dalam arsitektur lapisan tertutup, lapisan hanya dapat memanggil lapisan berikutnya segera ke bawah.
  • Dalam arsitektur lapisan terbuka, lapisan dapat memanggil salah satu lapisan di bawahnya.

Arsitektur lapisan tertutup membatasi ketergantungan antar lapisan. Namun, ini mungkin membuat lalu lintas jaringan yang tidak perlu, jika satu lapisan hanya meneruskan permintaan ke lapisan berikutnya.

Kapan harus menggunakan arsitektur ini

Arsitektur N-tier biasanya diimplementasikan sebagai aplikasi infrastruktur-as-service (IaaS), dengan masing-masing tingkat berjalan pada set VM yang terpisah. Namun, aplikasi N-tier tidak harus berupa IaaS murni. Sering kali, hal ini menguntungkan untuk menggunakan layanan terkelola untuk beberapa bagian arsitektur, terutama penembolokan, olahpesan, dan penyimpanan data.

Pertimbangkan arsitektur N-tingkat untuk:

  • Aplikasi web sederhana.
  • Memigrasikan aplikasi lokal ke Azure dengan pemfaktoran ulang minimal.
  • Pengembangan terpadu aplikasi lokal dan cloud.

Arsitektur N-tier sangat umum dalam aplikasi lokal tradisional, sehingga sangat cocok untuk memigrasikan beban kerja yang ada ke Azure.

Keuntungan

  • Portabilitas antara cloud dan lokal, dan antar platform cloud.
  • Kurva pembelajaran yang lebih sedikit untuk sebagian besar pengembang.
  • Evolusi alami dari model aplikasi tradisional.
  • Terbuka untuk lingkungan yang heterogen (Windows/Linux)

Tantangan

  • Sangat mudah untuk mengakhiri dengan tingkat menengah yang hanya melakukan operasi CRUD pada database, menambahkan latensi ekstra tanpa melakukan pekerjaan yang berguna.
  • Desain monolitik mencegah penyebaran fitur secara independen.
  • Mengelola aplikasi IaaS lebih banyak pekerjaan daripada aplikasi yang hanya menggunakan layanan terkelola.
  • Mungkin sulit untuk mengelola keamanan jaringan dalam sistem yang besar.

Praktik terbaik

  • Gunakan penskalaan otomatis untuk menangani perubahan beban. Lihat Praktik terbaik Penskalaan Otomatis.
  • Gunakan olah pesan asinkron untuk memisahkan tingkatan.
  • Cache data semi-statis. Lihat Praktik terbaik dalam cache.
  • Konfigurasikan tingkat database untuk ketersediaan tinggi, menggunakan solusi seperti Grup Ketersediaan AlwaysOn SQL Server.
  • Tempatkan web application firewall(WAF) antara frontend dan Internet.
  • Tempatkan setiap tingkat di subnetnya sendiri, dan gunakan subnet sebagai batas keamanan.
  • Batasi akses ke tingkat data, dengan mengizinkan permintaan hanya dari tingkat menengah.

Arsitektur N-tier pada mesin virtual

Bagian ini menjelaskan arsitektur N-tier yang direkomendasikan yang berjalan di VM.

Diagram fisik dari arsitektur N-tier

Setiap tingkat terdiri dari dua atau lebih VM, ditempatkan di set ketersediaan atau set skala mesin virtual. Beberapa VM memberikan ketahanan jika satu VM gagal. Load balancer digunakan untuk mendistribusikan permintaan di seluruh VM dalam satu tingkat. Tingkat dapat diskalakan secara horizontal dengan menambahkan lebih banyak VM ke kumpulan.

Setiap tingkat juga ditempatkan di dalam subnetnya sendiri, yang berarti alamat IP internal mereka berada dalam rentang alamat yang sama. Hal tersebut membuatnya mudah untuk menerapkan aturan grup keamanan jaringan dan tabel rute ke tingkat individu.

Tingkat web dan bisnis tidak memiliki kewarganegaraan. Setiap VM dapat menangani permintaan apa pun untuk tingkat itu. Tingkat data harus terdiri dari database yang direplikasi. Untuk Windows, kami merekomendasikan SQL Server, menggunakan grup ketersediaan Always On untuk ketersediaan tinggi. Untuk Linux, pilih database yang mendukung replikasi, seperti Apache Cassandra.

Kelompok keamanan jaringan membatasi akses ke setiap tingkat. Misalnya, tingkat database hanya mengizinkan akses dari tingkat bisnis.

Catatan

Lapisan berlabel "Tingkat Bisnis" dalam diagram referensi kami adalah moniker untuk tingkat logika bisnis. Demikian pula, kami juga menyebut tingkat presentasi sebagai "Tingkat Web". Dalam contoh kami, ini adalah aplikasi web, meskipun arsitektur multi-tier dapat digunakan untuk topologi lain juga (seperti aplikasi desktop). Beri nama tingkatan Anda apa yang terbaik bagi tim Anda untuk mengomunikasikan maksud dari tingkat logis dan/atau fisik dalam aplikasi Anda - Anda bahkan dapat menyatakan bahwa penamaan dalam sumber daya yang Anda pilih untuk mewakili tingkat itu (misalnya vmss-appName-business-layer).

Pertimbangan tambahan

  • Arsitektur N-tier tidak terbatas pada tiga tingkatan. Untuk aplikasi yang lebih kompleks, biasanya 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 berbeda di area tersebut.

  • Gunakan set skala komputer virtual untuk penskalaan otomatis.

  • Cari tempat dalam arsitektur tempat Anda dapat menggunakan layanan terkelola tanpa refaktor yang signifikan. Secara khusus, lihat penembolokan, olah pesan, penyimpanan, dan database.

  • Untuk keamanan yang lebih tinggi, tempatkan DMZ jaringan di depan aplikasi. DMZ mencakup peralatan virtual jaringan (NVA) yang mengimplementasikan fungsionalitas keamanan seperti firewall dan inspeksi paket. Untuk informasi selengkapnya, lihat Arsitektur referensi DMZ jaringan.

  • Untuk ketersediaan tinggi, tempatkan dua atau lebih NVA dalam kumpulan ketersediaan, dengan load balancer eksternal untuk mendistribusikan permintaan Internet di seluruh instans. Untuk informasi selengkapnya, lihat Menyebarkan appliance virtual jaringan yang sangat tersedia dan contoh skenario ketersediaan tinggi dan pemulihan bencana untuk aplikasi IaaS.

  • Jangan izinkan akses RDP atau SSH langsung ke VM yang menjalankan kode aplikasi. Sebagai gantinya, operator harus masuk ke jumpbox, juga disebut bastion host. Ini adalah VM di jaringan yang digunakan administrator untuk terhubung ke VM lain. Jumpbox memiliki grup keamanan jaringan yang mengizinkan RDP atau SSH hanya dari alamat IP publik yang disetujui.

  • Anda dapat memperluas jaringan virtual Azure ke jaringan lokal menggunakan jaringan privat maya (VPN) situs-ke-situs atau Azure ExpressRoute. Untuk informasi selengkapnya, lihat Arsitektur referensi jaringan hibrid.

  • Jika organisasi Anda menggunakan Active Directory untuk mengelola identitas, Anda mungkin ingin memperluas lingkungan Active Directory Anda ke Azure VNet. Untuk informasi selengkapnya, lihat Arsitektur referensi pengelolaan identitas.

  • Jika Anda memerlukan ketersediaan yang lebih tinggi daripada yang disediakan Azure SLA untuk VM, replikasikan aplikasi di dua wilayah dan gunakan Azure Traffic Manager untuk failover. Untuk informasi selengkapnya, lihat Menjalankan VM Windows di beberapa wilayah atau Menjalankan VM Linux di beberapa wilayah.