Udostępnij za pośrednictwem


Rozwiązania DevOps dotyczące obciążeń SaaS na platformie Azure

Praktyki DevOps są integralną częścią zarządzania obciążeniami na platformie Azure, zwłaszcza w przypadku aplikacji SaaS. Kluczowe aspekty obejmują dołączanie, odłączanie i modyfikowanie wystąpień klientów. Te rozwiązania nie tylko usprawniają operacje, ale także zwiększają skalowalność i niezawodność, minimalizując szanse na awarie.

W tym artykule opisano zagadnienia dotyczące projektowania dotyczące efektywnego zarządzania cyklem życia klienta i bezpiecznych praktyk wdrażania.

Zarządzanie cyklami życia klientów

Zarządzanie zdarzeniami cyklu życia klienta ma kluczowe znaczenie dla każdej aplikacji SaaS. Zazwyczaj te zdarzenia obejmują:

  • Dołączanie: po zarejestrowaniu się klienta.
  • Zmiana: modyfikowanie wystąpienia klienta, na przykład zmiana warstwy cenowej.
  • Odłączanie: gdy klient anuluje swoje konto.

Mogą wystąpić dodatkowe zdarzenia cyklu życia. Możesz na przykład zezwolić klientom na wstrzymanie subskrypcji podczas przechowywania danych przez określony okres i wznowienie subskrypcji później. Każde zdarzenie może mieć unikatowe konsekwencje dla aplikacji.

W niektórych rozwiązaniach zarządzanie cyklem życia klienta może wymagać jedynie tworzenia danych w tabeli bazy danych lub zarządzania nimi. W przypadku innych rozwiązań może to obejmować organizowanie wdrożenia infrastruktury platformy Azure, kodu aplikacji i bardziej złożonej konfiguracji.

Zarządzanie cyklem życia to kluczowa odpowiedzialność za płaszczyznę sterowania rozwiązania SaaS. Początkowo zespół może obsługiwać te działania ręcznie, ale w czasie spróbuj przenieść więcej funkcji do sformalizowanego rozwiązania lub aplikacji płaszczyzny sterowania.

Uwagi dotyczące projektowania

  • Spójność. Podczas planowania strategii zarządzania cyklem życia należy wziąć pod uwagę złożoność akcji wymaganych dla każdego zdarzenia cyklu życia klienta. Obejmuje to rozmiar rozwiązania, bazę klientów i obciążenie organizacyjne. Upewnij się, że masz jasne zrozumienie niezbędnych kroków dla każdego zdarzenia i zainwestować w mechanizmy kontroli w celu zachowania spójności. Regularne przeglądanie i aktualizowanie procesów w celu zapewnienia ich prawidłowego działania w miarę rozwoju rozwiązania.

  • Model dzierżawy. Podejście do obsługi zdarzeń cyklu życia klienta zależy od modelu dzierżawy.

    • W pełni wielodostępne rozwiązania z zasobami infrastruktury. Dołączanie lub odłączanie klienta zwykle polega na aktualizowaniu listy klientów i skojarzonych danych w magazynie danych aplikacji.
    • Dedykowane zasoby na klienta. Zadania zwykle obejmują inicjowanie wdrożeń na platformie Azure, monitorowanie postępu i obsługę niepowodzeń wdrażania, prawdopodobnie z interwencją człowieka.
    • Zasoby wdrożone przez klienta. Może być konieczne bezpośrednie połączenie z zespołem inżynierów klienta na potrzeby dołączania lub odłączania.
  • Warstwy. Rozważ model cenowy i różne potrzeby dotyczące infrastruktury każdej warstwy, zwłaszcza jeśli w dowolnym momencie klienci mogą swobodnie zmieniać swoją jednostkę SKU.

    • Jeśli na przykład rozwiązanie SaaS zawiera podstawową aplikację i wiele płatnych modułów dodatku, upewnij się, że zasoby aplikacji podstawowej są wdrażane podczas dołączania. Ponadto umożliwia dynamiczne dodawanie i usuwanie modułów dodatków. Po usunięciu modułu zdecyduj, czy usunąć skojarzone dane, czy zapisać je do potencjalnej ponownej aktywacji.

Zalecenia dotyczące projektowania

Zalecenie Korzyści
Dokumentowanie każdego typu zdarzenia cyklu życia klienta.

Upewnij się, że przechwytujesz szczegółowe informacje krok po kroku dotyczące procesu dla każdego zdarzenia.
Zrozumienie zdarzeń pozwala zaplanować reagowanie na każde zdarzenie w projekcie rozwiązania.
Jasne instrukcje pomagają operatorom ludzkim zachować spójność i służyć jako podstawa przyszłej automatyzacji.
Przekaż wspólną odpowiedzialność między Tobą a klientem dla każdego zdarzenia cyklu życia. Jasno i wcześnie porozumiewaj się, jakie działania mają wykonać klienci, aby ukończyć etap cyklu życia. Możesz zmniejszyć potencjalne błędy i frustrację klienta spowodowaną błędami.
Planowanie pojemności dla każdego zdarzenia cyklu życia.

Na przykład podczas dołączania nowego klienta zaplanuj wdrożenie nowego wystąpienia aplikacji, jeśli istniejące wystąpienia nie mają wystarczającej pojemności do obsługi dodatkowego obciążenia.

Aby uzyskać więcej informacji, zobacz Rozliczenia i zarządzanie kosztami dla obciążeń SaaS na platformie Azure.
Możesz łatwiej skalować i unikać niepowodzeń wdrażania.
Automatyzowanie zdarzeń cyklu życia, gdy jest to praktyczne.

W przypadku rozwiązań o niskim woluminie lub wczesnym etapie wdrożenie ręczne i konfiguracja mogą być wystarczające, ale nadal należy używać skryptów, nawet jeśli inżynier uruchamia je za każdym razem, gdy wystąpi zdarzenie cyklu życia.

W miarę dojrzewania rozwiązania należy zintegrować te obowiązki z pełną płaszczyzną sterowania, aby zmniejszyć liczbę błędów ludzkich i obsługiwać wyższą skalę.
Można zmniejszyć znaczne ryzyko błędu ludzkiego i wspierać wyższą skalę.

Planowanie strategii zarządzania infrastrukturą

Opracuj strategię wdrażania, utrzymywania infrastruktury platformy Azure i zarządzania nią na wczesnym etapie. W miarę skalowania modelu SaaS liczba zasobów rośnie. Łatwiej jest stosować strategię zarządzania od samego początku niż uzgodnić infrastrukturę później, gdy staje się zbyt złożona, aby obsługiwać ją ręcznie.

Uwagi dotyczące projektowania

  • Zarządzanie zasobami klienta. Model dzierżawy ma wpływ na wdrażanie zasobów w rozwiązaniach SaaS. Możesz wdrożyć dedykowane zasoby platformy Azure dla każdego klienta lub udostępnić zasoby wśród określonej liczby klientów. Alternatywnie można użyć jednego zestawu zasobów udostępnionych, ponownie konfigurując je podczas dołączania nowych klientów. Typowe podejścia do zarządzania cyklem życia zasobów:

    • Traktuj listę klientów jako konfigurację zasobów do wdrożenia. Użyj scentralizowanych potoków wdrażania, aby wdrożyć i skonfigurować te zasoby.
    • Traktuj listę klientów jako dane. Użyj aplikacji płaszczyzny sterowania, aby aprowizować i konfigurować infrastrukturę.
  • Automatyzacja infrastruktury. Wiele organizacji rozpoczyna się od ręcznego wdrażania infrastruktury w chmurze za pośrednictwem witryny Azure Portal, która początkowo jest łatwa, ale nie jest dobrze skalowana. Zaplanuj automatyzację konfiguracji infrastruktury przy użyciu narzędzi infrastruktury jako kodu (IaC), takich jak Bicep lub Terraform. Aby uzyskać bardziej złożone wymagania, utwórz płaszczyznę sterowania, która bezpośrednio korzysta z interfejsów API usługi Azure Resource Manager.

  • Przypisanie infrastruktury. Śledź, którzy klienci są wdrażani w której infrastrukturze. Śledzenie jest ważne w przypadku dokładnego planowania pojemności i przypisywania kosztów. Infrastrukturę klienta można śledzić centralnie w bazie danych klienta lub w przypadku dedykowanej infrastruktury używać metadanych zasobów platformy Azure z grupami zasobów specyficznymi dla klienta i tagami zasobów. Aby uzyskać więcej informacji, zobacz Organizacja zasobów dla obciążeń SaaS.

Zalecenia dotyczące projektowania

Zalecenie Korzyści
Tworzenie automatyzacji infrastruktury przy użyciu potoków wdrażania, skryptów lub szablonów za pomocą narzędzi, które już znasz twój zespół. Użycie znanych narzędzi zmniejsza ryzyko błędów, ponieważ automatyzacja infrastruktury może być destrukcyjna, jeśli narzędzia nie są zrozumiałe.
Wdróż infrastrukturę przy użyciu IaC tam, gdzie to możliwe. Ręczne utrzymywanie infrastruktury staje się bardziej ryzykowne i bardziej uciążliwe w miarę wzrostu ilości infrastruktury.
Oddziel infrastrukturę podstawową od infrastruktury na poziomie klienta. Różne typy infrastruktury mają różne cykle życia i działania związane z zarządzaniem. Oddzielając je, można zarządzać poszczególnymi zestawami niezależnie zgodnie z własnym harmonogramem.
Wdrażanie zasobów wdrożonych przez klienta i zarządzanie nimi za pomocą aplikacji zarządzanych platformy Azure. Aplikacje zarządzane platformy Azure udostępniają szereg funkcji, które umożliwiają wdrażanie zasobów i zarządzanie nimi w ramach subskrypcji platformy Azure klienta.

Planowanie wdrożeń aplikacji

Regularnie aktualizuj kod i konfigurację aplikacji, aby zwiększyć funkcjonalność. Klienci oczekują spójnego czasu pracy podczas aktualizacji i bezpiecznych wdrożeń, aby zminimalizować ryzyko awarii.

Uwagi dotyczące projektowania

  • Standaryzacja narzędzi i procesów. Sprawdzone w branży narzędzia DevOps zapewniają spójność między funkcjami i dojrzałością w procesach zarządzania wdrożeniami aplikacji. Tworzenie własnych narzędzi jest uważane za antywzorzec w większości sytuacji.

    Zapoznaj się z tematem OE:03 Software development practices (Rozwiązania programistyczne OE:03).

    Kompromis: Złożoność i koszty. Korzystanie ze znanych narzędzi DevOps może być opłacalne pod względem pieniędzy i umiejętności. Dodaje jednak obciążenie operacyjne związane z zarządzaniem poszczególnymi narzędziami oddzielnie. Ważne jest, aby pozostać otwartym na nowe innowacje technologiczne, które mogą przynieść korzyści dla obciążenia.

  • Stopniowo wdrażaj aktualizacje. Wprowadzanie aktualizacji do podzbioru klientów naraz, dzieląc użytkowników na grupowanie logiczne. Zastosuj ten sam rygor do zmian konfiguracji, ponieważ mogą one zmieniać zachowanie kodu i powodować awarie. Postępuj zgodnie z procesem wdrażania tych zmian.

  • Wdrażanie strategii przechowywania wersji. Umożliwienie klientom wyboru wersji aplikacji zwiększa elastyczność, ale komplikuje operacje. Określ jasne oczekiwania dotyczące przestarzałych wersji i określ, co się stanie, gdy nie są już obsługiwane.

  • Automatyzacja. Wdrożenia ręczne są podatne na zagrożenia spowodowane błędami ludzkimi i brakiem spójności. Nawet jeśli wdrożenia są wyzwalane ręcznie, proces wdrażania powinien być zautomatyzowany jak najwięcej i powinien wymagać minimalnej interwencji człowieka. Rozważ kroki procesu wdrażania i jak najlepiej je zautomatyzować.

  • Test. Zintegruj testowanie z procesem wdrażania, uruchamiając polecenie:

    • Testy jednostkowe podczas kompilacji kodu
    • Testy integracji po wdrożeniu
    • Regularne testy wydajnościowe
    • Regularne testy bezpieczeństwa i penetracyjne

Zdecyduj się na podjęcie akcji, jeśli jakiekolwiek testy nie powiedzą się na dowolnym etapie.

  • Nieudane wdrożenia. Planowanie niepowodzeń wdrażania przez rozważenie niezbędnych akcji i przygotowanie strategii wycofywania.

  • Dostęp do środowisk klientów. Jeśli wdrażasz zasoby w środowiskach klientów, dowiedz się, jak można stosować aktualizacje w tych środowiskach. Rozważ możliwości udostępniane przez aplikacje zarządzane platformy Azure, takie jak wdrażanie aktualizacji aplikacji.

Zalecenia dotyczące projektowania

Zalecenie Korzyści
Użyj ustalonych, sprawdzonych w branży narzędzi i procesów Metodyki DevOps do zarządzania wdrożeniami aplikacji. Tworzenie własnych narzędzi jest uważane za antywzorzec w większości sytuacji.

Aby uzyskać więcej informacji, zobacz OE:03 Software development practices (Rozwiązania programistyczne OE:03)
Możesz mieć pewność, że zespół inżynierów skutecznie wdraża, nie musisz uczyć się niestandardowych narzędzi utworzonych.
Proaktywnie powiadamiaj klientów o wszelkich nadchodzących lub ukończonych wdrożeniach. Możesz upewnić się, że odpowiednie oczekiwania są ustawione dla klientów na temat zmian wchodzących do aplikacji.
Wdrażaj bezpieczne praktyki wdrażania, które wdrażają aktualizacje w grupach klientów przy użyciu strategii, takich jak progresywna ekspozycja, modele kondycji i inne. Zacznij od mniej wrażliwych lub wczesnych klientów korzystających z usług przed przejściem do ważniejszych.
Aby uzyskać więcej informacji, zobacz Zalecenia dotyczące bezpiecznych praktyk wdrażania.
Takie podejście pomaga zidentyfikować problemy, zanim będą miały wpływ na wszystkich klientów.
Traktuj konfigurację jako kod. Można zmniejszyć prawdopodobieństwo przestoju i wdrożyć spójny proces zmian produkcyjnych. Umożliwia to scentralizowane obowiązki operacyjne, takie jak testowanie zmian i stopniowe wdrażanie aktualizacji konfiguracji i kodu.
Zdefiniuj proces zarządzania zmianami i przekaż zasady aktualizacji wersji, aby upewnić się, że klienci wiedzą, kto wyzwala aktualizacje, ich częstotliwość i warunki.

Jeśli klienci mogą wybrać swoją wersję aplikacji, ustaw jasne wytyczne dotyczące przestarzałej wersji. Zminimalizuj liczbę wersji aplikacji uruchomionych w środowisku produkcyjnym.
Obsługa starszych wersji powoduje nieefektywność operacyjną. Zapewnij niezbędną kontrolę dla klientów, unikając nadmiernego przeciążenia zespołu, ustawiając jasne oczekiwania i zasady.
Unikaj dostosowywania aplikacji dla jednego klienta.

Aby zapewnić obsługę różnych potrzeb klientów, możesz utworzyć różne warstwy rozwiązania lub użyć flag funkcji, aby włączyć określone funkcje dla niektórych użytkowników.
Unikaj niejednoznaczności co do tego, które funkcje są wdrażane w danej wersji i zmniejszają obciążenie konserwacją.
Mają plan wycofywania wdrożeń, w tym kryteria wyzwalania i niezbędnych zatwierdzeń. Plany wycofywania pomagają zagwarantować, że można odzyskać sprawę po błędach wdrażania nawet w nieprzewidzianych okolicznościach.
Regularnie testuj aplikację i na wielu etapach procesu tworzenia oprogramowania. Przyjęcie podejścia "shift-left" i przechwytywanie usterek i odchyleń na wczesnym etapie cyklu życia. Pomaga zapobiegać występowaniu krytycznych błędów wpływających na klientów.

Dodatkowe zasoby

Multitenancy to podstawowa metodologia biznesowa projektowania obciążeń SaaS. Te artykuły zawierają więcej informacji na temat wdrażania rozwiązań DevOps:

Następny krok

Dowiedz się więcej na temat zagadnień związanych z zarządzaniem zdarzeniami dotyczących implementowania procesów i narzędzi, które obsługują rozwiązanie SaaS na platformie Azure.