Wspieranie multitenancy

10

Jakie są typowe wyzwania, które pojawiają się podczas przekształcania aplikacji z jednym dzierżawcą w aplikację z wieloma lokatorami? Najważniejsze jest bezpieczeństwo i izolacja danych. Jakie są inne?

Jestem jednym z architektów dość znaczącego wysiłku w zakresie automatyzacji i historycznie to właśnie nasza firma z niego korzysta. Chcemy, aby inni mogli z niego również korzystać. Za każdym razem, gdy mówimy o „uczynieniu go wielodostępnym”, rozmowa koncentruje się na utrzymywaniu użytkowników z jednym najemcą z dala od danych, które posiada inny najemca, i upewnianiu się, że użytkownicy z jednym najemcą nie mogą (umyślnie lub przypadkowo) wywierać wpływu na innego środowiska najemcy. Zastanawiam się, czy bezpieczeństwo / izolacja danych są tak naprawdę jedynymi głównymi problemami tutaj, czy też są jakieś inne poważne obawy, o których po prostu nie myślimy.

Grant Palin
źródło
Najłatwiejsze rozwiązanie? Nowa instancja całego systemu, w tym sprzętowa, pusta, od zera, jeden nowy system na najemcę. Jeśli system i dane są dość cenne, może to być całkiem dobra opcja. Jeśli nie lubisz nowego sprzętu dla każdej instancji - skorzystaj z wirtualizacji. To może nie być najbardziej wydajne, ale z pewnością pozwoli zaoszczędzić mnóstwo bólów głowy.
SF.
Prawdopodobnie z perspektywy projektowej jest to najłatwiejsze, ale z administracyjnego punktu widzenia nie wydaje się. Przynajmniej nasi administratorzy nie są bardzo podekscytowani tą propozycją. (I tak, używamy maszyn wirtualnych.) Znacznie więcej instancji do zarządzania (monitorowanie, wdrażanie itp.) W rzeczywistości szukamy sposobów, aby uczynić to łatwiejszym do zarządzania w celu uzyskania fizycznej izolacji tutaj, ale na pierwszy rzut oka, to podejście wydaje się handlować prostotą dla prostoty administracyjnej ...?

Odpowiedzi:

11

Oprócz silosowania danych mogą wystąpić problemy

  1. Dostępność - z jednym dzierżawcą mogą sami wykonywać tylko czynności DoS, ale nawet gdy dane są odpowiednio wyciszone, dzierżawca nadal może wyczerpać zasoby.
  2. Rejestrowanie - wszystkie komunikaty dziennika przyjmowały jednego najemcę. O ile nie zapisujesz silosów w dziennikach na jednego najemcę, Twoje wiadomości mogą stać się mniej przydatne.
  3. Współbieżność - aplikacje dla pojedynczych najemców mogą działać przy umiarkowanym obciążeniu, a wysoka rywalizacja o kilka blokad może skutecznie szeregować niektóre operacje. Jeśli blokady są pomnożone przez najemcę, możesz zacząć widzieć przeplatanie operacji, które wcześniej nie miały miejsca. Warunki wyścigowe, które najprawdopodobniej nigdy się nie pojawią, mogą się teraz pojawić.
  4. Nowe źródła rywalizacji o zasoby - gdzie wcześniej mogło być n gniazd i m uchwytów plików, teraz pomnóż ten najemcę.
  5. Kompromis w zakresie konfigurowalności / kompatybilności wstecznej - gdzie zanim zdezaktualizujesz komponent przy wdrażaniu zamiennika, możesz mieć teraz jednego najemcę żądającego komponentu i jednego najemcę wymagającego, aby stary komponent, który zastępuje, pozostawał na czas nieokreślony.
  6. Cel wezwania do sądu - obecnie jesteś celem wezwania do sądu z powodu problemów związanych z Twoją firmą. W przypadku wielu dzierżawców może być konieczne udzielenie odpowiedzi na wezwania sądowe, nawet jeśli nie jest się stroną postępowania prawnego.

Niektóre z nich zakładają, że używasz wszystkich dzierżawców w tej samej przestrzeni adresowej (komputer lub klaster). Jeśli każdy najemca uruchamia oprogramowanie na swoim sprzęcie, możesz wykonać kilka z powyższych czynności i dodać:

  1. Trudności z dostępem do maszyn w celu debugowania.
  2. Prośby o wsparcie dla starszych wersji.
  3. Prośby o zezwolenie zewnętrznym kontrahentom na konfigurację.
  4. Mniej kontroli nad sprzętem, na którym działa.
  5. Mniej kontroli nad cyklem łatania / aktualizacji systemu operacyjnego, na którym działa.
Mike Samuel
źródło
1

Moim zdaniem największym problemem w wielu najemcach jest dostosowanie. Dzieje się tak rutynowo, jeśli sprzedajesz aplikację biznesową przedsiębiorstwom. Może to być coś tak prostego, jak każdy klient chcący własnych skórek, a także możliwość konfigurowania dodatkowych pól, reguł, formularzy i raportów. Poziom dostosowania, który należy obsługiwać, odgrywa kluczową rolę w architekturze.

Sriram
źródło
1

Odpowiedź Mike'a jest bardzo dobra, a wiele z tych punktów prawie nie docenia ich złożoności ze względu na to, jak krótkie są, więc weź je sobie do serca.

Chciałbym dodać, że powinieneś mieć dobre narzędzia zarządzania do tworzenia (a później zarządzania) nowych najemców. W zależności od używanej architektury fizycznej może to być dalekie od trywialnych i jest to często pomijane. Korzyści z oprogramowania jako produktu usługowego naprawdę wchodzą w grę tylko wtedy, gdy istnieje duża liczba najemców, dlatego należy poświęcić temu dużo wysiłku.

Rozszerzyć odpowiedź Śrirama; dostosowanie najemcy jest prawie zabronione, wszystko, co najemca może chcieć zmienić, powinno być konfigurowalne . Np. Jeśli twoje rozwiązanie nie obsługuje dynamicznego dodawania pól danych w co najmniej kilku kluczowych obszarach, prawdopodobnie zostaniesz zalany żądaniami dostosowania. Jest to jeden z niewielu przypadków, gdy trochę dodatkową złożoność góry ma faktycznie spłacić (powiedzmy to sprzeczne YAGNI, a przynajmniej ten poziom konfiguracji jest niemal kluczowym wymogiem, więc to będzie to potrzebne).

Daniel B.
źródło
Dlaczego dostosowywanie jest „zabronione”? Z pewnością jest to technicznie osiągalne. Istnieje wiele różnych wzorów, które pozwoliłyby na ponowne użycie systemu podstawowego dla wielu najemców, jednocześnie zapewniając indywidualne elementy dla poszczególnych najemców. Jeśli klient chce zapłacić za dostosowanie, rozsądne wydaje się rozważenie tego. Z tego powodu istnieje wiele produktów wielodostępnych z dostosowaniami dla poszczególnych klientów. W duchu YAGNI IMO bardziej chodzi o umożliwienie rozszerzalności, a nie domyślnego konfigurowania wszystkiego.
RationalGeek,
1
Mówię o oprogramowaniu jako o implementacjach usług, ogólnie (od „wielu dzierżawców”). Oczywiście jest to technicznie osiągalne, ale jest sprzeczne z podstawami SaaS. W sensie finansowym osiągasz niższe koszty, dzieląc wdrożenie i prawdopodobnie infrastrukturę dla wielu najemców. Dzięki temu możesz oferować swój produkt po niższej cenie, chwytając w ten sposób „długi ogon” rynku (duża liczba osób gotowych zapłacić tylko niewielką kwotę). Możesz utrzymywać może 5 gałęzi systemu, ale nie 15000, i do tego właśnie służy SaaS.
Daniel B,
Na poziomie przedsiębiorstwa często widzę dostawców SaaS, którzy są gotowi dokonać znacznych dostosowań swojego kodu, aby dotrzeć do klienta. Gdy klient płaci za usługę 6 lub 7 cyfr, jest to prawdopodobnie rozsądny model biznesowy.
RationalGeek,
Tak, w takich przypadkach tak myślę. Większość zmian, które widziałem, zostały zaimplementowane jako nowe konfigurowalne funkcje, które domyślnie były wyłączone dla istniejących klientów. Myślę, że problem polega na tym, że każdy z pierwszych 3 lub 4 klientów otrzymuje specjalne leczenie, ponieważ rozwiązanie jeszcze się nie zaczęło. Rozwiązanie kończy się zbyt konkretnie i tworzy kulturę „OK, po prostu włamiemy się”. Ale tak, zgadzam się z twoim komentarzem dotyczącym dużych klientów.
Daniel B
Jest to pomocne rozróżnienie, które robicie wokół możliwości dostosowywania. Myślę, że ta sama koncepcja może dotyczyć również zarządzania. Nasza multitenancy prawdopodobnie ma na celu relatywnie mniejszą liczbę większych klientów niż klientów długonogich. Jeśli głównym celem multitenancy jest złapanie długiego ogona, może to nawet nie być dla nas właściwe podejście. Dzięki za te refleksje.