Çok kiracılı SaaS uygulamaları ve Azure AI Arama için tasarım desenleri

Çok kiracılı bir uygulama, diğer kiracıların verilerini göremeyen veya paylaşamayan tüm kiracılara aynı hizmetleri ve özellikleri sağlayan uygulamadır. Bu makalede, Azure AI Search ile oluşturulan çok kiracılı uygulamalar için kiracı yalıtım stratejileri ele alınmaktadır.

Azure AI Search kavramları

Hizmet olarak arama çözümü olarak Azure AI Search, geliştiricilerin herhangi bir altyapıyı yönetmeden veya bilgi alma konusunda uzman olmadan uygulamalara zengin arama deneyimleri eklemesine olanak tanır. Veriler hizmete yüklenir ve ardından bulutta depolanır. Azure AI Arama API'sine yönelik basit istekler kullanılarak veriler değiştirilebilir ve aranabilir.

Arama hizmeti, dizinler, alanlar ve belgeler

Tasarım desenlerini tartışmadan önce birkaç temel kavramı anlamak önemlidir.

Azure AI Search kullanılırken bir arama hizmetine abone olur. Veriler Azure AI Search'e yüklendikçe, arama hizmetindeki bir dizinde depolanır. Tek bir hizmet içinde birkaç dizin olabilir. Veritabanlarının bilindik kavramlarını kullanmak için, bir hizmet içindeki dizinler bir veritabanı içindeki tablolara benzetilebilirken, arama hizmeti bir veritabanına benzetilebilir.

Bir arama hizmeti içindeki her dizinin bir dizi özelleştirilebilir alan tarafından tanımlanan kendi şeması vardır. Veriler, tek tek belgeler biçiminde bir Azure AI Search dizinine eklenir. Her belge belirli bir dizine yüklenmelidir ve bu dizinin şemasına uymalıdır. Azure AI Search kullanarak veri ararken, tam metin arama sorguları belirli bir dizine göre verilir. Bu kavramları bir veritabanınınkilerle karşılaştırmak için, alanlar tablodaki sütunlara ve belgeler de satırlara benzetilebilir.

Ölçeklenebilirlik

Standart fiyatlandırma katmanındaki tüm Azure AI Arama hizmeti iki boyutta ölçeklendirilebilir: depolama ve kullanılabilirlik.

  • Bir arama hizmetinin depolama alanını artırmak için bölümler eklenebilir.
  • Çoğaltmalar , bir arama hizmetinin işleyebileceği isteklerin aktarım hızını artırmak için bir hizmete eklenebilir.

'de bölümlerin ve çoğaltmaların eklenmesi ve kaldırılması, arama hizmetinin kapasitesinin uygulamanın talep edeceği veri ve trafik miktarıyla artmasına olanak tanır. Bir arama hizmetinin okuma SLA'sı elde etmesi için iki çoğaltma gerekir. Bir hizmetin okuma-yazma SLA'sı elde etmesi için üç çoğaltma gerekir.

Azure AI Search'te birkaç farklı fiyatlandırma katmanı vardır ve her katmanın farklı sınırları ve kotaları vardır. Bu sınırlardan bazıları hizmet düzeyinde, bazıları dizin düzeyinde, bazıları ise bölüm düzeyindedir.

S3 Yüksek Yoğunluklu

Azure AI Search'ün S3 fiyatlandırma katmanında, çok kiracılı senaryolar için özel olarak tasarlanmış Yüksek Yoğunluklu (HD) modu seçeneği vardır. Çoğu durumda, basitlik ve maliyet verimliliği avantajlarından yararlanmak için tek bir hizmet altında çok sayıda daha küçük kiracıyı desteklemek gerekir.

S3 HD, tek bir hizmette daha fazla dizin barındırma olanağı için bölümleri kullanarak dizinlerin ölçeğini genişletme özelliğini kullanarak tek bir arama hizmetinin yönetimi altında birçok küçük dizinin paketlenmesine olanak tanır.

S3 hizmeti, sabit sayıda dizini (en fazla 200) barındıracak ve hizmete yeni bölümler eklendikçe her dizinin yatay olarak ölçeklendirilmesini sağlayacak şekilde tasarlanmıştır. S3 HD hizmetlerine bölüm eklemek, hizmetin barındırabileceği dizin sayısı üst sınırını artırır. Tek bir S3HD dizini için ideal maksimum boyut yaklaşık 50 - 80 GB'tır, ancak sistem tarafından uygulanan her dizinde sabit boyut sınırı yoktur.

Çok kiracılı uygulamalar için dikkat edilmesi gerekenler

Çok kiracılı uygulamalar, kaynakları kiracılar arasında etkili bir şekilde dağıtırken çeşitli kiracılar arasında bir miktar gizlilik düzeyi korumalıdır. Böyle bir uygulama için mimari tasarlarken dikkat edilmesi gereken birkaç nokta vardır:

  • Kiracı yalıtımı: Uygulama geliştiricilerin, hiçbir kiracının diğer kiracıların verilerine yetkisiz veya istenmeyen erişimi olmadığından emin olmak için uygun önlemleri alması gerekir. Veri gizliliği perspektifinin ötesinde kiracı yalıtım stratejileri, paylaşılan kaynakların etkili bir şekilde yönetilmesini ve gürültülü komşulardan korunmasını gerektirir.

  • Bulut kaynağı maliyeti: Diğer tüm uygulamalarda olduğu gibi yazılım çözümleri de çok kiracılı bir uygulamanın bileşeni olarak maliyet açısından rekabetçi olmaya devam etmelidir.

  • İşlem Kolaylığı: Çok kiracılı bir mimari geliştirirken uygulamanın işlemleri ve karmaşıklığı üzerindeki etkisi önemli bir noktadır. Azure AI Search'ün %99,9 SLA'sı vardır.

  • Genel ayak izi: Çok kiracılı uygulamaların genellikle dünya çapında dağıtılan kiracılara hizmet etmesi gerekir.

  • Ölçeklenebilirlik: Uygulama geliştiricilerinin, yeterli düzeyde düşük bir uygulama karmaşıklığını koruma ile uygulamayı kiracı sayısıyla ölçeklendirilecek şekilde tasarlama ile kiracı verilerinin ve iş yükünün boyutu arasındaki uzlaştırmayı dikkate almaları gerekir.

Azure AI Search, kiracıların verilerini ve iş yükünü yalıtmak için kullanılabilecek birkaç sınır sunar.

Çok kiracılı bir senaryo söz konusu olduğunda, uygulama geliştiricisi bir veya daha fazla arama hizmeti kullanır ve kiracılarını hizmetler, dizinler veya her ikisi arasında böler. Azure AI Search, çok kiracılı bir senaryo modelleme sırasında birkaç yaygın desene sahiptir:

  • Kiracı başına bir dizin: Diğer kiracılarla paylaşılan bir arama hizmeti içinde her kiracının kendi dizini vardır.

  • Kiracı başına bir hizmet: Her kiracının kendi ayrılmış Azure AI Arama hizmeti vardır ve en yüksek düzeyde veri ve iş yükü ayrımı sunar.

  • Her ikisinin karışımı: Daha büyük, daha etkin kiracılara ayrılmış hizmetler atanırken, daha küçük kiracılara paylaşılan hizmetler içindeki tek tek dizinler atanır.

Model 1: Kiracı başına bir dizin

Kiracı başına dizin modelinin bir tasviri

Kiracı başına dizin modelinde, birden çok kiracı, her kiracının kendi dizinine sahip olduğu tek bir Azure AI Arama hizmeti kaplar.

Tüm arama istekleri ve belge işlemleri Azure AI Search'te dizin düzeyinde verildiği için kiracılar veri yalıtımına ulaşır. Uygulama katmanında, çeşitli kiracıların trafiğini uygun dizinlere yönlendirmek ve aynı zamanda tüm kiracılar genelinde hizmet düzeyinde kaynakları yönetmek için farkındalık gerekir.

Kiracı başına dizin modelinin temel özniteliklerinden biri, uygulama geliştiricisinin uygulamanın kiracıları arasında bir arama hizmetinin kapasitesinin fazla aboneliğini kaldırabilmesidir. Kiracıların eşit olmayan bir iş yükü dağıtımı varsa, kiracıların en uygun bileşimi arama hizmetinin dizinleri arasında dağıtılabilir ve aynı anda daha az etkin kiracıların uzun bir kuyruğuna hizmet ederken çok sayıda yüksek etkin, kaynak yoğunluklu kiracıyı barındırabilir. Denge, modelin her kiracının eşzamanlı olarak yüksek oranda etkin olduğu durumları işleyememesidir.

Kiracı başına dizin modeli, azure yapay zeka Arama hizmeti tamamının önceden satın alındığı ve ardından kiracılarla doldurulduğu değişken maliyet modelinin temelini sağlar. Bu, kullanılmayan kapasitenin denemeler ve ücretsiz hesaplar için belirlenmesini sağlar.

Genel ayak izi olan uygulamalar için kiracı başına dizin modeli en verimli model olmayabilir. Bir uygulamanın kiracıları dünya genelinde dağıtılırsa, her bölge için ayrı bir hizmet gerekebilir ve her biri için maliyetler çoğaltılabilir.

Azure AI Search, hem tek tek dizinlerin hem de toplam dizin sayısının artmasına olanak tanır. Uygun bir fiyatlandırma katmanı seçilirse, hizmet içindeki tek bir dizin depolama veya trafik açısından çok büyük olduğunda bölümler ve çoğaltmalar arama hizmetinin tamamına eklenebilir.

Toplam dizin sayısı tek bir hizmet için çok fazla artarsa, yeni kiracıları barındırmak için başka bir hizmet sağlanması gerekir. Yeni hizmetler eklendikçe dizinlerin arama hizmetleri arasında taşınması gerekiyorsa, Azure AI Search bir dizinin taşınmasına izin vermediğinden dizindeki verilerin bir dizinden diğerine el ile kopyalanması gerekir.

Model 2: Kiracı başına bir hizmet

Kiracı başına hizmet modelinin bir tasviri

Kiracı başına hizmet mimarisinde her kiracının kendi arama hizmeti vardır.

Bu modelde uygulama, kiracıları için en yüksek yalıtım düzeyine ulaşır. Her hizmetin arama isteklerini işlemek için ayrılmış depolama alanı ve aktarım hızı vardır. Her kiracı, API anahtarlarının ayrı ayrı sahipliğini alır.

Her kiracının büyük bir ayak izine sahip olduğu veya iş yükünün kiracıdan kiracıya çok az değişkenliğe sahip olduğu uygulamalarda, kaynaklar çeşitli kiracıların iş yükleri arasında paylaşılmadığı için kiracı başına hizmet modeli etkili bir seçimdir.

Kiracı modeli başına bir hizmet de tahmin edilebilir, sabit maliyet modeli avantajı sunar. Dolduracak bir kiracı olana kadar arama hizmetinin tamamında ön yatırım yoktur, ancak kiracı başına maliyet, kiracı başına dizin modelinden daha yüksektir.

Kiracı başına hizmet modeli, genel ayak izi olan uygulamalar için verimli bir seçimdir. Coğrafi olarak dağıtılmış kiracılarda, her kiracının hizmetinin uygun bölgede olması kolaydır.

Bu düzeni ölçeklendirmedeki zorluklar, tek tek kiracılar hizmetlerinden daha fazla büyüdüklerinde ortaya çıkar. Azure AI Search şu anda bir arama hizmetinin fiyatlandırma katmanını yükseltmeyi desteklemediğinden tüm verilerin yeni bir hizmete el ile kopyalanması gerekir.

Model 3: Karma

Çok kiracılılığı modellemeye yönelik bir diğer desen de hem kiracı başına dizin hem de kiracı başına hizmet stratejilerini karıştırmaktır.

İki deseni karıştırarak uygulamanın en büyük kiracıları ayrılmış hizmetleri kaplayabilirken, daha az etkin, daha küçük kiracıların uzun kuyruğu paylaşılan bir hizmetteki dizinleri kaplayabilir. Bu model, en büyük kiracıların hizmetten sürekli olarak yüksek performansa sahip olmasını sağlarken, daha küçük kiracıların gürültülü komşulardan korunmasına yardımcı olur.

Ancak, bu stratejinin uygulanması hangi kiracıların paylaşılan hizmetteki bir dizine göre ayrılmış hizmet gerektireceğini tahmin etme konusunda öngörüye dayanır. Bu çok kiracılı modellerin her ikisini de yönetme gereksinimi nedeniyle uygulama karmaşıklığı artar.

Daha da ince ayrıntı düzeyi elde etme

Azure AI Search'te çok kiracılı senaryoları modellemek için yukarıdaki tasarım desenleri, her kiracının bir uygulamanın tüm örneği olduğu tekdüzen bir kapsam olduğunu varsayar. Ancak, uygulamalar bazen çok daha küçük kapsamları işleyebilir.

Kiracı başına hizmet ve kiracı başına dizin modelleri yeterince küçük kapsamlar değilse, daha da ince ayrıntı düzeyine ulaşmak için bir dizini modellemek mümkündür.

Tek bir dizinin farklı istemci uç noktaları için farklı davranması için, bir dizine bir alan eklenebilir ve bu alan her olası istemci için belirli bir değer belirtir. bir istemci bir dizini sorgulamak veya değiştirmek için Azure AI Search'i her çağırışında, istemci uygulamasındaki kod, Sorgu zamanında Azure AI Search'ün filtre özelliğini kullanarak bu alan için uygun değeri belirtir.

Bu yöntem ayrı kullanıcı hesaplarının, ayrı izin düzeylerinin ve hatta tamamen ayrı uygulamaların işlevselliğini elde etmek için kullanılabilir.

Not

Birden çok kiracıya hizmet vermek üzere tek bir dizin yapılandırmak için yukarıda açıklanan yaklaşımın kullanılması, arama sonuçlarının ilgi düzeyini etkiler. Aramayla ilgili puanlar, kiracı düzeyindeki bir kapsamda değil dizin düzeyinde hesaplandığından, tüm kiracıların verileri ilgili puanlarının terim sıklığı gibi temel istatistiklerine eklenir.

Sonraki adımlar

Azure AI Search, birçok uygulama için cazip bir seçimdir. Çok kiracılı uygulamalar için çeşitli tasarım desenlerini değerlendirirken, Azure AI Search'ün her boyuttaki uygulama iş yüklerine ve mimarilere en uygun şekilde uyarlanması için çeşitli fiyatlandırma katmanlarını ve ilgili hizmet sınırlarını göz önünde bulundurun.