Udostępnij za pośrednictwem


Perspektywa platformy Azure Well-Architected Framework w usłudze Azure Functions

Azure Functions to bezserwerowa usługa obliczeniowa, która umożliwia uruchamianie kodu sterowanego zdarzeniami bez konieczności jawnego zarządzania infrastrukturą. Jako oferta usługi Funkcje jako Usługa (FaaS), Azure Functions upraszcza podstawową infrastrukturę, co pozwala skupić się na kodzie. Ta usługa automatycznie dostosowuje skalę na podstawie zapotrzebowania i pobiera opłaty tylko za zasoby zużywane podczas wykonywania.

W tym dokumencie przyjęto założenie, że jako architekt, przeglądasz drzewa decyzyjnego obliczeń i wybrałeś/wybrałaś usługę Azure Functions jako rozwiązanie obliczeniowe dla twojego obciążenia. Przedstawione tutaj wskazówki są zgodne z zasadami filarów Azure Well-Architected Framework.

Ważny

Jak używać tego przewodnika

Każda sekcja zawiera listę kontrolną projektu , która wyróżnia obszary architektury związane z określonymi strategiami projektowania związanymi z usługą Azure Functions.

Zalecenia oferują możliwości technologiczne, które ułatwiają wdrażanie tych strategii. Ta lista nie jest wyczerpująca, ale zawiera kluczowe zalecenia ułatwiające tworzenie lub optymalizowanie obciążeń za pomocą usługi Azure Functions.

Podstawowa architektura pokazująca kluczowe zalecenia: Projektowanie architektury funkcji bezserwerowych

Zakres technologii

Ten przegląd koncentruje się na powiązanych decyzjach dotyczących następujących zasobów platformy Azure:

  • Aplikacje funkcji

Notatka

Ten przewodnik po usłudze opiera się na wskazówkach zawartych w przewodniku usługi App Service (Web Apps). Azure Functions to bezserwerowa usługa obliczeniowa. Funkcje są wdrażane w planach App Service, które zapewniają podstawową infrastrukturę obliczeniową dla Twoich obciążeń. Możesz wybrać spośród kilku planów hostingu. Plan Zużycia jest w pełni zarządzany i nie obsługuje dostępu do skojarzonego wystąpienia usługi App Service, natomiast plan Dedykowany i Premium umożliwiają konfigurowanie i zarządzanie wystąpieniem usługi App Service. Zapoznaj się z przewodnikiem dotyczącym usługi App Service, aby zapoznać się z zaleceniami i kwestiami dotyczącymi wybierania planu hostingu w planie Dedykowanym lub Premium.

Niezawodność

Filar niezawodności zapewnia ciągłą funkcjonalność dzięki budowaniu odporności i umożliwieniu szybkiego odzyskiwania po awariach.

Zasady projektowania niezawodności zapewniają ogólne strategie projektowania, które mają zastosowanie do poszczególnych składników, przepływów systemu i ogólnego systemu.

Lista kontrolna projektu

Rozpocznij strategię projektowania na podstawie zasad projektowania niezawodności . Oceń jego znaczenie dla wymagań biznesowych, biorąc pod uwagę konkretne funkcje i konfiguracje usługi Azure Functions.

  • Informacje o wyzwalaczach: Upewnij się, że w pełni rozumiesz sposób wyzwalania usługi Azure Functions. Wyzwalacze obejmują żądania HTTP, czasomierze, kolejki i inne. Wybierz wyzwalacze zgodne z wymaganiami dotyczącymi niezawodności aplikacji.

    Jeśli na przykład funkcja przetwarza komunikaty z kolejki, upewnij się, że sama kolejka jest odporna i że komunikaty mogą być ponownie przetworzone w przypadku wystąpienia awarii.

  • Zaimplementuj ponawianie prób i trwałe wzorce: użyj wbudowanych zasad ponawiania prób w przypadku przejściowych błędów. W przypadku bardziej złożonych przepływów pracy rozważ użycie Durable Functions, które oferują zarządzanie stanami i koordynację w wielu wykonaniach funkcji.

    Durable Functions są szczególnie przydatne w scenariuszach wymagających niezawodności w długotrwałych przepływach pracy. Obsługują automatyczne ponawianie prób i trwałe zarządzanie zadaniami.

  • Zapewnij prawidłową obsługę wyjątków: Zaimplementuj niezawodną obsługę wyjątków, aby funkcje w przypadku awarii działały poprawnie. Rejestruj błędy i rozważ zaimplementowanie mechanizmów zgłaszania alertów w przypadku błędów krytycznych.

  • Planowanie skalowalności: usługa Azure Functions automatycznie skaluje się poziomo na podstawie zapotrzebowania. Upewnij się, że Twoja aplikacja została zaprojektowana do obsługi nagłych wzrostów obciążenia, testując jej wydajność pod obciążeniem.

    Rozważ użycie usługi Application Insights do monitorowania wydajności i śledzenia sposobu skalowania funkcji w czasie rzeczywistym.

  • Design for idempotency: Upewnij się, że funkcje można bezpiecznie powtórzyć bez powodowania niezamierzonych skutków ubocznych. Idempotencyjność ma kluczowe znaczenie dla funkcji, które współdziałają z systemami zewnętrznymi lub modyfikują dane.

  • Używanie rozszerzenia Durable Functions do długotrwałych operacji: w przypadku operacji wymagających orkiestracji lub długotrwałych procesów użyj rozszerzenia Durable Functions, aby zachować stan i zapewnić niezawodność w wielu krokach.

  • Monitorowanie kondycji rozwiązania: zintegruj rozwiązanie usługi Azure Functions z ogólnym systemem monitorowania kondycji obciążenia i alertów.

Zalecenia
Zalecenie Korzyść
Skonfiguruj automatycznych ponownych prób pod kątem błędów przejściowych. Dowiedz się więcej o obsługi błędów i ponawiania prób usługi Azure Functions Zwiększa niezawodność, automatycznie ponawiając próby wykonania nieudanych prób, zmniejszając prawdopodobieństwo utraty lub przerwy w działaniu danych.
Użyj Durable Functions do organizowania złożonych przepływów pracy i długotrwałych procesów. Dowiedz się więcej o Durable Functions. Zapewnia niezawodne wykonywanie długotrwałych przepływów pracy z wbudowanym zarządzaniem stanem i automatycznymi ponownymi próbami.
Zaimplementuj monitorowanie i rejestrowanie scentralizowane przy użyciu usługi Application Insights. Skonfiguruj usługę Application Insights. Usprawnia monitorowanie i rozwiązywanie problemów, zapewniając szczegółowy wgląd w wykonywanie funkcji i zależności.
Automatyczne skalowanie poziome na podstawie planu hostingu dla funkcji, rodzaju wyzwalacza oraz zapotrzebowania. Dowiedz się więcej o skalowaniu. Zapewnia, że aplikacja może obsługiwać wzrost ruchu bez ręcznej interwencji, zwiększając niezawodność i wydajność.

Bezpieczeństwo

Filar zabezpieczeń koncentruje się na zapewnieniu poufności, integralności i dostępności danych i usług.

Zasady projektowania zabezpieczeń oferują ogólną strategię zabezpieczania usługi Azure Functions, w tym najlepsze rozwiązania dotyczące uwierzytelniania, autoryzacji i ochrony danych.

Lista kontrolna projektu

Rozpocznij swoją strategię projektową od listy kontrolnej przeglądu projektu dla zabezpieczeń i zidentyfikuj potencjalne wrażliwości. Rozszerz strategię, włączając w razie potrzeby dodatkowe środki bezpieczeństwa.

  • Użyj tożsamości zarządzanych: włącz tożsamości zarządzane dla aplikacji funkcji, aby bezpiecznie uzyskiwać 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.

  • Zabezpiecz swoją aplikację funkcji za pomocą Microsoft Entra ID: ogranicz dostęp do swoich funkcji, konfigurując Azure Functions, aby wymagać uwierzytelniania Microsoft Entra ID. Skonfiguruj uwierzytelnianie w usłudze Microsoft Entra.

  • Stosowanie mechanizmów kontroli zabezpieczeń sieci: Zapoznaj się z dostępnymi opcjami dla modelu hostingu w celu zabezpieczenia konfiguracji sieci usługi Functions. Zabezpiecz sieć, aby spełniała Twoje wymagania.

Zalecenia
Zalecenie Korzyść
Włącz zarządzane tożsamości dla bezpiecznego dostępu do zasobów Azure. Włączanie tożsamości zarządzanych Upraszcza zarządzanie poświadczeniami, eliminując konieczność przechowywania i rotacji wpisów tajnych, zwiększając bezpieczeństwo.
Użyj usługi Azure Key Vault na potrzeby zarządzania wpisami tajnymi i regularnej rotacji. Zintegrować usługę Key Vault z usługą Azure Functions. Chroni poufne informacje, takie jak klucze interfejsu API i parametry połączenia, przechowując je bezpiecznie i automatyzując rotację tajnych danych, gdyż użycie tożsamości zarządzanej nie jest możliwe.
Zintegruj z siecią wirtualną i użyj prywatnych punktów końcowych . Zabezpiecza aplikacje funkcjonalne przez ograniczenie dostępu do sieci wewnętrznej i zapobieganie narażeniu na publiczny internet.

Integracja sieci wirtualnej i prywatne punkty końcowe nie są dostępne w planie hostingu modelu Zużycia.

Optymalizacja kosztów

Filar optymalizacji kosztów koncentruje się na identyfikowaniu sposobów zmniejszenia kosztów przy zachowaniu niezbędnych poziomów wydajności.

Zasady projektowania optymalizacji kosztów zapewniają strategie równoważenia kosztów i wydajności, zapewniając, że wdrożenie usługi Azure Functions jest wydajne i ekonomiczne.

Lista kontrolna projektu

Rozpocznij strategię optymalizacji kosztów od listy kontrolnej przeglądu projektu dla optymalizacji kosztówi dostosuj projekt, aby dopasować go do wymagań budżetowych.

  • Wybierz odpowiedni plan cenowy: Usługa Azure Functions oferuje wiele planów cenowych, w tym plan Konsumpcyjny, plan Premium i plan Dedykowany (App Service). Wybierz plan, który jest zgodny z zagadnieniami dotyczącymi obciążenia i kosztów. Porównanie planów cenowych.

    Plan Zużycie jest idealny dla nieprzewidywalnych obciążeń z rzadkimi wykonaniami, ponieważ płacisz tylko za czas wykonywania i zużyte zasoby. Gdy aplikacja jest bezczynna, nie są naliczane opłaty.

  • Optymalizowanie czasu wykonywania: zmniejsz czas wykonywania, optymalizując kod funkcji. Zminimalizuj użycie zależności zewnętrznych i zoptymalizuj logikę kodu, aby zmniejszyć czas trwania każdego wykonania.

  • Monitorowanie i analizowanie kosztów: Regularne monitorowanie użycia i kosztów aplikacji funkcji przy użyciu usługi Azure Cost Management oraz konfigurowanie alertów do wykrywania anomalii kosztów. Dowiedz się więcej o zarządzaniu kosztami i optymalizacji.

Zalecenia
Zalecenie Korzyść
Użyj planu Zużycie dla obciążeń z nieprzewidywalnym ruchem. Zrozum plan zużycia. Zmniejsza koszty, pobierając opłaty tylko za zasoby używane podczas wykonywania funkcji, unikając kosztów związanych z bezczynnymi zasobami.
Rezerwuj pojemność dla planów Elastic Premium lub planów Dedykowanej Usługi Aplikacyjnej, jeśli obciążenie jest przewidywalne. Obniża koszty dzięki obniżonym cenom dla przewidywalnych obciążeń ze stałymi wzorcami wykonywania.
Regularnie monitorować koszty i ustawiać alerty dotyczące anomalii. Skonfiguruj alerty dotyczące kosztów. Ułatwia wczesne identyfikowanie skoków kosztów, co pozwala na proaktywne zarządzanie i optymalizację.

Doskonałość operacyjna

Doskonałość operacyjna koncentruje się na procesach i procedurach wdrażania, obserwacji i zarządzania aplikacjami usługi Azure Functions.

Zasady projektowania doskonałości operacyjnej zapewniają strategie zapewniające efektywne wdrażanie, zarządzanie i monitorowanie aplikacji funkcji.

Lista kontrolna projektu

Rozpocznij strategię projektowania na podstawie zasad projektowych dotyczących doskonałości operacyjnej., które oferują strategie utrzymania jakości operacyjnej dla usługi Azure Functions.

  • Automatyzowanie wdrożeń: Użyj potoków ciągłej integracji/ciągłego wdrażania, aby zautomatyzować wdrażanie funkcji aplikacji. Integracja z usługą Azure DevOps lub GitHub Actions w celu zapewnienia bezproblemowych przepływów pracy wdrażania.

  • Implementowanie monitorowania kondycji: użyj usług Azure Monitor i Application Insights do śledzenia kondycji i wydajności funkcji. Skonfiguruj alerty dla krytycznych metryk i używaj niestandardowych pulpitów nawigacyjnych dla uzyskania wglądu w czasie rzeczywistym. Monitor funkcji platformy Azure.

  • Bezpieczne wdrażanie rozwiązania: Zapoznaj się z modelami wdrażania dostępnymi dla usługi Azure Functions i zastosuj model, który najlepiej spełnia twoje bezpieczne rozwiązania wdrażania.

  • Planowanie odzyskiwania po awarii: Wdrażanie strategii odzyskiwania po awarii przy użyciu transregionalnego odzyskiwania po awarii i strefy dostępności dla kluczowych funkcji. Plan dla DR.

Zalecenia
Zalecenie Korzyść
Automatyzuj wdrożenia za pomocą pipeline'ów CI/CD przy użyciu Azure DevOps lub GitHub Actions. Skonfiguruj CI/CD Poprawia spójność wdrożenia, zmniejsza błędy ręczne i przyspiesza wprowadzanie na rynek nowych funkcji.
Użyj slotów wdrożeniowych do testowania zmian przed wydaniem produkcyjnym. Wdrażanie przy użyciu slotów. Zmniejsza ryzyko wprowadzenia błędów do środowiska produkcyjnego i umożliwia bezpieczne wycofywanie w przypadku wykrycia problemów.
Zaimplementuj scentralizowane monitorowania przy użyciu usług Application Insights i Azure Monitor przy użyciu dostępnych metryk . Zwiększa wgląd w wydajność funkcji, pomagając szybko identyfikować i rozwiązywać problemy.

Wydajność

Efektywność wydajności zapewnia optymalne doświadczenie użytkownika nawet w przypadku zwiększonego obciążenia dzięki efektywnemu zarządzaniu przepustowością.

Zasady projektowania wydajności zapewniają strategie ułatwiające projektowanie aplikacji funkcjonalnych spełniających wymagania dotyczące wydajności, nawet w miarę wzrostu zapotrzebowania.

Lista kontrolna projektu

Rozpocznij strategię wydajności za pomocą zasad projektowania wydajnościi zaprojektuj aplikacje funkcji w celu skalowania i optymalnego działania.

  • Optymalizowanie zimnego startu: Zminimalizuj wpływ zimnych startów, korzystając z planów Premium Flex z wstępnie rozgrzanym wystąpieniem lub upewniając się, że funkcje pozostają rozgrzane, dzięki strategiom takim jak wyzwalacz rozgrzewania Azure Functions.

  • Optymalizowanie kodu funkcji: napisz wydajny kod, aby skrócić czas wykonywania i zużycie zasobów. Unikaj długotrwałych operacji i optymalizuj wywołania zewnętrznych usług.

  • Włącz skalowanie automatyczne: Wykorzystaj możliwości skalowania automatycznego w usłudze Azure Functions, aby skalować się automatycznie w zależności od zapotrzebowania. Upewnij się, że reguły skalowania są dobrze zdefiniowane i przetestowane.

  • Monitorowanie metryk wydajności: użyj usługi Application Insights do monitorowania kluczowych metryk wydajności, takich jak czas wykonywania, użycie procesora CPU i pamięci. Skonfiguruj alerty pod kątem obniżenia wydajności. Monitorowanie wydajności.

Zalecenia
Zalecenie Korzyść
Użyj planu Elastic Premium z wstępnie rozgrzanym wystąpieniem, aby zminimalizować opóźnienie zimnego rozruchu. Zrozum zimny start. Zmniejsza opóźnienie związane z zimnymi startami, skraca czas odpowiedzi dla aplikacji wrażliwych na czas.
Optymalizowanie kodu funkcji w celu skrócenia czasu wykonywania. Najlepsze rozwiązania dotyczące usługi Azure Functions. Zwiększa wydajność, skracając czas i zasoby wymagane do wykonania każdej funkcji.
Włącz skalowanie automatyczne, aby automatycznie dostosowywać pojemność na podstawie zapotrzebowania. Skonfiguruj skalowanie automatyczne. Zapewnia, że aplikacje funkcji mogą obsługiwać różne obciążenia bez ręcznej interwencji, utrzymując wydajność pod presją.

Zasady platformy Azure

Platforma Azure udostępnia kompleksowy zestaw wbudowanych zasad do inspekcji i wymuszania konfiguracji dla usługi Azure Functions i ich zależności. Możesz użyć usługi Azure Policy, aby upewnić się, że aplikacje funkcji są zgodne ze standardami organizacyjnymi dotyczącymi zabezpieczeń, optymalizacji kosztów i wydajności.

Możesz na przykład wymusić zasady, które wymagają:

  • Tożsamości zarządzane mają być włączone dla wszystkich aplikacji funkcji.
  • Aplikacje funkcyjne do używania tylko prywatnych punktów końcowych dla bezpieczeństwa sieci.
  • Należy włączyć rejestrowanie diagnostyczne we wszystkich aplikacjach funkcji.

Przejrzyj wbudowane definicje Azure Policy , aby znaleźć zasady zgodne z wymaganiami organizacji.

Rekomendacje usługi Azure Advisor

Azure Advisor to spersonalizowany konsultant ds. chmury, który pomaga stosować najlepsze rozwiązania w celu zoptymalizowania wdrożeń platformy Azure. Zalecenia doradcy są dostosowane do filarów Well-Architected Framework.

Aby uzyskać więcej informacji, zobacz zalecenia w Azure Advisor.

Następne kroki

Rozważ następujące zasoby, aby dokładniej poznać zalecenia wyróżnione w tym dokumencie: