Perspektywa platformy Azure Well-Architected Framework na usługę Azure App Service (Web Apps)
Azure App Service to platforma jako usługa (PaaS), która zapewnia w pełni zarządzane środowisko hostingu do tworzenia, wdrażania i skalowania aplikacji internetowych. Jako rozwiązanie PaaS usługa App Service abstrakuje podstawową infrastrukturę, umożliwiając skoncentrowanie się na tworzeniu aplikacji. Usługa App Service (aplikacja internetowa) uruchamia aplikacje w kontekście planu usługi App Service, który określa zasoby, system operacyjny, region i model cen (SKU) używany do hostowania aplikacji.
W tym artykule przyjęto założenie, że jako architekt zapoznałeś się z drzewem decyzyjnym obliczeń i wybrałeś usługę App Service jako opcję obliczeniową dla swojego obciążenia. Wskazówki zawarte w tym artykule zawierają zalecenia dotyczące architektury, które odnoszą się do zasad filarów struktury Azure Well-Architected Framework.
Ważny
Jak używać tego przewodnika
Każda sekcja zawiera listę kontrolną projektu wyróżniającą zagadnienia i strategie dotyczące architektury dla usługi Azure App Service. Zalecenia oferują konkretne wskazówki dotyczące wdrażania tych strategii.
Zalecenia nie reprezentują wyczerpującej listy wszystkich konfiguracji dostępnych dla funkcji Web Apps usługi Azure App Service i ich zależności. Zamiast tego, przedstawiają listę kluczowych zaleceń powiązanych z perspektywami projektowymi. Skorzystaj z zaleceń, aby utworzyć weryfikację koncepcji lub zoptymalizować istniejące środowiska.
Podstawowa architektura, która demonstruje kluczowe zalecenia: bazowa architektura usługi App Service.
Zakres technologii
Ten przegląd koncentruje się na powiązanych decyzjach dotyczących następujących zasobów platformy Azure:
- Plany usługi App Service
- Aplikacje internetowe
Inne oferty platformy Azure są skojarzone z usługą App Service, takimi jak Azure Functions, Azure Logic Apps i App Service Environment. Te oferty są poza zakresem tego artykułu. Środowisko App Service Environment jest od czasu do czasu przywołyzowane, aby ułatwić wyjaśnienie funkcji lub opcji podstawowych ofert usługi App Service.
Niezawodność
Celem filaru niezawodności jest zapewnienie ciągłej funkcjonalności przez budowanie wystarczającej odporności i zdolności szybkiego odzyskiwania po awariach.
Zasady projektowania niezawodności zapewniają ogólną strategię projektowania stosowaną dla poszczególnych składników, przepływów systemowych i całego systemu.
Lista kontrolna projektu
Rozpocznij strategię projektowania na podstawie listy kontrolnej przeglądu projektu pod kątem niezawodności. Określ jego znaczenie dla wymagań biznesowych, pamiętając o warstwach i funkcjach usługi App Service oraz jej zależnościach. Rozszerz strategię w celu uwzględnienia większej liczby podejść zgodnie z potrzebami.
określanie priorytetów przepływów użytkowników: nie wszystkie przepływy są równie krytyczne. Zidentyfikuj ścieżki krytyczne w aplikacji i przypisz priorytety do każdego przepływu, aby kierować decyzjami projektowymi. Projekt przepływu użytkownika może mieć wpływ na warstwy usług i liczbę wystąpień wybieranych dla planu i konfiguracji usługi App Service.
Na przykład aplikacja może zawierać warstwy frontonu i zaplecza, które komunikują się za pośrednictwem brokera komunikatów. Możesz podzielić warstwy w wielu aplikacjach internetowych, aby umożliwić niezależne skalowanie, zarządzanie cyklem życia i konserwację. Umieszczenie dużej aplikacji w jednym planie może prowadzić do problemów z pamięcią lub procesorem CPU i wpływać na niezawodność.
Dla optymalnej wydajności po stronie interfejsu użytkownika może być potrzebnych więcej instancji na froncie. Jednak zaplecze może nie wymagać tej samej liczby wystąpień.
Przewidywanie potencjalnych awarii: Planowanie strategii ograniczania ryzyka potencjalnych awarii. W poniższej tabeli przedstawiono przykłady analizy trybu awarii.
Aby uzyskać więcej informacji, zobacz Analiza trybu awarii dla aplikacji platformy Azure.
Tworzenie Nadmiarowości: Tworzenie nadmiarowości w aplikacji i pomocniczej infrastrukturze. Rozłożenie wystąpień w różnych strefach dostępności w celu zwiększenia odporności na uszkodzenia. Ruch jest kierowany do innych stref, jeśli jedna strefa ulegnie awarii. Wdróż aplikację w wielu regionach, aby upewnić się, że aplikacja pozostaje dostępna, nawet jeśli w całym regionie wystąpi awaria.
Tworzenie podobnych poziomów nadmiarowości w usługach zależnych. Na przykład, wystąpienia aplikacji wiążą się z przechowywaniem danych typu blob. Rozważ skonfigurowanie skojarzonego konta magazynu z magazynem strefowo nadmiarowym (ZRS), jeśli aplikacja używa wdrożenia strefowo nadmiarowego.
Użyj wielu wystąpień: Uruchomienie aplikacji tylko w jednym wystąpieniu jest bezpośrednim pojedynczym punktem awarii. Aby zapewnić wysoką dostępność, przydziel aplikacji wiele wystąpień. Jeśli jedno wystąpienie zakończy się niepowodzeniem, inne wystąpienia nadal mogą obsługiwać żądania przychodzące. Pamiętaj, że kod aplikacji powinien być w stanie obsługiwać wiele wystąpień bez problemów z synchronizacją podczas odczytywania ze źródeł danych lub zapisywania ich w tych źródłach.
Zapewnij redundancję składników sieciowych. Na przykład użyj strefowo nadmiarowych adresów IP i modułów równoważenia obciążenia.
Opracuj niezawodną strategię skalowania: Nieoczekiwane obciążenie aplikacji może uczynić ją zawodną. Rozważ odpowiednie podejście do skalowania na podstawie charakterystyki obciążenia. Skalowanie horyzontalne (skalowanie w poziomie) umożliwia dodanie większej liczby wystąpień w celu dystrybucji obciążenia, podczas gdy skalowanie pionowe (skalowanie w górę) obejmuje zwiększenie pojemności istniejącego wystąpienia (procesora CPU, pamięci). Należy zachować ostrożność podczas nadmiernego przydzielania zasobów, ponieważ dodawanie niepotrzebnych wystąpień zwiększa koszty bez rzeczywistych korzyści wydajnościowych.
Czasami można zwiększać skalę, aby obsłużyć obciążenie. Jeśli jednak obciążenie będzie nadal rosnąć, przeprowadź skalowanie w poziomie do nowych wystąpień. Preferuj skalowanie automatyczne lub autoskalowanie zamiast podejść ręcznych. Zawsze zachowaj bufor dodatkowej pojemności podczas operacji skalowania, aby zapobiec pogorszeniu wydajności[Wybierz opcję skalowania dla usługi App Service](Automatyczne skalowanie w usłudze Azure App Service)
Wybrana warstwa planu usługi App Service wpływa na skalowanie pod względem liczby wystąpień i jednostek obliczeniowych.
Upewnij się, że aplikacja jest właściwie zainicjowana, aby nowe instancje szybko się rozgrzały i mogły odbierać żądania.
Dąż do aplikacji bezstanowych, jeśli to możliwe. Niezawodne skalowanie stanu przy użyciu nowych wystąpień może zwiększyć złożoność. Rozważ zewnętrzny magazyn danych, który można skalować niezależnie, jeśli musisz przechowywać stan aplikacji. Przechowywanie stanu sesji w pamięci może spowodować utratę stanu sesji, gdy wystąpi problem z aplikacją lub usługą App Service. Ogranicza również możliwość rozłożenia obciążenia między inne instancje.
Regularnie testuj reguły skalowania automatycznego. Symulowanie scenariuszy ładowania w celu sprawdzenia, czy aplikacja jest skalowana zgodnie z oczekiwaniami. Należy rejestrować zdarzenia skalowania, aby można było rozwiązywać problemy, które mogą wystąpić, i zoptymalizować strategię skalowania w czasie.
Usługa App Service ma ograniczenie liczby wystąpień w ramach planu, co może mieć wpływ na niezawodność skalowania. Jedną ze strategii jest użycie identycznych sygnatur wdrożenia, z których każde uruchamia wystąpienie planu usługi App Service z własnym punktem końcowym. Ważne jest, aby wszystkie serwery były podłączone do zewnętrznego modułu równoważenia obciążenia, aby rozdzielać ruch pomiędzy nimi. Użyj usługi Azure Application Gateway na potrzeby wdrożeń z jedną strefą i usługi Azure Front Door w przypadku wdrożeń obejmujących wiele regionów. Takie podejście jest idealne w przypadku aplikacji o krytycznym znaczeniu, w których niezawodność ma kluczowe znaczenie. Aby uzyskać więcej informacji, zobacz Punkt odniesienia o znaczeniu krytycznym w usłudze App Service.
Zaplanuj możliwość odzyskiwania: Redundancja ma kluczowe znaczenie dla ciągłości działania. Przełączanie awaryjne do innego wystąpienia, jeśli jedno wystąpienie jest niedostępne. Zapoznaj się z funkcjami automatycznego naprawiania w usłudze App Service, takimi jak automatyczna naprawa wystąpień.
Zaimplementuj wzorce projektowe, aby zapewnić bezproblemowe obniżenie wydajności zarówno przejściowych awarii, jak problemy z łącznością sieciową, jak i zdarzenia na dużą skalę, takie jak awarie regionalne. Weź pod uwagę następujące wzorce projektowe:
Wzorzec Bulkhead segmentuje aplikację na izolowane grupy, aby zapobiec awarii wpływającej na cały system.
Wzorzec bilansowania obciążenia Queue-Based kolejkuje elementy pracy, które służą jako bufor w celu złagodzenia skoków w natężeniu ruchu.
Wzorzec ponawiania prób obsługuje błędy przejściowe z powodu awarii sieci, porzuconych połączeń bazy danych lub zajętych usług.
wzorzec wyłącznika uniemożliwia aplikacji wielokrotne próby wykonania operacji, która prawdopodobnie zakończy się niepowodzeniem.
Za pomocą WebJobs można uruchamiać operacje w tle w aplikacji internetowej. Aby niezawodnie uruchamiać te zadania, upewnij się, że aplikacja, która hostuje zadanie, działa w sposób ciągły zgodnie z harmonogramem lub na podstawie wyzwalaczy sterowanych zdarzeniami.
Aby uzyskać więcej informacji, zobacz wzorce niezawodności .
Przeprowadzanie testów niezawodności: przeprowadź testowanie obciążenia, aby ocenić niezawodność i wydajność aplikacji pod obciążeniem. Plany testów powinny zawierać scenariusze, które weryfikują automatyczne operacje odzyskiwania.
Użyj symulacji błędów, aby celowo wprowadzić awarie i zweryfikować mechanizmy samonaprawiania i samozachowania. Zapoznaj się z biblioteką błędów udostępnioną przez usługę Azure Chaos Studio.
Usługa App Service nakłada limity zasobów na hostowane aplikacje. Plan usługi App Service określa te limity. Upewnij się, że testy potwierdzają, że aplikacja działa w ramach tych limitów zasobów. Aby uzyskać więcej informacji, zobacz limity subskrypcji i usług platformy Azure, kwoty i ograniczenia.
Użyj funkcji kontroli kondycji, aby zidentyfikować nieodpowiadających pracowników: Usługa App Service ma wbudowane funkcje, które okresowo wykonują ping do określonej ścieżki aplikacji internetowej. Platforma wysyła polecenie ping do tej ścieżki, aby określić, czy aplikacja jest sprawna i odpowiada na zapytania. Gdy witryna jest skalowana w poziomie do wielu wystąpień, usługa App Service wykluczy wszystkie wystąpienia w złej kondycji z obsługi żądań, zwiększając ogólną dostępność. Ścieżka sprawdzania kondycji Twojej aplikacji powinna monitorować krytyczne składniki, takie jak baza danych, pamięć podręczna lub usługa obsługi komunikatów. Dzięki temu stan zwrócony przez ścieżkę sprawdzania kondycji jest dokładnym obrazem ogólnej kondycji aplikacji. Ustaw ścieżkę do sprawdzania kondycji
Użyj funkcji automatycznego naprawiania: czasami aplikacja może napotkać nieoczekiwane zachowania, które mogą zostać rozwiązane przez proste ponowne uruchomienie. Funkcje automatycznego uzdrowienia umożliwiają zdefiniowanie "warunku", który wyzwoli automatyczne uzdrowienie i "akcję", która zostanie zainicjowana po spełnieniu warunku. narzędzia diagnostyczne App Service i funkcja automatycznego naprawiania
pl-PL: Raport wskaźnika odporności usługi App Service: Aby przejrzeć dostosowane zalecenia dotyczące najlepszych rozwiązań, zapoznaj się z raportem wskaźnika odporności.Raport wskaźnika odporności usługi App Service
Zalecenia
Zalecenie | Korzyść |
---|---|
(App Service) Wybierz warstwę Premium w wersji 3 planu usługi App Service dla obciążeń produkcyjnych. Ustaw maksymalną i minimalną liczbę pracowników zgodnie z planowaniem pojemności. Aby uzyskać więcej informacji, zapoznaj się z Omówieniem planu usługi App Service . |
Plan usługi App Service w wersji Premium V3 oferuje zaawansowane funkcje skalowania i zapewnia nadmiarowość, jeśli wystąpią awarie. |
(App Service) Włącz strefową redundancję. Rozważ aprowizowanie więcej niż trzech wystąpień, aby zwiększyć odporność na uszkodzenia. Sprawdź, czy w regionie dostępna jest nadmiarowość stref, ponieważ nie wszystkie regiony oferują tę funkcję. |
Aplikacja może wytrzymać awarie w jednej strefie, gdy wiele wystąpień jest rozmieszczonych w różnych strefach. Ruch jest automatycznie przekierowywany do zdrowych instancji w innych strefach, co utrzymuje niezawodność aplikacji, jeśli jedna strefa jest niedostępna. |
(Aplikacja internetowa) Rozważ wyłączenie funkcji afinitetu routingu żądań aplikacji (ARR). Powiązanie ARR tworzy związane sesje, które przekierowują użytkowników do węzła, który obsłużył ich wcześniejsze żądania. | Żądania przychodzące są równomiernie rozkładane na wszystkie dostępne węzły po wyłączeniu koligacji ARR. Równomiernie rozłożone żądania zapobiegają przeciążeniu któregokolwiek węzła. Żądania mogą być bezproblemowo przekierowywane do innych węzłów w dobrej kondycji, jeśli węzeł jest niedostępny. Unikaj przypisania sesji, aby zapewnić, że wystąpienie usługi App Service pozostaje bezstanowe. Bezstanowa usługa App Service zmniejsza złożoność i zapewnia spójne zachowanie między węzłami. Usuń lepkie sesje, aby usługa App Service mogła dodawać lub usuwać wystąpienia w celu skalowania w poziomie. |
(Aplikacja internetowa) Zdefiniuj reguły automatycznego naprawiania na podstawie liczby żądań, wolno działających żądań, limitów pamięci i innych wskaźników, które są częścią twojego punktu odniesienia wydajności. Rozważ tę konfigurację w ramach strategii skalowania. | Reguły automatycznego naprawiania ułatwiają aplikacji automatyczne odzyskiwanie po nieoczekiwanych problemach. Skonfigurowane reguły wyzwalają działania naprawcze po naruszeniu progów. Automatyczne naprawianie umożliwia automatyczną proaktywną konserwację. |
(Aplikacja internetowa) włącz funkcję sprawdzania kondycji i podaj ścieżkę odpowiadającą na żądania kontroli kondycji. | Testy kondycji mogą wykrywać problemy wcześnie. Następnie system może automatycznie podejmować akcje naprawcze, gdy żądanie sprawdzania kondycji zakończy się niepowodzeniem. Moduł równoważenia obciążenia kieruje ruch z dala od niesprawnych instancji, przekierowując użytkowników do zdrowych węzłów. |
Bezpieczeństwo
Celem filaru Zabezpieczenia jest zapewnienie poufności, integralności i dostępności gwarancji dla obciążenia.
Zasady projektowania zabezpieczeń zapewniają strategię projektowania wysokiego poziomu w celu osiągnięcia tych celów, stosując podejścia do projektu technicznego wokół hostingu w usłudze App Service.
Lista kontrolna projektu
Rozpocznij strategię projektowania na podstawie szczegółowej listy kontrolnej dotyczącej przeglądu projektu pod kątem zabezpieczeń, oraz zidentyfikuj luki i mechanizmy kontrolne w celu wzmocnienia bezpieczeństwa. Rozszerz strategię w celu uwzględnienia większej liczby podejść zgodnie z potrzebami.
Przejrzyj punkty odniesienia zabezpieczeń: Aby zwiększyć poziom zabezpieczeń aplikacji hostowanej w planie usługi App Service, przejrzyj punkt odniesienia zabezpieczeń dla usługi App Service.
Użyj najnowszego środowiska uruchomieniowego i bibliotek: Dokładnie przetestuj kompilacje aplikacji przed wykonaniem aktualizacji, aby wcześnie przechwycić problemy i zapewnić bezproblemowe przejście do nowej wersji. Usługa App Service obsługuje zasady obsługi środowiska uruchomieniowego języka dotyczące aktualizowania istniejących stosów i wycofywania stosów, których wsparcie zostało zakończone.
Tworzenie segmentacji przez granice izolacji, aby powstrzymać naruszenia: Zastosuj segmentację tożsamości. Na przykład zaimplementuj kontrolę dostępu opartą na rolach (RBAC), aby przypisać określone uprawnienia na podstawie ról. Postępuj zgodnie z zasadą najniższych uprawnień, aby ograniczyć prawa dostępu tylko do tego, co jest niezbędne. Utwórz również segmentację na poziomie sieci. Wstrzykiwanie aplikacji usługi App Service w sieci wirtualnej platformy Azure na potrzeby izolacji i definiowanie sieciowych grup zabezpieczeń w celu filtrowania ruchu.
Plany usługi App Service oferują warstwę środowiska App Service Environment, która zapewnia wysoki stopień izolacji. Środowisko App Service Environment umożliwia uzyskanie dedykowanych zasobów obliczeniowych i sieciowych.
Stosowanie kontroli dostępu do tożsamości: ogranicz zarówno dostęp do wewnątrz aplikacji internetowej, jak i dostęp zewnętrzny z aplikacji internetowej do innych zasobów. Ta konfiguracja stosuje kontrole dostępu do tożsamości i pomaga zachować całościowe podejście do bezpieczeństwa systemu.
Użyj identyfikatora Entra firmy Microsoft, aby uzyskać wszystkie wymagania dotyczące uwierzytelniania i autoryzacji. Użyj ról wbudowanych, takich jak współautor planu sieciowego , współautor witryny oraz ogólnego współautora, czytelnika i właściciela .
Stosowanie mechanizmów kontroli zabezpieczeń sieci: integrowanie usługi App Service z siecią wirtualną w celu kontrolowania ruchu wychodzącego. Użyj prywatnych punktów końcowych, aby kontrolować ruch przychodzący i ograniczyć dostęp do usługi App Service z sieci wirtualnej i wyłączyć publiczny dostęp do Internetu. Zabezpiecz swoją sieć, kontroluj ruch przychodzący i wychodzący
Wdróż zaporę aplikacji internetowej w celu ochrony przed typowymi lukami w zabezpieczeniach. Zarówno usługa Application Gateway, jak i usługa Azure Front Door mają zintegrowane funkcje WAF (zapory aplikacji internetowej).
Skonfiguruj odpowiednio reguły zwrotnego serwera proxy i ustawienia sieci, aby osiągnąć żądany poziom zabezpieczeń i kontroli. Na przykład dodaj reguły grupy zabezpieczeń sieci w podsieci prywatnego punktu końcowego, aby akceptowały ruch tylko ze zwrotnego serwera proxy.
Ruch wychodzący z aplikacji do innych usług PaaS powinien przekraczać prywatne punkty końcowe. Rozważ umieszczenie składnika zapory w celu ograniczenia ruchu wychodzącego do publicznego Internetu. Obie metody uniemożliwiają eksfiltrację danych.
Aby uzyskać kompleksowy przegląd, zobacz funkcje sieciowe usługi App Service .
Szyfruj dane: ochrona danych przesyłanych przy użyciu kompleksowego protokołu Transport Layer Security (TLS). Użyj kluczy zarządzanych przez klienta do pełnego szyfrowania danych nieaktywnych. Aby uzyskać więcej informacji, zobacz Szyfrowanie danych w spoczynku przy użyciu kluczy zarządzanych przez klienta.
Nie używaj starszych protokołów, takich jak TLS 1.0 i 1.1. Upewnij się, że wszystkie aplikacje internetowe używają tylko protokołu HTTPS i wymuszają protokół TLS 1.2 lub nowszy. Domyślna minimalna wersja protokołu TLS to 1.2. Więcej informacji znajdziesz w Omówieniu protokołu TLS usługi App Service.
Wszystkie wystąpienia usługi App Service mają domyślną nazwę domeny. Użyj domeny niestandardowej i zabezpieczyj domenę przy użyciu certyfikatów.
kompleksowe szyfrowanie TLS: kompleksowe szyfrowanie TLS jest dostępne w planach usługi App Service w warstwie Premium. Ta funkcja szyfruje ruch w całej transakcji, minimalizując ryzyko przechwycenia ruchu.
Zmniejsz obszar ataków: usuń konfiguracje domyślne, których nie potrzebujesz. Na przykład wyłącz zdalne debugowanie, uwierzytelnianie lokalne dla lokacji menedżera kontroli źródła (SCM) i uwierzytelnianie podstawowe. Wyłącz niezabezpieczone protokoły, takie jak HTTP i File Transfer Protocol (FTP). Wymuszanie konfiguracji za pomocą zasad platformy Azure. Aby uzyskać więcej informacji, zobacz Zasady platformy Azure.
Zaimplementuj restrykcyjne zasady współużytkowania zasobów między źródłami (CORS): użyj restrykcyjnych zasad CORS w aplikacji internetowej, aby akceptować żądania tylko z dozwolonych domen, nagłówków i innych kryteriów. Wymuszanie zasad CORS za pomocą wbudowanych definicji zasad platformy Azure.
Użyj tożsamości zarządzanych: włącz tożsamości zarządzane dla usługi App Service, aby bezpiecznie uzyskać dostęp do innych usług platformy Azure bez konieczności zarządzania poświadczeniami. Dowiedz się więcej o tożsamościach zarządzanych.
Chroń tajemnice aplikacji: Należy obsługiwać poufne informacje, takie jak klucze interfejsów API lub tokeny uwierzytelniania. Zamiast trwale umieszczać te wpisy tajne bezpośrednio w kodzie aplikacji lub plikach konfiguracji, możesz użyć odwołań usługi Azure Key Vault w ustawieniach aplikacji. Po uruchomieniu aplikacji usługa App Service automatycznie pobiera wartości wpisów tajnych z usługi Key Vault przy użyciu tożsamości zarządzanej aplikacji.
Włącz logi zasobów dla aplikacji: Włącz logi zasobów dla swojej aplikacji, aby utworzyć kompleksowe ścieżki aktywności, które dostarczają cennych danych podczas dochodzeń po incydentach bezpieczeństwa. Aby uzyskać szczegółowe wskazówki, zobacz wskazówki dotyczące monitorowania dzienników .
Podczas oceniania zagrożeń rozważ rejestrowanie w ramach procesu modelowania zagrożeń.
Zalecenia
Zalecenie | Korzyść |
---|---|
(Aplikacja internetowa) przypisz tożsamości zarządzane do aplikacji internetowej. Aby zachować granice izolacji, nie udostępniaj ani nie używaj ponownie tożsamości w aplikacjach. Upewnij się, że bezpiecznie nawiążesz połączenie z rejestrem kontenerów, jeśli używasz kontenerów do wdrożenia. |
Aplikacja pobiera tajemnice z usługi Key Vault, aby uwierzytelnić swoją zewnętrzną komunikację. Platforma Azure zarządza tożsamością i nie wymaga aprowizacji ani rotacji sekretów. Masz odrębne tożsamości na potrzeby szczegółowości kontroli. Odrębne tożsamości ułatwiają odwoływanie w przypadku naruszenia zabezpieczeń tożsamości. |
(Aplikacja internetowa) Konfigurowanie domen niestandardowych dla aplikacji. Wyłącz protokół HTTP i akceptuj tylko żądania HTTPS. |
Domeny niestandardowe umożliwiają bezpieczną komunikację za pośrednictwem protokołu HTTPS przy użyciu protokołu Transport Layer Security (TLS), który zapewnia ochronę poufnych danych i tworzy zaufanie użytkowników. |
(Aplikacja internetowa) ocenia, czy wbudowane uwierzytelniania usługi App Service jest właściwym mechanizmem uwierzytelniania użytkowników, którzy uzyskują dostęp do aplikacji. Wbudowane uwierzytelnianie usługi App Service integruje się z identyfikatorem Entra firmy Microsoft. Ta funkcja obsługuje walidację tokenów i zarządzanie tożsamościami użytkowników u wielu dostawców logowania i obsługuje program OpenID Connect. Dzięki tej funkcji nie masz autoryzacji na poziomie szczegółowym i nie masz mechanizmu testowania uwierzytelniania. | W przypadku korzystania z tej funkcji nie trzeba używać bibliotek uwierzytelniania w kodzie aplikacji, co zmniejsza złożoność. Użytkownik jest już uwierzytelniany, gdy żądanie dociera do aplikacji. |
(Aplikacja internetowa) Skonfiguruj aplikację na potrzeby integracji sieci wirtualnej. Użyj prywatnych punktów końcowych dla aplikacji App Service. Blokuj cały ruch publiczny. Realizowanie pobrania obrazu kontenera za pośrednictwem integracji z siecią wirtualną. Cały ruch wychodzący z aplikacji przechodzi przez sieć wirtualną. |
Uzyskaj korzyści zabezpieczeń wynikające z korzystania z sieci wirtualnej platformy Azure. Na przykład aplikacja może bezpiecznie uzyskiwać dostęp do zasobów w sieci. Dodaj prywatny punkt końcowy, aby ułatwić ochronę aplikacji. Prywatne punkty końcowe ograniczają bezpośrednie narażenie na sieć publiczną i umożliwiają kontrolowany dostęp za pośrednictwem zwrotnego serwera proxy. |
(Aplikacja internetowa) Aby zaimplementować wzmocnienie zabezpieczeń: - Wyłącz uwierzytelnianie podstawowe, które używają nazwy użytkownika i hasła na rzecz uwierzytelniania opartego na identyfikatorze Entra firmy Microsoft. — Wyłącz zdalne debugowanie, aby porty przychodzące nie zostały otwarte. — Włącz zasady CORS, aby zaostrzyć kontrolę nad żądaniami przychodzącymi. - Wyłącz protokoły, takie jak FTP. |
Nie zalecamy uwierzytelniania podstawowego jako bezpiecznej metody wdrażania. Usługa Microsoft Entra ID korzysta z uwierzytelniania opartego na tokenach OAuth 2.0, które oferuje wiele zalet i ulepszeń, które dotyczą ograniczeń związanych z uwierzytelnianiem podstawowym. Zasady ograniczają dostęp do zasobów aplikacji, zezwalają tylko na żądania z określonych domen i zabezpieczają żądania między regionami. |
(Aplikacja internetowa) Zawsze używać odwołań usługi Key Vault jako ustawień aplikacji. |
Tajemnice są oddzielone od konfiguracji aplikacji. Ustawienia aplikacji są szyfrowane w spoczynku. Usługa App Service zarządza również rotacjami wpisów tajnych. |
(App Service) włączyć usługę Microsoft Defender for Cloud for App Service. | Uzyskaj ochronę w czasie rzeczywistym dla zasobów uruchamianych w planie usługi App Service. Ochrona przed zagrożeniami i zwiększanie ogólnego poziomu zabezpieczeń. |
(App Service) Włącz rejestrowanie diagnostyczne i dodaj instrumentację do aplikacji. Dzienniki są wysyłane do kont usługi Azure Storage, usługi Azure Event Hubs i usługi Log Analytics. Aby uzyskać więcej informacji na temat typów dzienników inspekcji, zobacz Obsługiwane typy dzienników. | Rejestrowanie przechwytuje wzorce dostępu. Rejestruje istotne zdarzenia, które zapewniają cenny wgląd w sposób interakcji użytkowników z aplikacją lub platformą. Te informacje mają kluczowe znaczenie dla celów odpowiedzialności, zgodności i zabezpieczeń. |
Optymalizacja kosztów
Optymalizacja kosztów koncentruje się na wykrywaniu wzorców wydatków, priorytetyzacji inwestycji w kluczowych obszarach i optymalizacji w innych, aby utrzymać budżet organizacji i jednocześnie spełniać wymagania biznesowe.
Zasady projektowania optymalizacji kosztów zapewniają ogólną strategię projektowania służącą do osiągnięcia tych celów i dokonywania kompromisów zgodnie z potrzebami w projekcie technicznym związanym z aplikacjami internetowymi i środowiskiem, w którym działają.
Lista kontrolna projektu
Rozpocznij opracowywanie strategii projektowania na podstawie listy kontrolnej przeglądu projektu dla optymalizacji kosztów w przypadku inwestycji i dopracuj projekt tak, aby obciążenie było zgodne z przydzielonym budżetem. Projekt powinien korzystać z odpowiednich możliwości platformy Azure, monitorować inwestycje i znajdować możliwości optymalizacji w czasie.
Oszacuj początkowy koszt: W ramach ćwiczenia z zakresu modelowania kosztów, użyj kalkulatora cen Azure , aby ocenić przybliżone koszty związane z różnymi warstwami na podstawie liczby wystąpień, które planujesz uruchomić. Każda warstwa usługi App Service oferuje różne opcje obliczeniowe.
Ciągłe monitorowanie modelu kosztów w celu śledzenia wydatków.
Oceń opcje przecenione: wyższe warstwy obejmują dedykowane instancje obliczeniowe. Rabat za rezerwację można zastosować, jeśli obciążenie ma przewidywalny i spójny wzorzec użycia. Upewnij się, że analizujesz dane użycia, aby określić typ rezerwacji, która odpowiada obciążeniu. Aby uzyskać więcej informacji, zobacz Oszczędzanie kosztów za pomocą wystąpień zarezerwowanych usługi App Service.
Omówienie mierników użycia: Azure nalicza opłaty za godzinę, rozliczając do sekundy, w oparciu o warstwę cenową planu usługi App Service. Opłaty są naliczane za każde wystąpienie skalowane poziomo w ramach Twojego planu, w zależności od czasu, przez który przydzielasz wystąpienie maszyny wirtualnej. Zwróć uwagę na niewykorzystane zasoby obliczeniowe, które mogą zwiększyć koszty w wyniku nadmiernej alokacji z powodu nieoptymalnego wyboru jednostki SKU lub nieprawidłowo skonfigurowanej konfiguracji redukcji zasobów.
Dodatkowe funkcje usługi App Service, takie jak rejestracja domeny niestandardowej i certyfikaty niestandardowe, mogą dodawać koszty. Inne zasoby, takie jak sieci wirtualne do izolacji rozwiązania lub magazyny kluczy w celu ochrony danych tajnych, które mogą integrować się z zasobami usługi App Service, również mogą dodawać koszty. Aby uzyskać więcej informacji, zobacz model rozliczeń usług App Services.
Rozważ kompromisy między gęstością a izolacją: możesz użyć planów usługi App Service do hostowania wielu aplikacji na tym samym środowisku obliczeniowym, co pozwala zaoszczędzić koszty w środowiskach udostępnionych. Aby uzyskać więcej informacji, zobacz Kompromisy.
Oceń wpływ strategii skalowania nakoszt: musisz prawidłowo zaprojektować, przetestować i skonfigurować skalowanie poziome i skalowanie pionowe w czasie implementowania skalowania automatycznego. Ustanów dokładne maksymalne i minimalne limity skalowania automatycznego.
Proaktywne inicjowanie aplikacji pod kątem niezawodnego skalowania. Na przykład nie czekaj, aż użycie procesora osiągnie 95%. Zamiast tego wyzwalaj skalowanie na poziomie około 65%, aby zapewnić wystarczający czas na przydzielenie i inicjowanie nowych instancji w trakcie procesu skalowania. Jednak ta strategia może prowadzić do nieużywanej pojemności.
Zalecamy łączenie i równoważenie mechanizmów skalowania w górę i skalowania w poziomie. Na przykład aplikacja może skalować w górę przez pewien czas, a następnie skalować w poziomie w razie potrzeby. Poznaj wysokie warstwy, które oferują dużą pojemność i efektywne użycie zasobów. Na podstawie wzorców użycia wyższe warstwy Premium często są bardziej opłacalne, ponieważ oferują większe możliwości.
Optymalizowanie kosztów środowiska: Rozważ użycie poziomu Podstawowy lub Bezpłatny, aby uruchamiać środowiska przedprodukcyjne. Te poziomy charakteryzują się niską wydajnością i niskim kosztem. Jeśli używasz warstwy Podstawowej lub Bezpłatnej, skorzystaj z zarządzania, aby wymusić wybór warstwy, ograniczyć liczbę wystąpień i procesorów CPU, zredukować skalowanie i ograniczyć retencję dzienników.
Implementowanie wzorców projektowych: Ta strategia zmniejsza liczbę żądań generowanych przez obciążenie. Rozważ użycie wzorców, takich jak wzorzec Zaplecze dla Frontendu i wzorzec Agregacja Bramy, co może zminimalizować liczbę żądań i zmniejszyć koszty.
Regularnie sprawdzaj koszty związane z danymi: rozszerzone okresy przechowywania danych lub kosztowne warstwy magazynowania mogą prowadzić do wysokich kosztów magazynowania. Większe wydatki mogą być gromadzone zarówno z powodu użycia przepustowości, jak i długotrwałego przechowywania danych rejestrowania.
Rozważ zaimplementowanie buforowania, aby zminimalizować koszty transferu danych. Zacznij od lokalnego buforowania w pamięci, a następnie zapoznaj się z opcjami buforowania rozproszonego, aby zmniejszyć liczbę żądań do bazy danych zaplecza. Rozważ koszty przepustowości związane z komunikacją między regionami, jeśli Twoja baza danych znajduje się w innym regionie.
Optymalizowanie kosztów wdrożenia: skorzystaj z miejsc wdrożenia, aby zoptymalizować koszty. Gniazdo działa w tym samym środowisku obliczeniowym, co instancja produkcyjna. Używaj ich strategicznie w scenariuszach, takich jak wdrożenia niebiesko-zielone, które przełączają się między slotami. Takie podejście minimalizuje przestoje i zapewnia płynne przejścia.
Używaj miejsc wdrożenia z ostrożnością. Możesz wprowadzić problemy, takie jak wyjątki lub przecieki pamięci, które mogą mieć wpływ zarówno na istniejące wystąpienia, jak i nowe wystąpienia. Upewnij się, że dokładnie przetestujesz zmiany. Aby uzyskać wskazówki operacyjne, zobacz Operational Excellence.
Zalecenia
Zalecenie | Korzyść |
---|---|
(App Service) wybierz warstwy Bezpłatna lub Podstawowa dla niższych środowisk. Do użytku eksperymentalnego zalecamy te warstwy. Usuń warstwy, gdy nie są już potrzebne. | Warstwy Bezpłatna i Podstawowa są przyjazne dla budżetu w porównaniu z wyższymi warstwami. Zapewniają one ekonomiczne rozwiązanie dla środowisk nieprodukcyjnych, które nie potrzebują pełnych funkcji i wydajności planów Premium. |
(App Service) Skorzystaj z rabatów i zapoznaj się z preferowanymi cenami: — Niższe środowiska z planami tworzenia i testowania . - Rezerwacje Azure i Plany oszczędności Azure dla dedykowanych zasobów obliczeniowych, które aprowizujesz w warstwie Premium V3 i Środowisku Usług Aplikacji. Użyj wystąpień zarezerwowanych dla stabilnych obciążeń, które mają przewidywalne wzorce użycia. |
Plany tworzenia i testowania zapewniają obniżone stawki dla usług platformy Azure, co czyni je opłacalnymi dla środowisk nieprodukcyjnych. Użyj zarezerwowanych instancji, aby z góry opłacać zasoby obliczeniowe i otrzymać znaczne rabaty. |
(Aplikacja internetowa) Monitoruj koszty, które ponoszą zasoby usługi App Service. Uruchom narzędzie do analizy kosztów w witrynie Azure Portal. Utwórz budżety i alerty, aby powiadomić interesariuszy. |
Możesz zidentyfikować wzrosty kosztów, nieefektywność lub nieoczekiwane wydatki na wczesnym etapie. Takie proaktywne podejście pomaga zapewnić kontrolę budżetową, aby zapobiec nadmiernemu wypłaceniu środków. |
(App Service) Skalowanie w przypadku spadku zapotrzebowania. Aby skalować do wewnątrz, zdefiniuj reguły skalowania, aby zmniejszyć liczbę wystąpień w Azure Monitor. | Zapobiegaj marnotrawsce i zmniejszaj niepotrzebne wydatki. |
Doskonałość operacyjna
Doskonałość operacyjna koncentruje się głównie na praktykach deweloperskich , obserwowalności i zarządzaniu wydaniami.
Zasady projektowania doskonałości operacyjnej oferują ogólną strategię projektowania do osiągnięcia tych celów dotyczących wymagań operacyjnych obciążenia roboczego.
Lista kontrolna projektu
Rozpocznij strategię projektowania opartą na liście kontrolnej przeglądu projektu dla doskonałości operacyjnej, aby definiować procesy dotyczące obserwowalności, testowania i wdrażania związane z aplikacjami webowymi.
Zarządzanie wydaniami: Zarządzaj wydaniami efektywnie, używając slotów wdrożeniowych. Aplikację można wdrożyć w slocie, przeprowadzić testy i zweryfikować jej funkcjonalność. Po weryfikacji możesz bezproblemowo przenieść aplikację do środowiska produkcyjnego. Ten proces nie wiąże się z dodatkowymi kosztami, ponieważ slot działa w tym samym środowisku maszyn wirtualnych co wystąpienie produkcyjne.
Użyj funkcji swap z podglądem (wielofazowe przełączanie). Funkcja Zamiana za pomocą wersji zapoznawczej umożliwia testowanie aplikacji w miejscach przejściowych względem ustawień produkcyjnych, a także rozgrzewania aplikacji. Po wykonaniu testów i przygotowaniu wszystkich niezbędnych ścieżek do pracy, można dokończyć zamianę, a aplikacja zacznie przyjmować ruch produkcyjny bez ponownego uruchamiania.
Uruchom testy automatyczne: Zanim wypromujesz wersję swojej aplikacji webowej, dokładnie przetestuj jej wydajność, funkcjonalność i integrację z innymi składnikami. Użyj Azure Load Testing, która integruje się z narzędziem Apache JMeter, popularnym narzędziem do testowania wydajności. Poznaj zautomatyzowane narzędzia do innych typów testów, takich jak Phantom na potrzeby testowania funkcjonalnego.
Automatyzacja wdrożeń: Użyj potoków CI/CD za pomocą Azure DevOps lub GitHub Actions, aby zautomatyzować wdrożenia i zmniejszyć ręczny nakład pracy Ciągłe wdrażanie w Azure App Service.
Wdrażanie niezmiennych jednostek: zaimplementuj wzorzec pieczęci wdrożeniowych , aby podzielić usługę App Service na niezmienne jednostki. Usługa App Service obsługuje korzystanie z kontenerów, które są z natury niezmienne. Rozważ użycie kontenerów niestandardowych dla swojej aplikacji internetowej usługi App Service.
Każdy moduł reprezentuje samodzielną jednostkę, którą można szybko skalować na zewnątrz lub do wewnątrz. Jednostki oparte na tej sygnaturze są tymczasowe i bezstanowe. Architektura bezstanowa upraszcza operacje i konserwację. Takie podejście jest idealne dla aplikacji o krytycznym znaczeniu. Aby zapoznać się z przykładem, zobacz Punkt odniesienia o znaczeniu krytycznym w usłudze App Service.
Użyj technologii infrastruktury jako kodu (IaC), takiej jak Bicep, aby tworzyć jednostki w sposób powtarzalny i spójny.
Bezpieczne środowiska produkcyjne: Utwórz oddzielne plany usługi App Service do uruchamiania środowisk produkcyjnych i przedprodukcyjnych. Nie wprowadzaj zmian bezpośrednio w środowisku produkcyjnym, aby zapewnić stabilność i niezawodność. Oddzielne wystąpienia umożliwiają elastyczność tworzenia i testowania przed wprowadzaniem zmian do środowiska produkcyjnego.
Korzystaj ze środowisk o niskich poziomach, aby eksplorować nowe funkcje i konfiguracje w sposób izolowany. Zachowaj efemeryczne środowiska programistyczne i testowe.
Zarządzanie certyfikatami: w przypadku domen niestandardowych należy zarządzać certyfikatami TLS.
Mają procesy pozyskiwania, odnawiania i weryfikowania certyfikatów. Przenieś te procesy do usługi App Service, jeśli to możliwe. Jeśli używasz własnego certyfikatu, musisz zarządzać jego odnawianiem. Wybierz podejście, które najlepiej odpowiada wymaganiom w zakresie zabezpieczeń.
Zalecenie | Korzyść |
---|---|
(Aplikacja internetowa) monitorować kondycję wystąpień i aktywować sondy kondycji wystąpień. Skonfiguruj określoną ścieżkę do obsługi żądań sondy monitorującej kondycję. |
Możesz szybko wykrywać problemy i podejmować niezbędne działania w celu utrzymania dostępności i wydajności. |
(Aplikacja internetowa) Włącz dzienniki diagnostyczne dla instancji i aplikacji. Częste rejestrowanie może spowalniać wydajność systemu, dodawać koszty magazynowania i wprowadzać ryzyko, jeśli masz niezabezpieczony dostęp do dzienników. Postępuj zgodnie z następującymi najlepszymi rozwiązaniami: — Zarejestruj odpowiedni poziom informacji. - Ustaw zasady przechowywania. — Zachowaj dziennik inspekcji autoryzowanych prób dostępu i nieautoryzowanych prób. — Traktuj dzienniki jako dane i zastosuj mechanizmy kontroli ochrony danych. |
Dzienniki diagnostyczne zapewniają cenny wgląd w zachowanie aplikacji. Monitorowanie wzorców ruchu i identyfikowanie anomalii. |
(Aplikacja internetowa) Skorzystaj z certyfikatów zarządzanych przez usługę App Service, aby przenieść zarządzanie certyfikatami do platformy Azure. | Usługa App Service automatycznie obsługuje procesy, takie jak pozyskiwanie certyfikatów, weryfikacja certyfikatów, odnawianie certyfikatów i importowanie certyfikatów z Key Vault. Alternatywnie przekaż certyfikat do usługi Key Vault i autoryzuj dostawcę zasobów usługi App Service w celu uzyskania do niego dostępu. |
(App Service) Sprawdź poprawność zmian aplikacji w slocie testowym przed zamianą go na slot produkcyjny. | Unikaj przestojów i błędów. Szybko przywróć ostatni znany dobry stan, jeśli wykryjesz problem po zamianie. |
Wydajność
Wydajność polega na utrzymaniu środowiska użytkownika nawet wtedy, gdy występuje wzrost obciążenia dzięki zarządzaniu pojemnością. Strategia obejmuje skalowanie zasobów, identyfikowanie i optymalizowanie potencjalnych wąskich gardeł oraz optymalizowanie pod kątem szczytowej wydajności.
Zasady projektowania wydajnościowego wydajności zapewniają strategię projektowania wysokiego poziomu w celu osiągnięcia tych celów dotyczących pojemności wobec oczekiwanego użycia.
Lista kontrolna projektu
Rozpocznij strategię projektowania na podstawie listy kontrolnej przeglądu efektywności wydajności , aby zdefiniować punkt odniesienia na podstawie kluczowych wskaźników wydajności dla aplikacji internetowych.
Identyfikowanie i monitorowanie wskaźników wydajności: ustaw cele dla kluczowych wskaźników aplikacji, takich jak liczba żądań przychodzących, czas potrzebny aplikacji na odpowiadanie na żądania, oczekujące żądania i błędy w odpowiedziach HTTP. Rozważ kluczowe wskaźniki jako część podstawowego planu wydajności dla obciążenia pracą.
Przechwyć metryki usługi App Service, które tworzą podstawę wskaźników wydajności. Zbierz dzienniki, aby uzyskać wgląd w użycie zasobów i działania. Użyj narzędzi do monitorowania wydajności aplikacji (APM), takich jak Application Insights, aby zbierać i analizować dane wydajności z aplikacji. Aby uzyskać więcej informacji, zobacz Dokumentacja danych monitorowania usługi App Service.
Uwzględnij instrumentację na poziomie kodu, śledzenie transakcji i profilowanie wydajności.
Ocena pojemności: Symuluj różne scenariusze użytkownika, aby określić optymalną pojemność, którą potrzebujesz do obsłużenia oczekiwanego ruchu. Użyj testowania obciążenia, aby dowiedzieć się, jak działa aplikacja na różnych poziomach obciążenia.
Wybierz odpowiednią warstwę: użyj dedykowanych zasobów obliczeniowych dla obciążeń produkcyjnych. Warstwy Premium V3 oferują większe jednostki SKU o zwiększonej pojemności pamięci i procesora, więcej instancji i więcej funkcji, takich jak nadmiarowość strefowa. Aby uzyskać więcej informacji, zapoznaj się z poziomem cenowym Premium V3.
Optymalizowanie strategii skalowania: jeśli to możliwe, użyj skalowania automatycznego zamiast ręcznego dostosowywania liczby wystąpień w miarę zmian obciążenia aplikacji. Dzięki skalowaniu automatycznej usługa App Service dostosowuje pojemność serwera na podstawie wstępnie zdefiniowanych reguł lub wyzwalaczy. Upewnij się, że przeprowadzasz odpowiednie testy wydajnościowe i ustawiasz odpowiednie reguły dla odpowiednich wyzwalaczy.
Jeśli priorytetem jest prostota podczas początkowej konfiguracji, użyj opcji skalowania automatycznego, która nie wymaga zdefiniowania reguł i trzeba ustawić tylko limity.
Mieć wystarczające zasoby łatwo dostępne, aby zapewnić optymalną wydajność. Przydziel zasoby odpowiednio, aby zachować cele wydajności, takie jak czas odpowiedzi lub przepływność. Rozważ nadmierne przydzielenie zasobów, gdy jest to konieczne.
Podczas definiowania reguł autoskalowania należy uwzględnić czas potrzebny na zainicjowanie aplikacji. Rozważ to obciążenie podczas podejmowania wszystkich decyzji dotyczących skalowania.
Użyj buforowania: Pobieranie informacji z zasobu, który nie zmienia się często i do którego dostęp jest kosztowny, wpływa na wydajność. Złożone zapytania, w tym sprzężenia i wiele wyszukiwań, współtworzą czas działania. Wykonaj buforowanie, aby zminimalizować czas przetwarzania i opóźnienie. Buforuj wyniki zapytań, aby uniknąć powtarzających się rund do bazy danych lub zaplecza i skrócić czas przetwarzania kolejnych żądań.
Aby uzyskać więcej informacji na temat używania lokalnej i rozproszonej pamięci podręcznej w obciążeniu, zobacz Pamięć podręczna.
Przejrzyj antywzorce wydajności: Aby upewnić się, że aplikacja internetowa działa i skalowuje się zgodnie z wymaganiami biznesowymi, unikaj typowych antywzorców. Poniżej przedstawiono niektóre antywzorce, które usługa App Service poprawia.
Antywzorzec Opis zajęty frontend Zadania intensywnie korzystające z zasobów mogą zwiększać czas odpowiedzi dla żądań użytkowników i powodować duże opóźnienia.
Przenoszenie procesów, które zużywają znaczne zasoby, do oddzielnego zaplecza. Użyj brokera komunikatów do kolejkowania zadań intensywnie korzystających z zasobów, które są przejmowane przez zaplecze do asynchronicznego przetwarzania.brak cache'owania Obsługa żądań z pośredniej pamięci podręcznej umieszczonej przed bazą danych zaplecza w celu redukcji opóźnień. hałaśliwy sąsiad Wielodostępne systemy współdzielą zasoby między dzierżawami. Aktywność jednego najemcy może mieć negatywny wpływ na korzystanie z systemu przez innego najemcę. Środowisko App Service Environment zapewnia w pełni izolowane i dedykowane środowisko do uruchamiania aplikacji usługi App Service.
Zalecenia
Zalecenie | Korzyść |
---|---|
(App Service) włączyć ustawienie zawsze włączone zawsze włączone, gdy aplikacje współużytkować pojedynczy plan usługi App Service. Aplikacje usługi App Service są automatycznie przenoszone do trybu gotowości, gdy są nieużywane, aby oszczędzać zasoby. Następne żądanie wyzwala zimny start, co może spowodować przekroczenie limitu czasu żądania. | Aplikacja nigdy nie jest rozładowywana przy włączonej funkcji Always On. |
(Web Apps) Rozważ użycie HTTP/2 dla aplikacji w celu zwiększenia wydajności protokołu. | Wybierz HTTP/2 zamiast HTTP/1.1, ponieważ HTTP/2 w pełni multipleksuje połączenia, ponownie używa połączeń, aby zmniejszyć narzut, i kompresuje nagłówki, aby zminimalizować transfer danych. |
Kompromisy
Może być konieczne dokonanie kompromisów projektowych, jeśli używasz metod z list kontrolnych filarów. Oto kilka przykładów zalet i wad.
gęstość i izolacja
o większej gęstości: umieść wiele aplikacji w ramach tego samego planu usługi App Service, aby zminimalizować zużycie zasobów. Wszystkie aplikacje współdzielą zasoby, takie jak procesor CPU i pamięć, co pozwala zaoszczędzić pieniądze i zmniejszyć złożoność operacyjną. Takie podejście optymalizuje również użycie zasobów. Aplikacje mogą używać zasobów bezczynnych z innej aplikacji, jeśli wzorce obciążenia zmieniają się w czasie.
Należy również wziąć pod uwagę wady, takie jak rywalizacja o zasoby. Na przykład wzrost użycia lub niestabilności aplikacji może mieć wpływ na wydajność innych aplikacji. Zdarzenia w jednej aplikacji mogą również przenikać do innych aplikacji w środowisku udostępnionym, co może mieć wpływ na bezpieczeństwo. W przypadku krytycznych aplikacji wymagających wysokiej dostępności i wydajności izolowane środowiska, takie jak App Service Environment V3 (ASE) zapewniają dedykowane zasoby, ale kosztują wyższe koszty. Rozważ użycie środowisk udostępnionych dla obciążeń niekrytycznych i izolowanych środowisk dla aplikacji o krytycznym znaczeniu.
Wyższa izolacja: Izolacja pomaga uniknąć zakłóceń. Ta strategia ma zastosowanie do zabezpieczeń, wydajności, a nawet segregacji środowisk deweloperskich, testowych i produkcyjnych.
Środowisko App Service Environment zapewnia lepszą kontrolę nad zabezpieczeniami i ochroną danych, ponieważ każda aplikacja może mieć własne ustawienia zabezpieczeń. W twoim środowisku mogą występować naruszenia, ponieważ izolacja ogranicza strefę oddziaływania. Rywalizacja o zasoby jest zminimalizowana z perspektywy wydajności. Izolacja umożliwia niezależne skalowanie na podstawie konkretnego zapotrzebowania i indywidualnego planowania pojemności.
W niekorzystnej sytuacji takie podejście jest droższe i wymaga rygoru operacyjnego.
niezawodna strategia skalowania
Dobrze zdefiniowana strategia skalowania gwarantuje, że aplikacja może obsługiwać różne obciążenia bez naruszania wydajności. Istnieją jednak kompromisy w zakresie kosztów. Operacje skalowania zajmują trochę czasu. Po przydzieleniu nowych zasobów aplikacja musi zostać prawidłowo zainicjowana, zanim będzie mogła efektywnie przetwarzać żądania. W celu zapewnienia sieci bezpieczeństwa można nadmiernie aprowizować zasoby (wystąpienia wstępne). Bez tej dodatkowej pojemności w fazie inicjowania może wystąpić opóźnienie obsługi żądań, co wpływa na środowisko użytkownika. Operacje skalowania automatycznego mogą być wyzwalane wystarczająco wcześnie, aby umożliwić odpowiednie inicjowanie zasobów, zanim klienci zaczną z nich korzystać.
W niekorzystnej sytuacji nadmiarowe zasoby kosztują więcej. Opłaty są naliczane za sekundę za każde wystąpienie, w tym wystąpienia wstępnie przygotowane. Wyższe warstwy obejmują uprzednio przygotowane instancje. Ustal, czy funkcje z droższymi planami cenowymi są warte inwestycji.
budowanie nadmiarowości
Redundancja oferuje odporność, ale również wiąże się z kosztami. Cele poziomu usług (SLO) dla obciążenia określają dopuszczalne progi wydajności. Nadmiarowość staje się marnotrawna, jeśli przekracza wymagania SLO. Oceń, czy nadmiarowość poprawia cele SLO, czy zwiększa niepotrzebną złożoność.
Należy również wziąć pod uwagę wady. Na przykład nadmiarowość w wielu regionach zapewnia wysoką dostępność, ale zwiększa złożoność i koszt z powodu synchronizacji danych, trybu awaryjnego i komunikacji między regionami. Ustal, czy nadmiarowość strefowa może spełnić cele SLO.
Zasady platformy Azure
Platforma Azure udostępnia obszerny zestaw wbudowanych zasad związanych z usługą App Service i jej zależnościami. Zestaw zasad platformy Azure może przeprowadzać inspekcję niektórych powyższych zaleceń. Możesz na przykład sprawdzić, czy:
Odpowiednie mechanizmy kontroli sieci są w miejscu. Można na przykład uwzględnić segmentację sieci, umieszczając usługę App Service w usłudze Azure Virtual Network za pośrednictwem iniekcji sieci wirtualnej, aby mieć większą kontrolę nad konfiguracją sieci. Aplikacja nie ma publicznych punktów końcowych i łączy się z usługami platformy Azure za pośrednictwem prywatnych punktów końcowych.
Kontrolki tożsamości są na miejscu. Na przykład aplikacja używa tożsamości zarządzanych do uwierzytelniania się względem innych zasobów. Wbudowane uwierzytelnianie usługi App Service (Easy Auth) weryfikuje żądania przychodzące.
Funkcje, takie jak zdalne debugowanie i uwierzytelnianie podstawowe, są wyłączone w celu zmniejszenia obszaru ataków.
Aby uzyskać kompleksowy ład, zapoznaj się z wbudowanymi definicjami usługi Azure Policy i innymi zasadami, które mogą mieć wpływ na bezpieczeństwo warstwy obliczeniowej.
Rekomendacje usługi Azure Advisor
usługa Azure Advisor to spersonalizowany konsultant ds. chmury, który pomaga stosować najlepsze rozwiązania w celu zoptymalizowania wdrożeń platformy Azure. Poniżej przedstawiono kilka zaleceń, które mogą pomóc zwiększyć niezawodność, bezpieczeństwo, efektywność kosztową, wydajność i doskonałość operacyjną wystąpień aplikacji internetowych.
Następne kroki
Rozważ następujące artykuły jako zasoby, które przedstawiają zalecenia wyróżnione w tym artykule.
Użyj tych architektur referencyjnych jako przykładów, jak zastosować te zalecenia do zadania.
Jeśli nigdy nie wdrożono aplikacji internetowej, zobacz Podstawowa aplikacja internetowa.
Aby uzyskać podstawową architekturę jako punkt wyjścia dla wdrożenia klasy produkcyjnej, zobacz Punkt odniesienia aplikacji internetowej o wysokiej dostępności strefowo nadmiarowej.
Skorzystaj z następującej dokumentacji produktu, aby utworzyć wiedzę na temat implementacji: