Menerapkan dan menjelajahi aplikasi multi-penyewa yang terbagi
Berlaku untuk: Azure SQL Database
Dalam tutorial ini, Anda menyebarkan dan menjelajahi contoh aplikasi SaaS multi-penyewa yang diberi nama Tiket Wingtip. Aplikasi Wingtip Tickets dirancang untuk menampilkan fitur Azure SQL Database yang menyederhanakan implementasi skenario SaaS.
Implementasi aplikasi Wingtip Tickets ini menggunakan pola database multi-tenant yang terbagi. Sharding dilakukan oleh pengidentifikasi penyewa. Data penyewa didistribusikan ke database tertentu sesuai dengan nilai pengidentifikasi penyewa.
Pola database ini memungkinkan Anda untuk menyimpan satu atau beberapa penyewa di setiap shard atau database. Anda dapat mengoptimalkan biaya terendah dengan meminta setiap database dibagikan oleh beberapa penyewa. Atau Anda dapat mengoptimalkan isolasi dengan memiliki setiap database hanya dengan menyimpan satu penyewa. Pilihan pengoptimalan Anda dapat dibuat secara mandiri untuk setiap penyewa tertentu. Pilihan Anda dapat dibuat ketika penyewa pertama kali disimpan, atau Anda dapat berubah pikiran nanti. Aplikasi ini dirancang untuk bekerja dengan baik.
Aplikasi diterapkan dengan cepat
Aplikasi ini berjalan di cloud Azure dan menggunakan Azure SQL Database. Bagian penerapan yang mengikuti menyediakan tombol Terapkan ke Azure berwarna biru. Saat tombol ditekan, aplikasi sepenuhnya diterapkan ke langganan Azure Anda dalam waktu lima menit. Anda memiliki akses penuh untuk bekerja dengan masing-masing komponen aplikasi.
Aplikasi ini diterapkan dengan data untuk tiga sampel penyewa. Penyewa disimpan bersama-sama dalam satu database multi-penyewa.
Siapa pun dapat mengunduh kode sumber C# dan PowerShell untuk Tiket Wingtip dari repositori GitHub-nya.
Pelajari dalam tutorial ini
- Cara menerapkan aplikasi Wingtip Tickets SaaS.
- Tempat di mana mendapatkan kode sumber aplikasi, dan skrip manajemen.
- Tentang server dan database yang membentuk aplikasi.
- Bagaimana penyewa dipetakan ke data aplikasi dengan katalog.
- Cara memprovisikan penyewa baru.
- Cara memantau aktivitas penyewa di aplikasi.
Serangkaian tutorial terkait tersedia dan dibuat pada penerapan awal ini. Tutorial mengeksplorasi berbagai desain SaaS dan pola manajemen. Ketika Anda bekerja melalui tutorial, Anda didorong untuk melangkah melalui skrip yang disediakan untuk melihat bagaimana pola SaaS yang berbeda diterapkan.
Prasyarat
Untuk menyelesaikan tutorial ini, pastikan prasyarat berikut ini diselesaikan:
- Azure PowerShell dipasang. Untuk detailnya, lihat Mulai menggunakan Azure PowerShell.
Terapkan aplikasi Wingtip Tikets
Rencanakan nama
Dalam langkah-langkah bagian ini, Anda menyediakan nilai pengguna yang digunakan untuk memastikan nama sumber unik secara global, dan nama untuk grup sumber yang berisi semua sumber yang dibuat oleh penerapan aplikasi. Untuk seseorang bernama Ann Finley, kami sarankan:
- Pengguna: af1 (Inisial mereka, ditambah digit. Gunakan nilai yang berbeda (misalnya af2) jika Anda menggunakan aplikasi untuk kedua kalinya.)
- Grup sumber daya: wingtip-mt-af1 (wingtip-mt menunjukkan ini adalah aplikasi multi-penyewa yang terbagi. Menambahkan nama pengguna af1 yang mengorelasikan nama grup sumber daya dengan nama sumber daya yang dikandungnya.)
Pilih nama Anda sekarang, lalu tulis nama.
Langkah-langkah
Klik tombol biru Terapkan ke Azure berikut ini.
Masukkan nilai parameter yang diperlukan untuk penerapan.
Penting
Untuk demonstrasi ini, jangan gunakan grup sumber daya, server, atau kumpulan yang sudah ada sebelumnya. Sebagai gantinya, pilih Buat grup sumber daya baru. Hapus grup sumber daya ini ketika Anda selesai dengan aplikasi untuk menghentikan penagihan terkait. Jangan gunakan aplikasi ini, atau sumber daya apa pun yang dibuatnya, untuk produksi. Beberapa aspek autentikasi, dan pengaturan firewall server, sengaja tidak aman dalam aplikasi untuk memfasilitasi demonstrasi.
- Untuk grup Sumber Daya - Pilih Buat baru, lalu sediakan Nama untuk grup sumber daya (peka huruf besar/kecil).
- Pilih Lokasi dari daftar turun bawah.
- Untuk Pengguna - Kami sarankan Anda memilih nilai Pengguna singkat.
- Untuk grup Sumber Daya - Pilih Buat baru, lalu sediakan Nama untuk grup sumber daya (peka huruf besar/kecil).
Terapkan aplikasi.
- Klik untuk menyetujui syarat dan ketentuan.
- Klik Beli.
Pantau status penerapan dengan mengklik Pemberitahuan, yang merupakan ikon bel di sebelah kanan kotak pencarian. Menerapkan aplikasi Wingtip membutuhkan waktu sekitar lima menit.
Unduh dan buka blokir skrip manajemen
Saat aplikasi sedang menerapkan, unduh kode sumber aplikasi dan skrip manajemen.
Catatan
Konten yang dapat dieksekusi (skrip, DLL) dapat diblokir oleh Windows ketika file zip diunduh dari sumber eksternal dan diekstraksi. Saat mengekstrak skrip dari file zip, gunakan langkah-langkah berikut untuk membuka blokir .zip sebelum mengekstrak. Dengan membuka blokir file .zip , Anda memastikan skrip diizinkan untuk dijalankan.
- Telusuri repo GitHub WingtipTicketsSaaS-MultiTenantDb.
- Klik Klon atau unduh.
- Klik Unduh ZIP dan simpan file.
- Klik kanan file WingtipTicketsSaaS-MultiTenantDb-master.zip dan pilih Properti.
- Pada tab Umum, pilih Buka blokir, dan klik Terapkan.
- Klik OK.
- Ekstrak filenya.
Skrip terletak di folder ..\WingtipTicketsSaaS-MultiTenantDb-master\Learning Modules\.
Perbarui file konfigurasi untuk penerapan ini
Sebelum menjalankan skrip apa pun, atur grup sumber daya dan nilai user di UserConfig.psm1. Atur variabel ini ke nilai yang sama dengan yang Anda atur selama penerapan.
- Buka ...\Learning Modules\UserConfig.psm1 di PowerShell ISE.
- Perbarui SumberNamaGrub dan Nama dengan nilai tertentu untuk penerapan Anda (hanya pada baris 10 dan 11).
- Simpan perubahan.
Nilai yang ditetapkan dalam file ini digunakan oleh semua skrip, sehingga penting bagi mereka untuk akurat. Jika Anda menerapan kembali aplikasi, Anda harus memilih nilai yang berbeda untuk Grup Pengguna dan Sumber Daya. Kemudian perbarui file UserConfig.psm1 lagi dengan nilai baru.
Jalankan aplikasi
Di aplikasi Wingtip, penyewa adalah tempat. Tempat dapat menjadi aula konser, klub olahraga, atau lokasi lain tempat diselenggarakannya acara. Tempat-tempat mendaftar di Wingtip sebagai pelanggan, dan pengidentifikasi penyewa dihasilkan untuk setiap tempat. Setiap tempat mencantumkan aktivitasnya yang akan datang di Wingtip, sehingga masyarakat dapat membeli tiket ke acara-acara tersebut.
Setiap tempat mendapatkan aplikasi web yang dipersonalisasi untuk mencantumkan acara mereka dan menjual tiket. Setiap aplikasi web independen dan terisolasi dari penyewa lain. Secara internal di Azure SQL Database, setiap data untuk setiap penyewa disimpan dalam database multi-penyewa yang di-bagikan, secara default. Semua data ditandai dengan pengidentifikasi penyewa.
Halaman web Events Hub pusat menyediakan daftar tautan ke penyewa dalam penerapan tertentu. Gunakan langkah berikut untuk mengetahui halaman web Events Hub dan aplikasi web individual:
Buka Events Hub di web browser Anda:
http://events.wingtip-mt.<user>.trafficmanager.net (Ganti <user> dengan nilai pengguna penyebaran Anda.)
Klik Fabrikam Jazz Club di Pusat Events Hub.
Azure Traffic Manager
Untuk mengontrol distribusi permintaan yang masuk, aplikasi Wingtip menggunakan Azure Traffic Manager. Halaman acara untuk setiap penyewa menyertakan nama penyewa di URL-nya. Setiap URL juga menyertakan nilai Pengguna spesifik Anda. Setiap URL mematuhi format yang diperlihatkan dengan menggunakan langkah berikut:
- http://events.wingtip-mt.<user>.trafficmanager.net/fabrikamjazzclub
- Aplikasi acara menguraikan nama penyewa dari URL. Nama penyewa dalam URL contoh sebelumnya adalah fabrikamjazzclub.
- Aplikasi kemudian mengabaikan nama penyewa untuk membuat kunci untuk mengakses katalog menggunakan manajemen pemetaan shard.
- Aplikasi ini menemukan kunci dalam katalog, dan mendapatkan lokasi database penyewa yang sesuai.
- Aplikasi ini menggunakan info lokasi untuk menemukan dan mengakses satu database yang berisi semua data untuk penyewa.
Events Hub
- Events Hub mencantumkan semua penyewa yang terdaftar dalam katalog, sekaligus tempat mereka.
- Events Hub menggunakan metadata yang diperluas dalam katalog untuk mengambil nama penyewa yang terkait dengan setiap pemetaan untuk membuat URL.
Dalam lingkungan produksi, Anda biasanya membuat catatan DNS CNAME untuk mengarahkan domain internet perusahaan ke profil lalu lintas manajer.
Mulai menghasilkan beban pada database penyewa
Sekarang aplikasi ini diterapkan, mari kita kerjakan! Skrip PowerShell Demo-LoadGenerator memulai beban kerja yang berjalan untuk setiap penyewa. Beban dunia nyata pada banyak aplikasi SaaS biasanya sporadis dan tidak dapat diprediksi. Untuk mensimulasikan beban ini, generator menghasilkan beban acak yang didistribusikan ke semua penyewa. Beban mencakup rentetan acak pada setiap penyewa yang terjadi pada interval acak. Dibutuhkan beberapa menit agar pola beban muncul, jadi yang terbaik adalah membiarkan generator berjalan setidaknya selama tiga atau empat menit sebelum memantau beban.
- Di PowerShell ISE, buka skrip ...\Learning Modules\Utilities\Demo-LoadGenerator.ps1.
- Tekan F5 untuk menjalankan skrip dan mulai generator beban(tinggalkan nilai parameter default untuk saat ini).
Skrip Demo-LoadGenerator.ps1 membuka sesi PowerShell lain di mana generator beban berjalan. Generator beban berjalan di dalam sesi ini sebagai tugas latar depan yang meminta pekerjaan pembuatan beban latar belakang, satu untuk setiap penyewa.
Setelah tugas latar depan dimulai, tugas tetap dalam keadaan permintaan pekerjaan. Tugas ini memulai pekerjaan latar belakang tambahan untuk penyewa baru yang kemudian disediakan.
Menutup sesi PowerShell menghentikan semua pekerjaan.
Anda mungkin ingin memulai ulang sesi generator beban untuk menggunakan nilai parameter yang berbeda. Jika demikian, tutup sesi pembuatan PowerShell, lalu jalankan ulang Demo-LoadGenerator.ps1.
Menyediakan penyewa baru ke dalam database yang telah dibagikan
Penerapan awal mencakup tiga sampel penyewa dalam database Tenants1. Mari kita membuat penyewa lain dan mengamati efeknya pada aplikasi yang diterapkan. Dalam langkah ini, Anda menekan satu tombol untuk membuat penyewa baru:
Buka ...\Learning Modules\Provision and Catalog\Demo-ProvisionTenants.ps1 di PowerShell ISE.
Tekan F5 (bukan F8) untuk menjalankan skrip (tinggalkan nilai default untuk saat ini).
Catatan
Anda harus menjalankan skrip PowerShell hanya dengan menekan tombol F5, bukan dengan menekan F8 untuk menjalankan bagian skrip yang dipilih. Masalah dengan F8 adalah bahwa variabel $PSScriptRoot tidak dievaluasi. Variabel ini diperlukan oleh banyak skrip untuk menavigasi folder, meminta skrip lain, atau mengimpor modul.
Penyewa Red Maple Racing baru ditambahkan ke database Tenants1 dan terdaftar dalam katalog. Situs Acara penjualan tiket penyewa baru terbuka di browser Anda:
Refresh Events Hub, dan penyewa baru sekarang muncul dalam daftar.
Menyediakan penyewa baru dalam databasenya sendiri
Model multi-penyewa yang dibagikan memungkinkan Anda memilih apakah akan menyediakan penyewa baru ke dalam database yang berisi penyewa lain, atau ke dalam database sendiri. Penyewa yang terisolasi dalam databasenya sendiri menikmati manfaat berikut:
- Performa database penyewa dapat dikelola tanpa perlu berkompromi dengan kebutuhan penyewa lain.
- Jika perlu, database dapat dipulihkan ke titik waktu sebelumnya, karena tidak akan mempengaruhi penyewa lain.
Anda dapat memilih untuk menempatkan pelanggan uji coba gratis, atau pelanggan ekonomi, ke dalam database multi-penyewa. Anda dapat menempatkan setiap penyewa premium ke dalam database khusus sendiri. Jika Anda membuat banyak database yang hanya berisi satu penyewa, Anda dapat mengelola semuanya secara kolektif dalam kumpulan elastis untuk mengoptimalkan biaya sumber daya.
Selanjutnya, kami menyediakan penyewa lain, kali ini dalam database sendiri:
Di ...\Learning Modules\Provision and Catalog\Demo-ProvisionTenants.ps1, ubah $TenantName menjadi Salix Salsa, $VenueType menjadi dance dan $Scenario menjadi 2.
Tekan F5 untuk menjalankan skrip lagi.
- Pers F5 ini menyediakan penyewa baru dalam database terpisah. Database dan penyewa terdaftar dalam katalog. Kemudian browser terbuka ke halaman Acara penyewa.
- Gulir ke bagian bawah halaman. Di banner Anda melihat nama database tempat data penyewa disimpan.
Refresh Events Hub, dan dua penyewa baru sekarang muncul dalam daftar.
Menjelajahi server dan database penyewa
Sekarang kita melihat beberapa sumber daya yang diterapkan:
Di portal Microsoft Azure, buka daftar grup sumber daya. Buka grup sumber daya yang Anda buat saat menerapkan aplikasi.
Klik server catalog-mt<user>. Server katalog berisi dua database bernama tenantcatalog dan basetenantdb. Database basetenantdb adalah database templat kosong. Ini disalin untuk membuat database penyewa baru, apakah digunakan untuk banyak penyewa atau hanya satu penyewa.
Kembali ke grup sumber daya dan pilih server tenants1-mt yang menyimpan database penyewa.
- Database penyewa1 adalah database multi-penyewa di mana tiga penyewa asli, ditambah penyewa pertama yang Anda tambahkan, disimpan. Ini dikonfigurasi sebagai database Standar 50 DTU.
- Database salixsalsa memegang tempat tari Salix Salsa sebagai satu-satunya penyewa. Ini dikonfigurasi sebagai database edisi Standar dengan 50 DTUs secara default.
Memantau performa database
Jika generator beban telah berjalan selama beberapa menit, telemetri cukup tersedia untuk melihat kemampuan pemantauan database yang terpasang di portal Microsoft Azure.
Telusuri ke server tenants1-mt<user>, dan klik tenants1 untuk melihat pemanfaatan sumber daya untuk database yang memiliki empat penyewa di dalamnya. Setiap penyewa tunduk pada beban berat sporadis dari generator beban:
Bagan pemanfaatan DTU menggambarkan dengan baik bagaimana database multi-penyewa dapat mendukung beban kerja yang tidak dapat diprediksi di banyak penyewa. Dalam hal ini, generator beban menerapkan beban sporadis sekitar 30 DTUs untuk setiap penyewa. Beban ini sama dengan pemanfaatan 60% dari database 50 DTU. Puncak yang melebihi 60% adalah hasil dari beban yang diterapkan ke lebih dari satu penyewa pada saat yang sama.
Telusuri ke server tenant1-m<user>, dan klik database salixsalsa. Anda bisa melihat pemanfaatan sumber daya pada database ini yang hanya berisi satu penyewa.
Generator beban menerapkan beban serupa untuk setiap penyewa, terlepas dari database mana setiap penyewa berasal. Dengan hanya satu penyewa dalam database salixsalsa, Anda dapat melihat bahwa database dapat mempertahankan beban yang jauh lebih tinggi daripada database dengan beberapa penyewa.
Alokasi sumber daya bervariasi menurut beban kerja
Terkadang database multi-penyewa membutuhkan lebih banyak sumber daya untuk performa yang baik daripada database penyewa tunggal, tetapi tidak selalu. Alokasi sumber daya yang optimal tergantung pada karakteristik beban kerja tertentu untuk penyewa di sistem Anda.
Beban kerja yang dihasilkan oleh skrip generator beban hanya untuk tujuan ilustrasi.
Sumber Daya Tambahan:
Untuk mempelajari tentang aplikasi SaaS multi-penyewa, lihat Pola desain untuk aplikasi SaaS multi-penyewa.
Untuk mempelajari tentang kumpulan elastis, lihat:
Langkah berikutnya
Dalam tutorial ini, Anda belajar:
- Cara menggunakan aplikasi Database Multi-penyewa Wingtip Tickets SaaS.
- Tentang server, dan database yang membentuk aplikasi.
- Bagaimana penyewa dipetakan ke data mereka dengan katalog.
- Cara menyediakan penyewa baru, ke dalam database multi-penyewa dan database penyewa tunggal.
- Cara melihat pemanfaatan kumpulan untuk memantau aktivitas penyewa.
- Cara menghapus sumber daya sampel untuk menghentikan tagihan terkait.
Sekarang coba Tutorial penyediaan dan katalog.