Bagikan melalui


Multitenancy dan Azure Cache for Redis

Azure Cache for Redis biasanya digunakan untuk meningkatkan performa solusi Anda, untuk mengurangi beban pada database Anda atau komponen tingkat data lainnya, dan untuk mengurangi jumlah status yang Anda simpan pada simpul komputasi. Dalam artikel ini, kami menjelaskan beberapa fitur Azure Cache for Redis yang berguna untuk solusi multipenyewa, lalu kami menyediakan tautan ke panduan yang dapat membantu Anda, saat Anda merencanakan bagaimana Anda akan menggunakan Azure Cache for Redis.

Model isolasi

Saat bekerja dengan sistem multipenyewa yang menggunakan Azure Cache for Redis, Anda perlu membuat keputusan tentang tingkat isolasi yang ingin Anda gunakan. Azure Cache for Redis mendukung beberapa model isolasi.

Tabel berikut ini meringkas perbedaan antara model isolasi penyewaan utama untuk Azure Cache for Redis:

Pertimbangan Cache bersama, database bersama Cache dan database bersama, daftar kontrol akses Cache bersama, database per penyewa Cache per penyewa
Isolasi data Rendah. Gunakan struktur data Redis atau prefiks kunci untuk mengidentifikasi data setiap penyewa Tinggi. Data diisolasi berdasarkan awalan kunci Rendah. Data dipisahkan tetapi tidak ada isolasi keamanan yang disediakan Sangat Penting
Isolasi performa Rendah. Semua penyewa berbagi sumber daya komputasi yang sama Rendah. Semua penyewa berbagi sumber daya komputasi yang sama Rendah. Semua penyewa berbagi sumber daya komputasi yang sama Sangat Penting
Kompleksitas penyebaran Kurang Penting Sedang rendah Medium Sedang-tinggi
Kompleksitas operasional Kurang Penting Sedang rendah Kurang Penting Sedang-tinggi
Biaya sumber daya Kurang Penting Kurang Penting Rendah Tinggi
Contoh skenario Solusi multipenyewa besar dengan tingkat aplikasi bersama Solusi multipenyewa besar dengan identitas aplikasi berbeda yang mengakses cache Memigrasikan aplikasi penyewa tunggal untuk menjadi multitenant-aware Instans aplikasi individual per penyewa

Instans cache bersama dan database bersama

Anda mungkin mempertimbangkan untuk menyebarkan satu cache, dengan satu database Redis, dan menggunakannya untuk menyimpan data cache untuk semua penyewa Anda. Pendekatan ini umumnya digunakan ketika Anda memiliki satu instans aplikasi yang dibagikan oleh semua penyewa Anda.

Saat Anda mengikuti pendekatan ini, aplikasi Anda hanya bertanggung jawab untuk memisahkan data penyewa. Anda dapat menggunakan awalan kunci untuk membedakan data dari penyewa yang berbeda, tetapi aplikasi Anda perlu rajin hanya mengakses data untuk penyewa yang sedang bekerja dengannya. Atau, Anda dapat mempertimbangkan untuk menggunakan struktur data Redis, seperti set atau hash, untuk data setiap penyewa. Masing-masing pendekatan ini mendukung sejumlah besar kunci, sehingga dapat menskalakan ke banyak penyewa. Namun, Anda perlu mengelola otorisasi dalam aplikasi Anda alih-alih dalam cache.

Saat Anda berbagi instans cache dan database antar penyewa, pertimbangkan bahwa semua penyewa Anda berbagi sumber daya komputasi yang mendasar yang sama untuk cache. Jadi, pendekatan ini bisa rentan terhadap masalah Noisy Neighbor. Pastikan Anda mengikuti praktik terbaik untuk Azure Cache for Redis untuk memanfaatkan sumber daya cache Anda yang paling efisien dan untuk mengurangi efek tetangga yang bising. Praktik terbaiknya termasuk:

Selain itu, pertimbangkan untuk memantau sumber daya cache Anda, seperti CPU dan memori. Jika Anda mengamati tekanan sumber daya, pertimbangkan mitigasi berikut:

  • Tingkatkan ke SKU atau tingkat cache dengan tingkat sumber daya yang lebih tinggi.
  • Peluasan skala ke beberapa cache dengan memecah data cache Anda. Salah satu opsinya adalah memecah menurut penyewa, di mana beberapa penyewa menggunakan cache A dan beberapa menggunakan cache B. Atau Anda dapat memecah berdasarkan subsistem, di mana satu bagian solusi Anda menyimpan data untuk semua penyewa ke cache A, dan bagian lain dari cache solusi Anda ke cache B.

Cache dan database bersama dengan daftar kontrol akses

Jika tingkat aplikasi Anda menggunakan identitas yang berbeda untuk mengakses cache untuk setiap penyewa, gunakan daftar kontrol akses Redis. Daftar kontrol akses memungkinkan Anda membatasi akses ke informasi penyewa ke identitas tertentu. Anda mengidentifikasi data yang diizinkan untuk diakses identitas berdasarkan nama kunci atau awalan. Pendekatan ini bisa cocok ketika Anda memiliki instans aplikasi yang berbeda untuk setiap penyewa, atau jika Anda memiliki aplikasi bersama yang menggunakan beberapa identitas untuk mengakses layanan hilir berdasarkan konteks penyewa.

Demikian pula dengan model isolasi sebelumnya, berbagi cache dan database berarti Anda perlu mengambil tindakan pencegahan untuk menghindari masalah Noisy Neighbor.

Instans cache bersama dengan database per penyewa

Pendekatan lain yang mungkin Anda pertimbangkan adalah menyebarkan satu instans cache, dan menyebarkan database Redis khusus penyewa dalam instans. Pendekatan ini memberikan beberapa tingkat isolasi logis dari data setiap penyewa, tetapi tidak memberikan isolasi performa atau perlindungan terhadap tetangga yang bising.

Pendekatan ini mungkin berguna untuk skenario migrasi. Misalnya, Anda memodernisasi aplikasi penyewa tunggal yang tidak dirancang untuk bekerja dengan beberapa penyewa, dan Anda secara bertahap mengonversinya menjadi sadar multitenansi dengan menyertakan konteks penyewa di semua permintaan. Anda dapat memperoleh beberapa efisiensi biaya dengan menggunakan satu cache bersama, dan Anda tidak perlu memperbarui logika aplikasi untuk menggunakan awalan kunci penyewa atau struktur data khusus penyewa.

Azure Cache for Redis memberlakukan batasan jumlah database yang dapat dibuat pada satu cache. Sebelum menerapkan pendekatan ini, pertimbangkan jumlah penyewa yang anda harapkan untuk tumbuh.

Selain itu, pendekatan ini tidak memberikan manfaat apa pun untuk isolasi keamanan data. Di Azure Cache for Redis, autentikasi dan otorisasi dilakukan di tingkat instans cache.

Catatan

Azure Cache for Redis mendukung beberapa database pada tingkat tertentu, dan tidak mendukung beberapa database saat Anda menggunakan instans berkluster.

Instans cache per penyewa

Anda mungkin mempertimbangkan untuk menyebarkan instans terpisah Azure Cache for Redis untuk setiap penyewa. Tidak ada batasan jumlah cache yang dapat Anda sebarkan dalam satu langganan Azure. Pendekatan ini memberikan tingkat isolasi data dan performa terkuat.

Namun, setiap cache ditagih sebagai sumber daya Azure terpisah, sehingga saat Anda bertambah menjadi penyewa dalam jumlah besar, Anda mungkin dikenakan lebih banyak biaya. Selain itu, pendekatan ini sering kali tidak memanfaatkan sumber daya setiap cache secara efisien, karena setiap instans Azure Cache for Redis umumnya mendukung permintaan dalam volume besar. Yang terbaik adalah hanya mempertimbangkan pendekatan isolasi ini jika Anda memiliki data yang ketat atau persyaratan isolasi performa.

Fitur Azure Cache for Redis yang mendukung multitenansi

Daftar kontrol akses

Azure Cache for Redis menyediakan sistem kontrol akses berbasis peran yang kuat, yang memungkinkan Anda membuat kebijakan akses data yang komprehensif untuk menerapkan aturan autentikasi dan otorisasi Anda. Aturan ini dapat ditentukan pada berbagai tingkat granularitas, termasuk untuk memungkinkan akses pengguna ke kunci cache yang mengikuti pola tertentu. Dengan menggunakan pola utama, Anda dapat berbagi satu instans cache dan database antara beberapa penyewa, masing-masing dengan akun pengguna mereka sendiri. Azure Cache for Redis memberlakukan isolasi penyewa untuk memastikan bahwa pengguna hanya dapat mengakses sekumpulan kunci mereka sendiri yang mengikuti pola.

Misalnya, Anda memiliki penyewa bernama Fabrikam. Tingkat aplikasi Anda seharusnya hanya dapat mengakses data cache yang berkaitan dengan Fabrikam, dan bukan dari penyewa lain. Anda dapat menentukan kebijakan akses kustom yang memungkinkan membaca dan mengatur semua kunci cache yang dimulai dengan Fabrikam:

+@read +set ~Fabrikam*

Anda kemudian dapat menetapkan kebijakan ke identitas Microsoft Entra yang digunakan instans aplikasi Fabrikam Anda. Setelah Anda mengonfigurasi cache Anda, pengguna Fabrikam dapat mengakses kunci bernama FabrikamData1 dan FabrikamUserDetails, tetapi tidak ContosoData1.

Replikasi Geo Aktif

Banyak solusi multipenyewa perlu didistribusikan secara geografis. Anda dapat berbagi tingkat aplikasi yang didistribusikan secara global, dengan instans aplikasi Anda membaca dari dan menulis ke cache terdekat untuk mempertahankan performa yang dapat diterima. Tingkat Perusahaan Azure Cache for Redis mendukung penautan beberapa cache bersama-sama di seluruh wilayah, dalam konfigurasi aktif-aktif.

Kontributor

Artikel ini dikelola oleh Microsoft. Ini awalnya ditulis oleh kontributor berikut.

Penulis utama:

Kontributor lain:

  • Carl Dacosta | Manajer Rekayasa Perangkat Lunak Utama, Azure Cache for Redis
  • Kyle Teegarden | Manajer Program Senior, Azure Cache for Redis
  • Arsen Vladimirskiy | Teknisi Pelanggan Utama, FastTrack untuk Azure

Untuk melihat profil LinkedIn non-publik, masuk ke LinkedIn.

Langkah berikutnya

Tinjau pendekatan penyimpanan dan data untuk multi-penyewaan.