Wzorce projektowe dla wielodostępnych aplikacji SaaS i usługi Azure AI Search

Aplikacja wielodostępna to aplikacja, która udostępnia te same usługi i możliwości dowolnej liczbie dzierżaw, którzy nie widzą ani nie udostępniają danych żadnej innej dzierżawy. W tym artykule omówiono strategie izolacji dzierżawy dla aplikacji wielodostępnych utworzonych za pomocą usługi Azure AI Search.

Pojęcia dotyczące usługi Azure AI Search

Jako rozwiązanie typu wyszukiwanie jako usługa usługa Azure AI Search umożliwia deweloperom dodawanie rozbudowanych środowisk wyszukiwania do aplikacji bez zarządzania infrastrukturą lub staje się ekspertem w zakresie pobierania informacji. Dane są przekazywane do usługi, a następnie przechowywane w chmurze. Korzystając z prostych żądań do interfejsu API usługi Azure AI Search, dane można następnie modyfikować i wyszukiwać.

usługa wyszukiwania, indeksy, pola i dokumenty

Przed omówieniem wzorców projektowych ważne jest, aby zrozumieć kilka podstawowych pojęć.

W przypadku korzystania z usługi Azure AI Search jeden subskrybuje usługę wyszukiwania. Gdy dane są przekazywane do usługi Azure AI Search, są przechowywane w indeksie w usłudze wyszukiwania. W ramach jednej usługi może istnieć wiele indeksów. Aby użyć znanych pojęć dotyczących baz danych, można porównać usługę wyszukiwania do bazy danych, podczas gdy indeksy w usłudze można porównać do tabel w bazie danych.

Każdy indeks w usłudze wyszukiwania ma własny schemat, który jest definiowany przez wiele pól możliwych do dostosowania. Dane są dodawane do indeksu usługi Azure AI Search w postaci poszczególnych dokumentów. Każdy dokument musi zostać przekazany do określonego indeksu i musi pasować do tego schematu indeksu. Podczas wyszukiwania danych przy użyciu usługi Azure AI Search zapytania wyszukiwania pełnotekstowego są wystawiane względem określonego indeksu. Aby porównać te pojęcia z bazą danych, pola można porównać z kolumnami w tabeli, a dokumenty można porównać do wierszy.

Skalowalność

Każda usługa wyszukiwania sztucznej inteligencji platformy Azure w warstwie cenowej Standardowa może być skalowana w dwóch wymiarach: magazyn i dostępność.

  • Partycje można dodać w celu zwiększenia magazynu usługi wyszukiwania.
  • Repliki można dodać do usługi, aby zwiększyć przepływność żądań obsługiwanych przez usługę wyszukiwania.

Dodawanie i usuwanie partycji i replik w obiekcie umożliwi zwiększenie pojemności usługi wyszukiwania przy użyciu ilości danych i ruchu wymaganego przez aplikację. Aby usługa wyszukiwania osiągnęła umowę SLA odczytu, wymaga dwóch replik. Aby usługa osiągnęła umowę SLA dotyczącą odczytu i zapisu, wymaga trzech replik.

Istnieje kilka różnych warstw cenowych w usłudze Azure AI Search. Każda z warstw ma różne limity i limity przydziału. Niektóre z tych limitów są na poziomie usługi, niektóre są na poziomie indeksu, a niektóre są na poziomie partycji.

Wysoka gęstość S3

W warstwie cenowej S3 usługi Azure AI Search dostępna jest opcja trybu wysokiej gęstości (HD) przeznaczonego specjalnie dla scenariuszy wielodostępnych. W wielu przypadkach konieczne jest obsługę dużej liczby mniejszych dzierżaw w ramach jednej usługi, aby uzyskać korzyści z prostoty i wydajności kosztów.

Usługa S3 HD umożliwia tworzenie wielu małych indeksów w ramach zarządzania pojedynczą usługą wyszukiwania dzięki możliwości skalowania indeksów w poziomie przy użyciu partycji w celu hostowania większej liczby indeksów w jednej usłudze.

Usługa S3 jest przeznaczona do hostowania stałej liczby indeksów (maksymalnie 200) i umożliwia skalowanie poszczególnych indeksów w poziomie w miarę dodawania nowych partycji do usługi. Dodawanie partycji do usług S3 HD zwiększa maksymalną liczbę indeksów, które może hostować usługa. Idealny maksymalny rozmiar pojedynczego indeksu S3HD wynosi około 50– 80 GB, chociaż nie ma limitu rozmiaru twardego dla każdego indeksu nałożonego przez system.

Zagadnienia dotyczące aplikacji wielodostępnych

Aplikacje wielodostępne muszą skutecznie dystrybuować zasoby między dzierżawami, zachowując jednocześnie pewien poziom prywatności między różnymi dzierżawami. Podczas projektowania architektury dla takiej aplikacji należy wziąć pod uwagę kilka zagadnień:

  • Izolacja dzierżawy: deweloperzy aplikacji muszą podjąć odpowiednie środki, aby upewnić się, że żadna dzierżawa nie ma nieautoryzowanego lub niechcianego dostępu do danych innych dzierżaw. Poza perspektywą prywatności danych strategie izolacji dzierżawy wymagają efektywnego zarządzania zasobami udostępnionymi i ochrony przed hałaśliwymi sąsiadami.

  • Koszt zasobów w chmurze: podobnie jak w przypadku innych aplikacji, rozwiązania programowe muszą pozostać konkurencyjne jako składnik aplikacji wielodostępnej.

  • Łatwość operacji: Podczas tworzenia architektury wielodostępnej wpływ na operacje i złożoność aplikacji jest ważnym czynnikiem. Usługa Azure AI Search ma umowę SLA na 99,9%.

  • Globalny ślad: aplikacje wielodostępne często muszą obsługiwać dzierżawy, które są dystrybuowane na całym świecie.

  • Skalowalność: deweloperzy aplikacji muszą wziąć pod uwagę sposób uzgadniania między utrzymaniem wystarczająco niskiego poziomu złożoności aplikacji a projektowaniem aplikacji w celu skalowania z liczbą dzierżaw oraz rozmiarem danych i obciążenia dzierżawców.

Usługa Azure AI Search oferuje kilka granic, których można użyć do izolowania danych i obciążeń dzierżaw.

W przypadku scenariusza wielodostępnego deweloper aplikacji korzysta z co najmniej jednej usługi wyszukiwania i dzieli dzierżawy między usługi, indeksy lub oba te usługi. Usługa Azure AI Search ma kilka typowych wzorców podczas modelowania scenariusza wielodostępnego:

  • Jeden indeks na dzierżawę: każda dzierżawa ma własny indeks w usłudze wyszukiwania udostępnionej innym dzierżawcom.

  • Jedna usługa na dzierżawę: każda dzierżawa ma własną dedykowaną usługa wyszukiwania sztucznej inteligencji platformy Azure, oferując najwyższy poziom rozdzielania danych i obciążeń.

  • Kombinacja obu tych opcji: większe, bardziej aktywne dzierżawy są przypisywane dedykowane usługi, podczas gdy mniejsze dzierżawy mają przypisane poszczególne indeksy w ramach usług udostępnionych.

Model 1: jeden indeks na dzierżawę

Przedstawianie modelu indeksu na dzierżawę

W modelu indeksu na dzierżawę wiele dzierżaw zajmuje jedną usługa wyszukiwania sztucznej inteligencji platformy Azure, w której każda dzierżawa ma własny indeks.

Dzierżawy uzyskują izolację danych, ponieważ wszystkie żądania wyszukiwania i operacje dokumentów są wystawiane na poziomie indeksu w usłudze Azure AI Search. W warstwie aplikacji istnieje potrzeba kierowania ruchu różnych dzierżaw do odpowiednich indeksów, a jednocześnie zarządzania zasobami na poziomie usługi we wszystkich dzierżawach.

Kluczowym atrybutem modelu indeksu na dzierżawę jest możliwość nadsubskrybowania pojemności usługi wyszukiwania między dzierżawami aplikacji. Jeśli dzierżawy mają nierównomierny rozkład obciążenia, optymalna kombinacja dzierżaw może być dystrybuowana między indeksy usługi wyszukiwania w celu uwzględnienia wielu wysoce aktywnych dzierżaw intensywnie korzystających z zasobów, jednocześnie obsługując długi koniec mniej aktywnych dzierżaw. Kompromis polega na niezdolności modelu do obsługi sytuacji, w których każda dzierżawa jest współbieżnie bardzo aktywna.

Model indeksu na dzierżawę stanowi podstawę dla modelu kosztów zmiennych, w którym cała usługa wyszukiwania sztucznej inteligencji platformy Azure jest kupowana z góry, a następnie wypełniana dzierżawami. Dzięki temu można wyznaczyć nieużywaną pojemność dla wersji próbnej i bezpłatnych kont.

W przypadku aplikacji o globalnym śladzie model indeksu na dzierżawę może nie być najbardziej wydajny. Jeśli dzierżawy aplikacji są dystrybuowane na całym świecie, oddzielna usługa może być niezbędna dla każdego regionu, duplikując koszty w każdym z nich.

Usługa Azure AI Search umożliwia skalowanie zarówno poszczególnych indeksów, jak i łączną liczbę indeksów do wzrostu. W przypadku wybrania odpowiedniej warstwy cenowej partycje i repliki można dodać do całej usługi wyszukiwania, gdy pojedynczy indeks w usłudze zwiększa się zbyt duży pod względem magazynu lub ruchu.

Jeśli łączna liczba indeksów będzie zbyt duża dla pojedynczej usługi, należy aprowizować inną usługę, aby pomieścić nowe dzierżawy. Jeśli indeksy muszą zostać przeniesione między usługami wyszukiwania w miarę dodawania nowych usług, dane z indeksu muszą zostać ręcznie skopiowane z jednego indeksu do drugiego, ponieważ usługa Azure AI Search nie zezwala na przenoszenie indeksu.

Model 2: jedna usługa na dzierżawę

Przedstawianie modelu usługi na dzierżawę

W architekturze usługi na dzierżawę każda dzierżawa ma własną usługę wyszukiwania.

W tym modelu aplikacja osiąga maksymalny poziom izolacji dla swoich dzierżaw. Każda usługa ma dedykowany magazyn i przepływność do obsługi żądań wyszukiwania. Każda dzierżawa ma indywidualną własność kluczy interfejsu API.

W przypadku aplikacji, w których każda dzierżawa ma duży ślad lub obciążenie ma niewielką zmienność z dzierżawy do dzierżawy, model usługi na dzierżawę jest skutecznym wyborem, ponieważ zasoby nie są współużytkowane w różnych obciążeniach dzierżaw.

Usługa na model dzierżawy oferuje również korzyści z przewidywalnego, stałego modelu kosztów. Nie ma inwestycji z góry w całą usługę wyszukiwania, dopóki dzierżawa nie zostanie wypełniona, jednak koszt dzierżawy jest wyższy niż model indeksu na dzierżawę.

Model usługi na dzierżawę to wydajny wybór aplikacji o globalnym zasięgu. Dzięki geograficznie rozproszonym dzierżawom łatwo jest mieć usługę każdej dzierżawy w odpowiednim regionie.

Wyzwania związane ze skalowaniem tego wzorca pojawiają się, gdy poszczególne dzierżawy przerastają swoją usługę. Usługa Azure AI Search nie obsługuje obecnie uaktualniania warstwy cenowej usługi wyszukiwania, więc wszystkie dane musiałyby zostać ręcznie skopiowane do nowej usługi.

Model 3: hybrydowy

Innym wzorcem modelowania wielodostępności jest mieszanie strategii indeksu na dzierżawę i usług na dzierżawę.

Łącząc te dwa wzorce, największa dzierżawa aplikacji może zajmować dedykowane usługi, podczas gdy długi ogon mniej aktywny, mniejsze dzierżawy mogą zajmować indeksy w usłudze udostępnionej. Ten model zapewnia, że największa dzierżawa ma spójną wysoką wydajność przed usługą, pomagając jednocześnie chronić mniejsze dzierżawy przed żadnymi hałaśliwymi sąsiadami.

Jednak wdrożenie tej strategii opiera się na foresightie w przewidywaniu, które dzierżawy będą wymagać dedykowanej usługi w porównaniu z indeksem w usłudze udostępnionej. Złożoność aplikacji zwiększa się wraz z koniecznością zarządzania obydwoma modelami wielodostępności.

Osiągnięcie jeszcze bardziej szczegółowego stopnia szczegółowości

Powyższe wzorce projektowe do modelowania scenariuszy wielodostępnych w usłudze Azure AI Search zakładają jednolity zakres, w którym każda dzierżawa jest całym wystąpieniem aplikacji. Jednak aplikacje mogą czasami obsługiwać wiele mniejszych zakresów.

Jeśli modele usługi na dzierżawę i indeks na dzierżawę nie są wystarczająco małymi zakresami, można modelować indeks w celu uzyskania jeszcze bardziej szczegółowego stopnia szczegółowości.

Aby pojedynczy indeks zachowywał się inaczej dla różnych punktów końcowych klienta, do indeksu można dodać pole, które wyznacza określoną wartość dla każdego możliwego klienta. Za każdym razem, gdy klient wywołuje usługę Azure AI Search w celu wykonywania zapytań lub modyfikowania indeksu, kod z aplikacji klienckiej określa odpowiednią wartość dla tego pola przy użyciu funkcji filtrowania usługi Azure AI Search w czasie wykonywania zapytań.

Tej metody można użyć do osiągnięcia funkcji oddzielnych kont użytkowników, oddzielnych poziomów uprawnień, a nawet całkowicie oddzielnych aplikacji.

Uwaga

Korzystając z opisanego powyżej podejścia do konfigurowania pojedynczego indeksu w celu obsługi wielu dzierżaw, ma wpływ na istotność wyników wyszukiwania. Wyniki istotności wyszukiwania są obliczane w zakresie na poziomie indeksu, a nie w zakresie na poziomie dzierżawy, więc dane wszystkich dzierżaw są uwzględniane w podstawowych statystykach oceny istotności, takich jak częstotliwość terminów.

Następne kroki

Usługa Azure AI Search to atrakcyjny wybór dla wielu aplikacji. Podczas oceniania różnych wzorców projektowych dla aplikacji wielodostępnych należy wziąć pod uwagę różne warstwy cenowe i odpowiednie limity usług, aby najlepiej dostosować usługę Azure AI Search do obciążeń aplikacji i architektur wszystkich rozmiarów.