Udostępnij przez


Najlepsze rozwiązania dotyczące architektury dla usługi Azure Functions

Azure Functions to bezserwerowa usługa obliczeniowa, której można użyć do uruchamiania kodu opartego na zdarzeniach bez konieczności bezpośredniego zarządzania infrastrukturą. Azure Functions to oferta funkcji jako usługi, która abstrakcyjnie zarządza podstawową infrastrukturą. Ta abstrakcja umożliwia skoncentrowanie się na kodzie. Usługa Azure Functions automatycznie skaluje się na podstawie zapotrzebowania i pobiera opłaty tylko za zasoby używane podczas działania.

W tym artykule założono, że jako architekt przejrzeliśmy drzewo decyzyjne obliczeń i wybraliśmy usługę Azure Functions jako rozwiązanie obliczeniowe dla obciążenia. Wskazówki w tym artykule zawierają zalecenia dotyczące architektury, dopasowane do zasad filarów Well-Architected Framework.

Zakres technologii

Ten przegląd koncentruje się na powiązanych decyzjach dotyczących następującego zasobu platformy Azure:

  • Aplikacje funkcjonalne

Note

Ten przewodnik po usłudze opiera się na wskazówkach w przewodniku po usłudze Azure App Service (Web Apps). Azure Functions to bezserwerowa usługa obliczeniowa. Funkcje są wdrażane w App Service plans, które zapewniają podstawową infrastrukturę obliczeniową dla Twojego obciążenia roboczego. Możesz wybrać spośród kilku planów hostingu.

Plan Zużycie jest w pełni zarządzany i nie obsługuje dostępu do skojarzonego wystąpienia usługi App Service. Plany hostingu dedykowanego i premium umożliwiają konfigurowanie i zarządzanie wystąpieniem usługi App Service. Zapoznaj się z przewodnikiem usługi App Service, aby zapoznać się z zaleceniami i zagadnieniami dotyczącymi wybierania planu hostingu Dedykowane lub Premium.

Reliability

Celem filaru niezawodności jest zapewnienie ciągłej funkcjonalności dzięki tworzeniu wystarczającej odporności i możliwoś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 projektowania obciążenia

Rozpocznij strategię projektu na podstawie listy kontrolnej przeglądu niezawodności projektu. Określ jego znaczenie dla wymagań biznesowych, pamiętając o określonych funkcjach i konfiguracjach usługi Azure Functions. Rozszerz strategię w celu uwzględnienia większej liczby podejść zgodnie z potrzebami.

  • Omówienie wyzwalaczy: 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 dla przejściowych niepowodzeń. W przypadku bardziej złożonych przepływów pracy rozważ użycie rozszerzenia Durable Functions usługi Azure Functions. Zapewnia ona zarządzanie stanami i koordynację w wielu operacjach funkcji.

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

  • Upewnij się, że obsługa wyjątków jest prawidłowa: Zaimplementuj niezawodną obsługę wyjątków, aby funkcje łagodnie ulegały awarii. 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ę w zależności od 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.

  • Projektowanie pod kątem idempotentności: Upewnij się, że funkcje można bezpiecznie ponowić 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żywaj 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 zgłaszania alertów.

Zalecenia dotyczące konfiguracji

Recommendation Benefit
Skonfiguruj automatyczne ponawianie prób dla błędów przejściowych. Dowiedz się więcej na temat obsługi błędów i ponawiania prób w usłudze Azure Functions. Zwiększa niezawodność, automatycznie ponawiając próby nieudanych przebiegów, co zmniejsza prawdopodobieństwo utraty lub przerwy w działaniu danych.
Użyj Durable Functions do orkiestracji złożonych przepływów pracy i długotrwałych procesów. Dowiedz się więcej o Durable Functions. Zapewnia niezawodną obsługę długotrwałych przepływów pracy z wbudowanym zarządzaniem stanem i automatycznymi ponawianiami prób.
Zaimplementuj monitorowanie i scentralizowane rejestrowanie przy użyciu usługi Application Insights. Skonfiguruj usługę Application Insights. Usprawnia monitorowanie i rozwiązywanie problemów, zapewniając szczegółowe informacje o operacjach i zależnościach funkcji.
Automatyczne skalowanie w poziomie na podstawie planu hostingu usługi Functions, typu wyzwalacza i zapotrzebowania. Dowiedz się więcej o skalowaniu. Pomaga zapewnić, że aplikacja może obsługiwać wzrost ruchu bez ręcznej interwencji, co zwiększa niezawodność i wydajność.
Użyj stref dostępności, aby zwiększyć odporność. Plan Flex Consumption obsługuje wdrażanie w różnych strefach dostępności w celu zapewnienia odporności strefowo nadmiarowej. Zapewnia ochronę przed awariami na poziomie centrum danych dzięki automatycznemu przejściu w tryb failover w różnych strefach dostępności, zwiększając ogólną niezawodność aplikacji.

Zabezpieczenia

Celem filaru Zabezpieczenia jest zapewnienie gwarancji dotyczących poufności, integralności i dostępności 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ół usługi Azure Functions.

Lista kontrolna projektowania obciążenia

Rozpocznij strategię projektowania na podstawie listy kontrolnej przeglądu projektu pod kątem zabezpieczeń i identyfikowania luk w zabezpieczeniach i mechanizmów kontroli w celu poprawy stanu zabezpieczeń. Rozszerz strategię w celu uwzględnienia większej liczby podejść zgodnie z potrzebami.

  • 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.

  • Zabezpiecz aplikację funkcji przy użyciu identyfikatora Entra firmy Microsoft: Ogranicz dostęp do funkcji, konfigurując usługę Azure Functions, aby wymagać uwierzytelniania identyfikatora Entra firmy Microsoft.

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

Zalecenia dotyczące konfiguracji

Recommendation Benefit
Włącz tożsamości zarządzane na potrzeby bezpiecznego dostępu do zasobów platformy Azure. Włączanie tożsamości zarządzanych Upraszcza zarządzanie poświadczeniami, eliminując konieczność przechowywania i rotacji tajemnic. Takie podejście zwiększa 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. Pomaga chronić poufne informacje, takie jak klucze interfejsu API i parametry połączenia, poprzez ich bezpieczne przechowywanie i automatyczną 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 Zużycie.
Używaj dostępu do Key Vault i App Configuration z ograniczeniami dostępu na poziomie sieci. Plan Konsumpcji Flex obsługuje odwołania ograniczone sieciowo do usług Key Vault i App Configuration. Zwiększa bezpieczeństwo, umożliwiając bezpieczny dostęp do konfiguracji i wpisów tajnych za pośrednictwem łączności z siecią prywatną, co zmniejsza narażenie na publiczne punkty końcowe.

Optymalizacja kosztów

Optymalizacja kosztów koncentruje się na wykrywaniu wzorców wydatków, określaniu priorytetów inwestycji w krytycznych obszarach i optymalizacji w innych w celu spełnienia budżetu organizacji przy jednoczesnym spełnieniu wymagań biznesowych.

Zasady projektowania optymalizacji kosztów zapewniają strategię projektowania wysokiego poziomu w celu osiągnięcia tych celów i podejmowania kompromisów zgodnie z potrzebami w projekcie technicznym związanym z usługą Azure Functions i jego środowiskiem.

Lista kontrolna projektowania obciążenia

Rozpocznij strategię projektową, opierając się na liście kontrolnej przeglądu projektu dla optymalizacji kosztów związanych z inwestycjami. Dostosuj projekt tak, aby obciążenie było dostosowane do budżetu przydzielonego dla obciążenia. Projekt powinien korzystać z odpowiednich możliwości platformy Azure, monitorować inwestycje i znajdować możliwości optymalizacji w czasie.

  • Wybierz odpowiedni plan cenowy: Usługa Azure Functions ma wiele planów cenowych, w tym plan zużycie, plan Premium i plan dedykowany (App Service). Wybierz plan cenowy , który jest zgodny z obciążeniem i zagadnieniami dotyczącymi kosztów.

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

  • Optymalizowanie czasu operacji: Zmniejsz czas operacji, optymalizując kod funkcji. Zminimalizuj użycie zależności zewnętrznych i zoptymalizuj logikę kodu, aby skrócić czas trwania każdej operacji.

  • Monitorowanie i analizowanie kosztów: Regularne monitorowanie użycia i kosztów aplikacji funkcji przy użyciu usługi Microsoft Cost Management i konfigurowanie alertów w celu wykrywania anomalii kosztów.

Zalecenia dotyczące konfiguracji

Recommendation Benefit
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, co pozwala uniknąć kosztów związanych z bezczynnymi zasobami.
Rozważ plan Flex Consumption dla obciążeń wymagających zarówno wydajności kosztów, jak i zaawansowanych funkcji. Zobacz Flex Consumption. Łączy korzyści z kosztów bezserwerowych z rozszerzonymi możliwościami, takimi jak strefy dostępności i integracja z siecią wirtualną, zapewniając optymalizację kosztów z ulepszoną niezawodnością i funkcjami zabezpieczeń.
Zarezerwuj pojemność dla planów Elastic Premium lub planów Dedicated App Service, jeśli obciążenie jest przewidywalne. Obniża koszty dzięki obniżonym cenom dla przewidywalnych obciążeń ze stałymi wzorcami użycia.
Regularnie monitoruj koszty i konfiguruj alerty dotyczące anomalii. Monitorowanie kosztów przy użyciu alertów. Ułatwia wczesne identyfikowanie skoków kosztów, co umożliwia proaktywne zarządzanie i optymalizację.

Doskonałość operacyjna

Doskonałość operacyjna koncentruje się przede wszystkim na procedurach dotyczących praktyk programistycznych, możliwości obserwacji i zarządzania wydaniami.

Zasady projektowania doskonałości operacyjnej stanowią strategię projektowania wysokiego poziomu w celu osiągnięcia tych celów dla wymagań operacyjnych obciążenia.

Lista kontrolna projektowania obciążenia

Rozpocznij strategię projektowania na podstawie listy kontrolnej przeglądu projektu dla doskonałości operacyjnej, aby definiować procesy obserwowalności, testowania i wdrażania w kontekście usługi Azure Functions.

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

  • Implementowanie monitorowania kondycji: Śledzenie kondycji i wydajności funkcji przy użyciu usług Azure Monitor i Application Insights. Skonfiguruj alerty dla krytycznych metryk i używaj niestandardowych pulpitów nawigacyjnych dla uzyskania wglądu w czasie rzeczywistym. Aby uzyskać więcej informacji, zobacz Monitorowanie usługi Azure Functions.

  • 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 praktyki wdrażania.

  • Planowanie odzyskiwania po awarii (DR):Implementowanie strategii odzyskiwania po awarii przy użyciu stref odzyskiwania po awarii między regionami i stref dostępności dla funkcji krytycznych.

Zalecenia dotyczące konfiguracji

Recommendation Benefit
Automatyzuj wdrożenia za pomocą potoków CI/CD przy użyciu azure devops lub github actions. Konfigurowanie CI/CD. Poprawia spójność wdrożenia, zmniejsza błędy ręczne i przyspiesza wprowadzanie na rynek nowych funkcji.
Użyj miejsc wdrożenia , aby wprowadzić zmiany przejściowe przed wydaniem produkcyjnym. Zmniejsza ryzyko wprowadzenia błędów do środowiska produkcyjnego i umożliwia bezpieczne wycofywanie w przypadku wykrycia problemów.
Zaimplementuj scentralizowane monitorowanie przy użyciu usług Application Insights i Azure Monitor przy użyciu dostępnych metryk. Zwiększa wgląd w wydajność funkcji, co pomaga szybko identyfikować i rozwiązywać problemy.

Efektywność operacyjna

Efektywność wydajności polega na utrzymywaniu doświadczenia użytkownika nawet wtedy, gdy występuje wzrost obciążenia dzięki zarządzaniu wydajnością. Strategia obejmuje skalowanie zasobów, identyfikowanie i optymalizowanie potencjalnych wąskich gardeł oraz optymalizowanie pod kątem szczytowej wydajności.

Zasady projektowania wydajności zapewniają ogólną strategię projektowania w celu osiągnięcia tych celów pojemności w stosunku do oczekiwanego użycia.

Lista kontrolna projektowania obciążenia

Rozpocznij strategię projektowania w oparciu o listę kontrolną przeglądu projektu pod kątem wydajności operacyjnej. Zdefiniuj punkt odniesienia oparty na kluczowych wskaźnikach wydajności dla usługi Azure Functions.

  • Optymalizowanie zimnych startów: Zminimalizuj skutki zimnych startów, korzystając z planów Premium Flex, które zapewniają przygotowane instancje, lub upewnij się, że funkcje pozostają aktywne, używając strategii, takich jak wyzwalacz rozgrzewania funkcji Azure.

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

  • Włącz skalowanie automatyczne: Korzystaj z funkcji skalowania automatycznego w usłudze Azure Functions, aby automatycznie rozszerzać skalowanie na podstawie zapotrzebowania. Upewnij się, że reguły skalowania są dobrze zdefiniowane i przetestowane.

  • Monitorowanie metryk wydajności: Usługa Application Insights służy do monitorowania kluczowych metryk wydajności, takich jak czas operacji, procesor CPU i użycie pamięci. Skonfiguruj alerty pod kątem obniżenia wydajności.

Zalecenia dotyczące konfiguracji

Recommendation Benefit
Użyj planu Elastic Premium z prewarmed instancją, aby zminimalizować opóźnienie rozruchu zimnego. Zrozumienie zimnych startów. Zmniejsza opóźnienie związane z zimnymi startami, co skraca czas odpowiedzi aplikacji wrażliwych na czas.
Zoptymalizuj kod funkcji , aby skrócić czas działania. Poznaj najlepsze rozwiązania dotyczące usługi Azure Functions. Zwiększa wydajność, skracając czas i zasoby wymagane do uruchomienia każdej funkcji.
Umożliwia automatyczne skalowanie w celu automatycznego dostosowywania pojemności na podstawie zapotrzebowania. Konfigurowanie skalowania automatycznego. Zapewnia, że aplikacje funkcji mogą obsługiwać różne obciążenia bez ręcznej interwencji. Takie podejście pomaga utrzymać wydajność pod presją.

Zasady platformy Azure

Platforma Azure udostępnia obszerny zestaw wbudowanych zasad związanych z usługą Azure Functions 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:

  • Wszystkie aplikacje funkcji mają włączone zarządzane tożsamości.
  • Aplikacje funkcji używają tylko prywatnych punktów końcowych na potrzeby zabezpieczeń sieci.
  • Rejestrowanie diagnostyczne jest włączone dla wszystkich aplikacji funkcyjnych.

Aby uzyskać kompleksowe zarządzanie, zapoznaj się z wbudowanymi definicjami Azure Policy i innymi zasadami, które mogą mieć wpływ na bezpieczeństwo warstwy sieciowej.

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.

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

Przykładowa architektura

Podstawowa architektura, która demonstruje kluczowe zalecenia: projektowanie architektury aplikacji internetowych.

Dalsze kroki

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