Bagikan melalui


Menerapkan dan menjelajahi aplikasi SaaS multipenyewa yang menggunakan pola database per penyewa dengan Azure SQL Database

Berlaku untuk:Azure SQL Database

Dalam tutorial ini, Anda menerapkan dan menjelajahi aplikasi database per penyewa Wingtip Tickets SaaS (Wingtip). Aplikasi ini menggunakan pola database per penyewa untuk menyimpan data beberapa penyewa. Aplikasi ini dirancang untuk menampilkan fitur Azure SQL Database yang menyederhanakan cara mengaktifkan skenario SaaS.

Lima menit setelah memilih Terapkan ke Azure, Anda memiliki aplikasi SaaS multipenyewa. Aplikasi ini menyertakan database yang dijalankan di Azure SQL Database. Aplikasi ini diterapkan dengan tiga penyewa sampel, masing-masing dengan database-nya sendiri. Semua database diterapkan ke dalam kumpulan elastis SQL. Aplikasi ini diterapkan ke langganan Azure Anda. Anda memiliki akses penuh untuk mempelajari dan mengerjakan masing-masing komponen aplikasi. Penerapan kode sumber C# dan skrip manajemen tersedia dalam WingtipTicketsSaaS-DbPerTenant GitHub repo.

Dalam tutorial ini, Anda akan mempelajari:

  • Cara menggunakan aplikasi SaaS Wingtip Tickets.
  • Di mana mendapatkan kode sumber aplikasi, dan skrip manajemen.
  • Tentang server, kumpulan, 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 menawarkan untuk mempelajari berbagai desain SaaS dan pola manajemen. Tutorial dibuat di luar penerapan awal ini. Ketika menggunakan tutorial, Anda dapat memeriksa skrip yang diberikan untuk melihat bagaimana pola SaaS yang berbeda diimplementasikan. Skrip menunjukkan bagaimana fitur SQL Database menyederhanakan pengembangan aplikasi SaaS.

Prasyarat

Untuk menyelesaikan tutorial ini, pastikan Azure PowerShell dipasang. Untuk informasi selengkapnya, lihat Mulai menggunakan Azure PowerShell.

Menerapkan aplikasi Wingtip Tickets SaaS

Rencanakan nama

Dalam langkah-langkah bagian ini, Anda memberikan nilai pengguna yang digunakan untuk memastikan nama sumber daya unik secara global. Anda juga memberikan nama untuk grup sumber daya yang berisi semua sumber daya yang dibuat oleh penerapan aplikasi. Untuk orang fiktif yang bernama Ann Finley, kami sarankan:

  • Pengguna: af1 terdiri dari inisial Ann Finley ditambah satu digit. Jika Anda menerapkan aplikasi untuk kedua kalinya, gunakan nilai yang berbeda. Contohnya adalah af2.
  • Grup sumber daya: wingtip-dpt-af1 menunjukkan ini adalah aplikasi database per penyewa. Tambahkan nama pengguna af1 untuk mengorelasikan nama grup sumber daya dengan nama sumber daya yang dikandungnya.

Pilih nama Anda sekarang, lalu tulis nama.

Langkah-langkah

  1. Untuk membuka templat penerapan database per penyewa Wingtip Tickets SaaS di portal Microsoft Azure, pilih Terapkan ke Azure.

    Image showing a button labeled

  2. Masukkan nilai dalam templat untuk parameter yang diperlukan.

    Penting

    Beberapa firewall server dan autentikasi sengaja tidak aman untuk tujuan demonstrasi. Sebaiknya Anda membuat grup sumber daya baru. Jangan gunakan grup sumber daya, server, atau kumpulan yang ada. Jangan gunakan aplikasi ini, skrip, atau sumber daya yang diterapkan untuk produksi. Hapus grup sumber daya ini jika Anda selesai dengan aplikasi untuk menghentikan penagihan terkait.

    • Grup sumber daya: Pilih Buat baru, dan berikan nama unik yang Anda pilih sebelumnya untuk grup sumber daya.
    • Lokasi: Pilih lokasi dari daftar tarik-turun.
    • Pengguna: Gunakan nilai nama pengguna yang Anda pilih sebelumnya.
  3. Terapkan aplikasi.

    a. Klik untuk menyetujui syarat dan ketentuan.

    b. Pilih Beli.

  4. Pantau status penerapan, klik Pemberitahuan (ikon bel di sebelah kanan kotak pencarian). Menerapkan aplikasi Wingtip Tickets SaaS membutuhkan waktu sekitar lima menit.

    Deployment succeeded

Mengunduh dan membuka blokir skrip manajemen Wingtip Tickets

Saat aplikasi diterapkan, unduh kode sumber dan skrip manajemen.

Penting

Konten yang dapat dieksekusi (skrip dan DLL) mungkin diblokir oleh Windows saat file .zip diunduh dari sumber eksternal dan diekstrak. Ikuti langkah-langkah untuk membuka blokir file .zip sebelum Anda mengekstrak skrip. Membuka blokir memastikan skrip diperbolehkan untuk dijalankan.

  1. Telusuri WingtipTicketsSaaS-DbPerTenant GitHub repo.
  2. Pilih Klon atau unduh.
  3. Pilih Unduh ZIP, lalu simpan file.
  4. Klik kanan file WingtipTicketsSaaS-DbPerTenant-master.zip, lalu pilih Properti.
  5. Pada tab Umum, pilih Buka Blokir>Terapkan.
  6. Pilih Oke, lalu ekstrak file

Skrip terletak di folder ...\WingtipTicketsSaaS-DbPerTenant-master\Learning Modules.

Memperbarui file konfigurasi pengguna untuk penerapan ini

Sebelum Anda menjalankan skrip apa pun, perbarui grup sumber daya dan nilai pengguna dalam file User Config. Atur variabel ini sesuai nilai yang Anda gunakan selama penerapan.

  1. Di PowerShell ISE, buka ...\Learning Modules\UserConfig.psm1
  2. Perbarui SumberNamaGrub dan Nama dengan nilai tertentu untuk penerapan Anda (hanya pada baris 10 dan 11).
  3. Simpan perubahan.

Nilai-nilai ini direferensikan di hampir setiap skrip.

Jalankan aplikasi

Aplikasi ini menampilkan tempat-tempat yang menyelenggarakan acara. Jenis tempat meliputi aula konser, klub jazz, dan klub olahraga. Di Wingtip Tickets, tempat terdaftar sebagai penyewa. Menjadi penyewa memberikan cara mudah bagi tempat untuk mencantumkan acara dan menjual tiket kepada pelanggan. Setiap tempat mendapatkan aplikasi web yang dipersonalisasi untuk mencantumkan acara dan menjual tiket.

Di internal aplikasi, setiap penyewa mendapatkan database yang diterapkan ke dalam kumpulan elastis.

Halaman Events Hub pusat memberikan daftar tautan ke penyewa di penerapan Anda.

  1. Gunakan URL untuk membuka Events Hub di browser web Anda: http://events.wingtip-dpt.<user>.trafficmanager.net. Ganti <user> dengan nilai pengguna penerapan Anda.

    Events Hub

  2. Pilih Fabrikam Jazz Club di Events Hub.

    Events

Manajer Lalu Lintas Azure

Aplikasi Wingtip menggunakan Azure Traffic Manager untuk mengendalikan distribusi permintaan masuk. URL untuk mengakses halaman acara untuk penyewa tertentu menggunakan format berikut:

  • http://events.wingtip-dpt.<user>.trafficmanager.net/fabrikamjazzclub

    Bagian-bagian dari format sebelumnya dijelaskan dalam tabel berikut.

    Bagian URL Deskripsi
    events.wingtip-dpt Bagian acara dari aplikasi Wingtip.

    -dpt membedakan implementasi database-per-tenant dari Wingtip Tickets dari implementasi lain. Contohnya adalah implementasi tunggal app per penyewa (-sa) atau database multipenyewa (-mt).
    .<user> af1 dalam contoh.
    .trafficmanager.net/ Traffic Manager, URL dasar.
    fabrikamjazzclub Mengidentifikasi penyewa bernama Fabrikam Jazz Club.
  • Nama penyewa dipilah dari URL oleh aplikasi acara.

  • Nama penyewa digunakan untuk membuat kunci.

  • Kunci digunakan untuk mengakses katalog guna mendapatkan lokasi database penyewa.

    • Katalog diimplementasikan dengan menggunakan manajemen peta pecahan.
  • Events Hub menggunakan metadata yang diperluas dalam katalog untuk membuat URL halaman daftar acara untuk setiap penyewa.

Dalam lingkungan produksi, Anda biasanya membuat rekaman DNS CNAME untuk mengarahkan domain internet perusahaan ke nama DNS Traffic Manager.

Catatan

Mungkin penggunaan Traffic Manager tidak langsung terlihat jelas dalam tutorial ini. Tujuan dari rangkaian tutorial ini adalah untuk menampilkan pola yang dapat menangani skala lingkungan produksi yang kompleks. Dalam kasus seperti itu, misalnya, Anda akan memiliki beberapa aplikasi web yang didistribusikan di seluruh dunia, yang letaknya bersamaan dengan database dan Anda akan membutuhkan Traffic Manager untuk merutekan antara instans ini. Serangkaian tutorial lain yang menggambarkan penggunaan Traffic Manager adalah tutorial pemulihan geografis dan replikasi geografis. Dalam tutorial ini, Traffic Manager digunakan untuk membantu beralih ke instans pemulihan aplikasi SaaS jika terjadi pemadaman regional.

Mulai menghasilkan beban pada database penyewa

Karena aplikasi ini sudah diterapkan, mari kita pergunakan aplikasi.

Skrip PowerShell Demo-LoadGenerator memulai beban kerja yang berjalan melawan semua database penyewa. Beban dunia nyata pada banyak aplikasi SaaS biasanya sporadis dan tidak dapat diprediksi. Untuk menyimulasikan jenis beban ini, generator menghasilkan beban dengan lonjakan acak atau ledakan aktivitas pada setiap penyewa. Ledakan terjadi pada interval acak. Dibutuhkan beberapa menit agar pola beban muncul. Biarkan generator berjalan setidaknya selama tiga atau empat menit sebelum Anda memantau beban.

  1. Di ISE PowerShell, buka skrip ...\Learning Modules\Utilities\Demo-LoadGenerator.ps1.
  2. Tekan F5 untuk menjalankan skrip dan memulai generator beban. Saat ini, biarkan nilai parameter menggunakan pengaturan default.
  3. Masuk ke akun Azure Anda, lalu pilih langganan yang ingin Anda gunakan, jika perlu.

Skrip generator beban memulai pekerjaan latar belakang untuk setiap database di katalog, lalu berhenti. Jika Anda menjalankan ulang skrip generator beban, skrip menghentikan pekerjaan latar belakang yang berjalan sebelum memulai yang baru.

Memantau pekerjaan latar belakang

Jika Anda ingin mengontrol dan memantau pekerjaan latar belakang, gunakan cmdlet berikut:

  • Get-Job
  • Receive-Job
  • Stop-Job

Tindakan Demo-LoadGenerator.ps1

Demo-LoadGenerator.ps1 meniru beban kerja aktif transaksi pelanggan. Langkah-langkah berikut menjelaskan urutan tindakan yang dimulai Demo-LoadGenerator.ps1:

  1. Demo-LoadGenerator.ps1 memulai LoadGenerator.ps1 di latar depan.

    • Kedua file .ps1 disimpan di folder Learning Modules\Utilities\.
  2. LoadGenerator.ps1 melakukan perulangan melalui semua database penyewa di katalog.

  3. LoadGenerator.ps1 memulai pekerjaan PowerShell latar belakang untuk setiap database penyewa:

    • Secara default, pekerjaan latar belakang berjalan selama 120 menit.
    • Setiap pekerjaan menyebabkan beban berbasis CPU pada satu database penyewa dengan menjalankan sp_CpuLoadGenerator. Intensitas dan durasi beban bervariasi tergantung pada $DemoScenario.
    • sp_CpuLoadGenerator melakukan perulangan di sekitar pernyataan SQL SELECT yang menyebabkan beban CPU tinggi. Interval waktu antara masalah SELECT bervariasi menurut nilai parameter untuk membuat beban CPU yang dapat dikontrol. Interval dan tingkat beban diacak untuk menyimulasikan beban yang lebih realistis.
    • File .sql ini disimpan di WingtipTenantDB\dbo\StoredProcedures\.
  4. Jika $OneTime = $false, generator beban memulai pekerjaan latar belakang lalu terus berjalan. Setiap 10 detik, generator memantau penyewa baru yang diprovisikan. Jika Anda mengatur $OneTime = $true, LoadGenerator memulai pekerjaan latar belakang lalu berhenti berjalan di latar depan. Untuk tutorial ini, tinggalkan $OneTime = $false.

    Gunakan Ctrl-C atau Hentikan Operasi dengan Ctrl-Break jika Anda ingin menghentikan atau menghidupkan ulang generator beban.

    Jika Anda membiarkan generator beban berjalan di latar depan, gunakan instans PowerShell ISE lain untuk menjalankan skrip PowerShell lain.

 

Sebelum Anda melanjutkan ke bagian berikutnya, biarkan generator beban berjalan dalam keadaan pemanggilan pekerjaan.

Memprovisikan penyewa baru

Penerapan awal membuat tiga penyewa sampel. Sekarang Anda membuat penyewa lain untuk melihat dampak pada aplikasi yang diterapkan. Di aplikasi Wingtip, alur kerja untuk memprovisikan penyewa baru dijelaskan dalam tutorial Provisi dan katalog. Pada fase ini, Anda membuat penyewa baru, yang memakan waktu kurang dari satu menit.

  1. Buka PowerShell ISE baru.

  2. Buka ...\Learning Modules\Provision and Catalog\Demo-ProvisionAndCatalog.ps1.

  3. Tekan F5 untuk menjalankan skrip. Untuk saat ini, biarkan nilai tetapi default.

    Catatan

    Banyak skrip Wingtip SaaS menggunakan $PSScriptRoot untuk menelusuri folder untuk memanggil fungsi di skrip lain. Variabel ini hanya dievaluasi ketika skrip lengkap dijalankan dengan menekan F5. Menyoroti dan menjalankan pilihan dengan F8 dapat mengakibatkan kesalahan. Tekan F5 untuk menjalankan skrip.

Database penyewa baru adalah:

  • Dibuat di kumpulan elastis SQL.
  • Diinisialisasi.
  • Terdaftar dalam katalog.

Setelah provisi berhasil, situs Acara penyewa baru muncul di browser Anda.

New tenant

Refresh Events Hub untuk membuat penyewa baru muncul dalam daftar.

Mempelajari database penyewa, kumpulan, dan server

Sekarang setelah Anda mulai menjalankan beban terhadap sekelompok penyewa, mari kita lihat beberapa sumber daya yang diterapkan.

  1. Di portal Microsoft Azure, telusuri ke daftar server SQL Anda. Lalu buka server catalog-dpt-<USER>.

    • Server katalog berisi dua database, tenantcatalog dan basetenantdb (database templat yang disalin untuk membuat penyewa baru).

    Screenshot that shows a catalog server Overview page with the two databases.

  2. Kembali ke daftar server SQL Anda.

  3. Buka server tenants1-dpt-<USER> yang menyimpan database penyewa.

  4. Lihat item berikut ini:

    • Setiap database penyewa adalah database Elastic Standard dalam kumpulan standar 50-eDTU.
    • Database Balap Maple Merah adalah database penyewa yang Anda provisikan sebelumnya.

    Screenshot that shows the four databases in the server with red maple racing database highlighted.

Memantau kumpulan

Setelah LoadGenerator.ps1 berjalan selama beberapa menit, data yang cukup harus tersedia untuk mulai melihat sebagian kemampuan pemantauan. Kemampuan ini dibuat ke dalam kumpulan dan database.

Telusuri ke server tenants1-dpt-<user>, lalu pilih Pool1 untuk melihat pemanfaatan sumber daya untuk kumpulan. Dalam bagan berikut, generator beban berjalan selama satu jam.

Monitor pool

  • Bagan pertama, berlabel Pemanfaatan sumber daya, menunjukkan pemanfaatan eDTU kumpulan.
  • Bagan kedua menunjukkan pemanfaatan eDTU dari lima database paling aktif dalam kumpulan.

Kedua grafik menggambarkan bahwa kumpulan elastis dan SQL Database sangat cocok untuk beban kerja aplikasi SaaS yang tidak dapat diprediksi. Bagan menunjukkan bahwa empat database masing-masing meledak hingga sebanyak 40 eDTU, tetapi semua database didukung dengan baik oleh kumpulan 50-eDTU. Kumpulan 50-eDTU dapat mendukung beban kerja yang lebih berat. Jika database diprovisikan sebagai database tunggal, masing-masing harus S2 (50 DTU) untuk mendukung ledakan. Biaya empat database S2 tunggal hampir tiga kali lipat harga kumpulan. Dalam situasi dunia nyata, pelanggan SQL Database menjalankan hingga 500 database di 200 kumpulan eDTU. Untuk informasi selengkapnya, lihat tutorial Pemantauan performa.

Sumber Daya Tambahan:

Langkah berikutnya

Dalam tutorial ini, Anda belajar:

  • Cara menerapkan aplikasi Wingtip Tickets SaaS.
  • Tentang server, kumpulan, dan database yang membentuk aplikasi.
  • Bagaimana penyewa dipetakan ke data aplikasi dengan katalog.
  • Cara memprovisikan penyewa baru.
  • Cara melihat pemanfaatan kumpulan untuk memantau aktivitas penyewa.
  • Cara menghapus sumber daya sampel untuk menghentikan tagihan terkait.

Selanjutnya, coba tutorial Provisi dan katalog.