SaaS Multi-penyewaan di Azure

Microsoft Entra ID
Azure App Service
Azure DNS
Azure Front Door
Azure Kubernetes Service (AKS)

Ketika Anda mengidentifikasi sebagian dari solusi perangkat lunak bisnis yang dapat Anda unbrand dan memasarkan ke bisnis lain, itu menambahkan seluruh aliran pendapatan baru untuk perusahaan. Namun, mengonfigurasi solusi untuk memperhitungkan beban yang dibawa oleh banyak penyewa terkadang merupakan kendala yang menantang untuk diatasi. Solusi ini melakukan tur serangkaian teknologi Azure yang mengamankan dan menyeimbangkan lalu lintas.

Arsitektur

Diagram showing a multitenant SaaS architecture set up in Azure in two different regions.

Unduh file Visio arsitektur ini.

Alur kerja

Serangkaian teknologi Azure mengamankan dan menyeimbangkan beban lalu lintas.

  1. Microsoft Azure Front Door menangani beberapa tugas awal:

    • Memproses permintaan awal

    • Penyeimbangan beban di seluruh wilayah

    • Penghentian dan offloading SSL(HTTPS)

    • Gagal jika ada pemadaman regional

  2. Azure DNS mengelola catatan DNS dan memastikan perutean ke titik akhir Azure Front Door yang benar.

  3. Arsitektur menggunakan ID Microsoft Entra sebagai penyedia identitas untuk autentikasi.

  4. Setelah dirutekan ke wilayah yang sesuai, Application Gateway merutekan dan menyeimbangkan beban, mengarahkan permintaan ke Azure App Service yang sesuai.

  5. Untuk arsitektur ini, menggunakan App Service merupakan layanan pilihan untuk:

    • Aplikasi berbasis HTTP apa pun.

    • Melayani konten web.

    • Mengekspos API RESTful.

    • Menerapkan logika bisnis di balik aplikasi ujung depan.

    Anda dapat mengonfigurasi App Service untuk memperbesar dan memperluas secara otomatis. Hal itu membuat App Service cocok untuk menskalakan sejumlah permintaan berbasis HTTP penyewa sesuai permintaan.

  6. Layanan lapisan akses data juga diskalakan secara independen berdasarkan beban. Layanan data mengelola model data, klien koneksi, dan driver. Layanan juga menyediakan antarmuka data yang konsisten untuk semua layanan tingkat tinggi yang ingin menggunakan data dalam aplikasi. Anda dapat menyebarkan dan menskalakan layanan data ini menggunakan Azure Kubernetes Service (AKS). Setiap kluster AKS bertanggung jawab atas serangkaian fitur terkait di lapisan. AKS dapat menerapkan arsitektur layanan mikro, yang menampilkan serangkaian kontainer, yang mana setiap kontainer tersebut merangkum fungsionalitas tertentu dalam kluster. Ini memungkinkan untuk tingkat abstraksi dan de-coupling yang tinggi dalam kode. Hal ini juga memungkinkan kluster untuk memperluas secara individual guna memperhitungkan peningkatan beban dari beberapa penyewa. Setiap kluster dapat meningkatkan sumber dayanya apabila beban meningkat pada kluster. Peningkatan skala tidak memengaruhi kluster lain dalam grup sumber daya selama mereka tidak mengalami peningkatan yang sama.

  7. Menyimpan dan mengelola data relasional di luar kerangka aplikasi. Melakukan hal tersebut akan menyediakan satu titik entri data untuk kedua wilayah. Anda dapat mencapai replikasi, ketersediaan, skalabilitas, dan keamanan dengan memanfaatkan kekuatan Azure SQL Elastic Pools. Provisikan database di kumpulan untuk setiap penyewa. Alokasikan sumber daya yang tersedia di kumpulan ke database sesuai permintaan ketika beban dan permintaan masuk. Ini mengoptimalkan sumber daya database yang tersedia untuk penyewa terhadap anggaran Anda.

Komponen

Komponen utama adalah komponen yang disarankan untuk arsitektur dalam solusi ini. Jika salah satu komponen utama tidak sesuai dengan arsitektur Anda, lihat daftar komponen alternatif.

Komponen utama

  • Azure Front Door: Penyeimbang beban regional yang mengarahkan lalu lintas klien ke wilayah yang benar. Ini dapat gagal ke wilayah kedua jika kegagalan regional terjadi, dan dapat mengamankan titik masuk yang menghadap internet melalui Azure Web Application Firewall.

  • ID Microsoft Entra: Bertindak sebagai penyedia identitas untuk seluruh aplikasi, memberlakukan autentikasi dan otorisasi end-to-end permintaan dalam aplikasi.

  • Azure DNS: Layanan hosting pada Azure untuk resolusi nama domain. Dalam solusi multipenyewa, beberapa klien mengakses solusi melalui domain individual mereka sendiri. Gunakan Azure DNS untuk mengonfigurasi dan menyelesaikan permintaan klien ke tumpukan aplikasi yang benar.

  • Application Gateway: Merutekan dan menyeimbangkan lalu lintas secara internal dalam aplikasi ke berbagai layanan yang memenuhi kebutuhan bisnis klien. Sementara Azure Front Door menyeimbangkan beban di seluruh wilayah tingkat tinggi, Application Gateway merupakan fitur yang memiliki kesadaran akan beban pada layanan individual dalam grup. Azure Front Door dan Application Gateway digabungkan untuk menyediakan penyeimbangan beban yang kompleks di semua tingkatan dalam solusi multipenyewa. Untuk informasi selengkapnya tentang opsi penyeimbangan beban di Azure, kunjungi gambaran umum tentang penyeimbangan beban Azure ini.

  • App Service: Layanan utama Azure untuk aplikasi web dan API berbasis web. Keamanan terintegrasi dengan layanan seperti ID Microsoft Entra dan Azure Key Vault. Anda dapat mengonfigurasi penskalakan otomatis. Selain itu, jumlah sumber daya yang tersedia untuk diskalakan fleksibel antara berbagai paket App Service tempat aplikasi dapat berjalan. App Service juga dapat memanfaatkan kemampuan DevOps terintegrasi untuk integrasi dan penyebaran berkelanjutan ke berbagai lingkungan. Fitur ini dan fitur pendukung lainnya dari platform Azure memungkinkan pengembang untuk fokus pada pengembangan aplikasi mereka.

  • Azure Kubernetes Service (AKS): Mengatur instans gambar kontainer yang disebarkan ke sebuah kluster. Mengelola beberapa data klien terkadang melibatkan penerapan rangkaian komponen untuk mengelola:

    • Membuat model data

    • Konektivitas sumber data

    • Ekstraksi, transformasi, dan pemuatan (ETL)

    • Aktivitas impor/ekspor

    Mengembangkan banyak komponen yang lebih kecil ini sebagai layanan mikro berbasis kontainer menciptakan skenario ideal untuk penyebaran ke kluster AKS. Alat untuk penskalaan otomatis, penyeimbangan beban, dan peningkatan dibangun ke dalam kerangka kerja. AKS terintegrasi dengan baik dengan strategi integrasi berkelanjutan/pengiriman berkelanjutan (CI/CD) menggunakan fitur DevOps yang tersedia dan Azure Container Registry.

  • Kumpulan Elastis Azure SQL: Menyediakan solusi untuk mengelola kumpulan database secara fleksibel dengan kumpulan sumber daya. Layanan ini mengalokasikan sumber daya sesuai permintaan ke database. Layanan ini memberi pengembang arsitektur SaaS multipenyewa sebuah kekuatan untuk mengirimkan sumber daya database ke klien ketika mereka membutuhkannya. Layanan ini juga mengurangi anggaran dan biaya pemeliharaan beberapa SQL Server dengan sebagian besar sumber daya komputasi yang tidak digunakan.

  • Azure Cognitive Search (sebelumnya dikenal sebagai Azure Search): Layanan yang menambahkan mesin pengindeksan dan kueri yang andal ke aplikasi Anda. Layanan ini memberikan akses kepada klien atas fungsionalitas kueri yang kuat. Mereka juga dapat menggunakan kemampuan AI Azure untuk memperkaya dan meningkatkan fungsionalitas kueri. Azure Cognitive Search dapat memperhitungkan multipenyewaan yang menggunakan strategi indeks-per-penyewa atau layanan-per-penyewa.

  • Azure Cache for Redis: Menerapkan lapisan cache sebagai layanan untuk solusi, menyediakan cache terkelola dalam memori untuk mengurangi latensi dan meningkatkan performa klien. Throughput tinggi memungkinkan volume permintaan yang tinggi untuk menangani banyak penyewa yang mengakses sistem. Anda dapat secara fleksibel meningkatkan layanan seiring dengan meningkatnya beban aplikasi. Layanan ini juga mendukung enkripsi ketika tidak aktif untuk melindungi dan mengisolasi data penyewa yang di-cache.

Komponen alternatif

  • Azure Virtual Machine Scale Sets: Memungkinkan penyebaran layanan ke lingkungan komputer virtual (VM) yang menskalakan dan tumbuh secara otomatis sesuai kebutuhan. Virtual Machine Scale Sets terintegrasi dengan baik dengan Load Balancer atau Application Gateway untuk menyeimbangkan kembali beban secara otomatis saat set skala tumbuh. Virtual Machine Scale Sets menyediakan skalabilitas yang diminta oleh solusi ini. Namun, dalam banyak kasus, tidak perlu melakukan pengelolaan lingkungan VM penuh, dan kami dapat menunda tingkat tumpukan tersebut ke App Service atau AKS.

  • Azure SQL Database: Terapkan sebagai instans khusus individu yang menggantikan Kumpulan Elastis. Menggunakan Azure SQL Database, menambahkan overhead yang lebih tinggi dalam mengelola instans secara langsung dan menimbulkan lebih banyak biaya untuk sumber daya yang dialokasikan. Yang mengatakan, itu merupakan alternatif yang dapat diterima ketika penyewa membutuhkan server khusus. Secara khusus, klien mungkin memerlukan kontrol lebih besar atas instans dan sumber daya khusus yang tersedia. Penyewa yang memerlukan SQL Server khusus dapat ada berdampingan dengan penyewa pada konfigurasi Kumpulan Elastis. Anda dapat membuat tingkat database SQL sebagai salah satu opsi harga yang tersedia bagi penyewa ketika membeli lisensi untuk SaaS.

  • SQL Server di Virtual Machines: Opsi lain untuk penyebaran database SQL. Penyewa mungkin memiliki infrastruktur TI yang sudah ada sebelumnya dan SQL Server yang ada secara lokal. Dalam hal ini, penyewa mungkin ingin menggunakan lisensi mereka saat ini, baik sebagai migrasi penuh atau dalam skenario hibrid. Sifat SaaS yang dipisahkan memungkinkan lapisan data aplikasi untuk menargetkan SQL Database apa pun melalui konfigurasi.

Detail skenario

Ketika Anda mengidentifikasi sebagian dari solusi perangkat lunak bisnis yang dapat Anda unbrand dan memasarkan ke bisnis lain, itu menambahkan seluruh aliran pendapatan baru untuk perusahaan. Namun, mengonfigurasi solusi untuk memperhitungkan beban yang dibawa oleh banyak penyewa terkadang merupakan kendala yang menantang untuk diatasi.

Azure menawarkan berbagai layanan untuk mengelola solusi perangkat lunak yang:

  • Fleksibel dalam memelihara database untuk semua klien.

  • Menskalakan tingkat bisnis dan logika solusi untuk mencegah penyempitan di lapisan komputasi.

  • Mengintegrasikan ketersediaan dan failover regional.

  • Menyediakan keamanan ujung-ke-ujung di semua tingkat solusi.

Kemungkinan kasus penggunaan

Kasus penggunaan ini memiliki pola desain yang mendapatkan manfaat dari solusi SaaS multipenyewa yang dihosting di Azure:

  • Mengembangkan solusi manajemen hubungan pelanggan (CRM) yang dapat dipasarkan dan dijual oleh klien kepada pelanggan.

  • Menerapkan sistem CMS (sistem manajemen konten) dan mengirimkannya ke banyak pengguna menggunakan arsitektur ini.

Pertimbangan

Pertimbangan ini mengimplementasikan pilar Azure Well-Architected Framework, yang merupakan serangkaian tenet panduan yang dapat digunakan untuk meningkatkan kualitas beban kerja. Untuk informasi selengkapnya, lihat Microsoft Azure Well-Architected Framework.

Multitenant

Solusi multipenyewa menjadi pertimbangan utama dalam solusi ini. Solusi tersebut menangani sejumlah klien secara bersamaan. Solusi tersebut juga mengalokasikan sumber daya yang cukup untuk memproses semua permintaan klien secara efektif. Ketika memproses permintaan, solusi mengamankan lalu lintas dari titik akhir global dan mengisolasi data klien untuk mencegah pelanggaran dan kontaminasi silang. Menyebarkan klien ke sepasang grup sumber daya regional berdasarkan lokasi utama mereka. Melakukan hal ini akan mengoptimalkan ketersediaan regional.

Anda dapat menyebarkan banyak klien ke satu grup komputasi karena sistem mengisolasi permintaan berdasarkan autentikasi dan kunci klien, yang membedakan permintaan berdasarkan pengidentifikasi unik ini. Sistem dapat mengenkripsi semua permintaan klien secara terpisah dengan kunci mereka sehingga tidak ada klien yang dapat mendekripsi data klien lain. Mengelola beberapa klien pada satu tumpukan komputasi akan memberi Anda kemampuan untuk mengoptimalkan alokasi sumber daya untuk memberikan respons yang dibutuhkan klien sesuai anggaran.

Anda mengelola database klien dengan cara yang sama di luar tumpukan komputasi, karena permintaan klien dapat tiba dari salah satu tumpukan regional. Banyak database klien dapat berada di Kumpulan Elastis yang sama, diisolasi dan diamankan dengan enkripsi data transparan (TDE). Anda dapat mengonfigurasi setiap database untuk mengenkripsi data menggunakan kunci yang dikelola klien dan mendekripsi data tepat waktu (JIT). Mendekripsi secara JIT akan melindungi data klien dari pengembang dan klien lain. Sistem ini memanfaatkan Kumpulan Elastis untuk menyediakan sumber daya sesuai permintaan kepada klien yang ditetapkan untuknya sambil menjaga biaya tetap rendah untuk Anda. Anda dapat menetapkan kebijakan replikasi ke setiap Kumpulan Elastis untuk menyediakan pencadangan dan failover untuk data klien. Menghadirkan lebih banyak Kumpulan Elastis secara online ketika Anda memasukkan lebih banyak klien ke dalam sistem.

Untuk informasi selengkapnya tentang solusi multipenyewa, lihat Merancang solusi multipenyewa di Azure.

Keandalan

Keandalan memastikan aplikasi Anda dapat mencapai komitmen yang Anda buat kepada pelanggan Anda. Untuk informasi selengkapnya, lihat Gambaran umum pilar keandalan."

Skalabilitas dan Ketersediaan

Solusi ini dirancang untuk memperhitungkan sejumlah besar penyewa yang menggunakan SaaS. Solusi ini mengambil keuntungan dari sejumlah besar komponen dan layanan yang dapat diskalakan untuk tumbuh berdasarkan beban yang ada. Arsitektur ini tidak dirancang untuk solusi yang melayani beberapa penyewa, atau sejumlah kecil permintaan dan data. Fitur ini dapat menekankan anggaran solusi yang menargetkan satu klien atau beban yang lebih kecil. Juga tidak perlu memiliki overhead multiregion di mana ketersediaan global yang tinggi bukan persyaratan, karena menambahkan kompleksitas dan biaya yang tidak perlu.

Keamanan

Keamanan memberikan jaminan terhadap serangan yang disukai dan penyalahgunaan data dan sistem berharga Anda. Untuk informasi selengkapnya, lihat Gambaran Umum pilar keamanan.

Sistem menangani keamanan dari seluruh ujung-ke-ujung di setiap tingkat aplikasi:

  • Azure Front Door menyediakan dukungan HTTPS bawaan untuk domainnya. Ini berarti sistem dapat mengenkripsi semua lalu lintas ke aplikasi SaaS. Azure Front Door juga menerapkan Azure Web Application Firewall, melindungi tumpukan SaaS dari serangan di tepi, sebelum sistem mengarahkan permintaan ke aplikasi.

  • Setiap tumpukan aplikasi di setiap wilayah terletak dalam Azure Virtual Network. Sistem membatasi lalu lintas ke jaringan virtual yang menerima permintaan dari Azure Front Door, melindungi semua layanan aplikasi dari lalu lintas eksternal. Setelah berada di dalam firewall yang aman, Application Gateway dapat menghentikan SSL dan menyediakan penyeimbangan beban dan perutean yang memiliki performa baik di dalam aplikasi.

  • Anda dapat mengelola semua kredensial, rahasia, dan string koneksi dengan aman menggunakan Azure Key Vault. Dengan membuat data sensitif ini sebagai rahasia, pengembang dapat memasukkan kredensial ke dalam aplikasi pada ketika penyebaran. Melakukan hal tersebut akan memastikan bahwa kode tidak tercemar dengan informasi sensitif. Menggunakan rahasia untuk melindungi data klien dengan memastikan bahwa pelanggaran kode atau serangan man-in-the-middle tidak akan mendapatkan akses ke database penyewa.

  • Dalam skenario ini, data beberapa penyewa mungkin ada berdampingan di server database yang sama, jika bukan database yang sama. Menggunakan dekripsi TDE dan JIT melindungi data pada database. Sistem mengenkripsi semua data di database saat tidak aktif, dan hanya mendekripsi jika diminta oleh penyewa. Klien dapat memberikan kunci mereka sendiri, dan Anda dapat menyimpan semua kunci klien di Azure Key Vault untuk mengelola enkripsi untuk beberapa penyewa. Ini melindungi data klien dari ujung ke ujung, mencegah pengembang memiliki akses ke data klien, mengisolasi data antar penyewa, dan membantu memenuhi persyaratan kepatuhan untuk keamanan dan data.

Pengoptimalan biaya

Optimalisasi biaya adalah tentang mencari cara untuk mengurangi pengeluaran yang tidak perlu dan meningkatkan efisiensi operasional. Untuk informasi selengkapnya, lihat Gambaran umum pilar pengoptimalan biaya.

Azure App Service menyediakan banyak tingkat harga berdasarkan sumber daya komputasi yang diharapkan yang diperlukan. Untuk SaaS multipenyewa, kemampuan perluasan dan ketersediaan tinggi adalah komponen utama dalam memilih paket layanan. Jika Anda berharap untuk menghosting banyak penyewa, memilih tingkat premium atau terisolasi mungkin diperlukan untuk menyediakan sumber daya komputasi yang diperlukan untuk memperhitungkan lalu lintas tinggi. Tingkat standar, premium, dan terisolasi semuanya adalah instans VM khusus. Anda dapat menghitung biaya per unit waktu melalui jumlah VM dari tingkat yang disebutkan yang telah Anda tentukan. Untuk informasi selengkapnya, kunjungi gambaran umum paket harga App Service.

Azure Kubernetes Service menyediakan layanan kontainer yang hemat biaya. Biaya untuk node AKS hanya terjadi jika node digunakan, jadi Anda hanya dikenakan biaya untuk:

  • VM

  • Penyimpanan yang dikonsumsi dan sumber daya jaringan

  • Biaya penskalaan langsung terkait dengan penggunaan

Menggunakan AKS sebagai layanan tingkat data sangat ideal jika Anda ingin mengurangi biaya. Untuk perkiraan harga lapisan instans AKS, kunjungi kalkulator layanan Kubernetes.

Secara desain, harga Kumpulan Elastis Azure SQL sangat hemat biaya dalam skenario multipenyewa. Database penyewa di Kumpulan Elastis akan berbagi sumber daya yang tersedia. Ketika permintaan bergeser di antara penyewa dari waktu ke waktu, sumber daya juga akan bergeser. Kumpulan Elastis Azure SQL menyediakan sumber daya maksimum yang tersedia untuk database yang diminta tanpa memerlukan overhead sumber daya di semua database. Layanan ini menjaga biaya tetap rendah untuk pengembang SaaS dan penyewa. Gunakan kalkulator harga Azure SQL Database untuk menentukan harga dan menentukan tingkat dan jumlah sumber daya yang diperlukan untuk melayani penyewa Anda dan data mereka.

  • Menggunakan model harga core virtual (vCore) menyediakan fleksibilitas yang lebih besar dalam penskalaan untuk memenuhi sumber daya yang diperlukan. Anda juga dapat memanfaatkan Azure Hybrid Benefit. Lisensi SQL Server yang ada memberikan diskon untuk sumber daya SQL vCore di cloud. Oleh karena itu, dalam contoh ketika server lokal sudah menjadi bagian dari infrastruktur pengembang, Anda dapat mengelola biaya lebih banyak lagi dengan menggunakan diskon ini. Anda dapat memperkirakan potensi penghematan Anda dengan menggunakan kalkulator penghematan Azure Hybrid Benefit.

  • Anda juga dapat menghemat biaya pada sumber daya SQL Server dengan membeli kapasitas khusus Azure SQL Database. Pembelian kapasitas yang dipesan menandai komitmen penggunaan SQL Database jangka panjang. Jangka waktunya biasanya antara satu sampai tiga tahun. Sebagai imbalannya, Anda mendapatkan diskon untuk biaya komputasi sumber daya dalam reservasi. Misalnya, Anda dapat memesan 32 vCore tujuan umum selama setahun, yang mengurangi biaya 32 vCore tersebut untuk tahun tersebut. Memiliki beberapa penyewa yang membeli lisensi untuk SaaS adalah indikator kuat yang memanfaatkan kapasitas Cadangan sesuai dengan solusi, dan penghemat biaya yang ideal dalam beban kerja ini.

Anda dapat menemukan struktur harga untuk Azure Cache for Redis di halaman Harga Azure Cache for Redis. Sesuaikan tingkat cache kapan saja dari mulai tingkat Dasar, Standar, hingga Premium berdasarkan kebutuhan. Anda akan melihat harga yang lebih tinggi pada batas cache yang lebih besar dan fitur tambahan seperti replikasi dan pemulihan bencana. Azure Cache for Redis juga menawarkan harga kapasitas khusus untuk komitmen penggunaan jangka panjang.

Harga Azure Front Door tergantung pada jumlah transfer data masuk dan keluar dari layanan. Untuk data keluar, harga dibedakan berdasarkan zona. Daerah yang berbeda akan dikenakan biaya yang berbeda. Jika Anda menemukan perbedaan harga, perkirakan biayanya secara terpisah. Harga termasuk beberapa perutean dan kapasitas domain, tetapi sistem dikenakan biaya melewati batas awal. Azure Web Application Firewall dikenakan biaya tambahan kecil per kebijakan atau aturan yang diterapkan. Anda dapat menemukan detail harga untuk Azure Front Door di halaman Harga Azure Front Door.

Harga untuk Azure Cognitive Search adalah sistem berjenjang penuh. Tingkat gratis tersedia untuk pengembangan dan pengujian. Setelah itu, setiap tingkat dikenakan biaya per jam untuk setiap instans Cognitive Search yang dialokasikan. Ketika tingkatan meningkat, total penyimpanan, jumlah indeks, dan batas skala juga meningkat. Azure Cognitive Search menyediakan ekstraksi gambar sebagai layanan dengan kecepatan yang sama untuk semua tingkatan berbayar.

Langkah berikutnya