Porównanie opcji hostingu usługi Azure Functions
Podczas tworzenia aplikacji funkcji na platformie Azure należy wybrać plan hostingu dla aplikacji. Platforma Azure udostępnia następujące opcje hostingu dla kodu funkcji:
Opcja hostingu | Usługa | Dostępność | Obsługa kontenerów |
---|---|---|---|
Plan zużycia | Azure Functions | Wersja ogólnie dostępna | Brak |
Plan Flex Consumption | Azure Functions | Podgląd | Brak |
Plan Premium | Azure Functions | Ogólna dostępność | Linux |
Dedykowany plan | Azure Functions | Ogólna dostępność | Linux |
Aplikacje kontenera | Azure Container Apps | Ogólna dostępność | Linux |
aplikacja systemu Azure Infrastruktura usługi ułatwia hostowanie usługi Azure Functions na maszynach wirtualnych z systemami Linux i Windows. Wybrana opcja hostingu określa następujące zachowania:
- Sposób skalowania aplikacji funkcji.
- Zasoby dostępne dla każdego wystąpienia aplikacji funkcji.
- Obsługa zaawansowanych funkcji, takich jak łączność z usługą Azure Virtual Network.
- Obsługa kontenerów systemu Linux.
Wybrany plan ma również wpływ na koszty uruchamiania kodu funkcji.
Omówienie planów
Poniżej przedstawiono podsumowanie korzyści z różnych opcji hostingu:
Plan Zużycie
Plan Zużycie jest domyślnym planem hostingu. Płatność za zasoby obliczeniowe tylko wtedy, gdy funkcje są uruchomione (płatność zgodnie z rzeczywistym użyciem) z automatycznym skalowaniem. W planie Zużycie wystąpienia hosta usługi Functions są dynamicznie dodawane i usuwane w zależności od liczby zdarzeń przychodzących.
Plan Flex Consumption
Uzyskaj wysoką skalowalność dzięki wyborom obliczeniowym, sieciom wirtualnym i rozliczaniom płatności zgodnie z rzeczywistym użyciem. W planie Flex Consumption wystąpienia hosta usługi Functions są dynamicznie dodawane i usuwane na podstawie skonfigurowanej współbieżności wystąpienia oraz liczby zdarzeń przychodzących.
Zimne starty można zmniejszyć, określając liczbę wstępnie aprowizowania (zawsze gotowych) wystąpień. Skaluje się automatycznie na podstawie zapotrzebowania.
Plan Premium
Automatyczne skalowanie na podstawie zapotrzebowania przy użyciu wstępnie uruchomionych procesów roboczych, które uruchamiają aplikacje bez opóźnień po bezczynności, działają w bardziej zaawansowanych wystąpieniach i łączą się z sieciami wirtualnymi.
Rozważ plan usługi Azure Functions w warstwie Premium w następujących sytuacjach:
- Aplikacje funkcji działają w sposób ciągły lub niemal ciągły.
- Chcesz mieć większą kontrolę nad wystąpieniami i chcesz wdrożyć wiele aplikacji funkcji w tym samym planie przy użyciu skalowania opartego na zdarzeniach.
- Masz dużą liczbę małych wykonań i wysoki rachunek za wykonanie, ale niskie GB sekund w planie Zużycie.
- Potrzebujesz więcej opcji procesora CPU lub pamięci niż są udostępniane przez plany zużycia.
- Kod musi działać dłużej niż maksymalny czas wykonywania dozwolony w planie Zużycie.
- Wymagana jest łączność sieci wirtualnej.
- Chcesz udostępnić niestandardowy obraz systemu Linux, w którym będą uruchamiane funkcje.
Dedykowany plan
Uruchamianie funkcji w ramach planu usługi App Service według zwykłych stawek planu usługi App Service. Najlepsze w przypadku długotrwałych scenariuszy, w których nie można używać rozszerzenia Durable Functions.
Rozważ plan usługi App Service w następujących sytuacjach:
- Musisz mieć w pełni przewidywalne rozliczenia lub ręcznie skalować wystąpienia.
- Chcesz uruchamiać wiele aplikacji internetowych i aplikacji funkcji w tym samym planie
- Potrzebujesz dostępu do opcji większych rozmiarów obliczeniowych.
- Pełna izolacja obliczeniowa i bezpieczny dostęp sieciowy zapewniany przez środowisko App Service Environment (ASE).
- Wysokie użycie pamięci i wysoka skala (ASE).
Aplikacje kontenera
Tworzenie i wdrażanie konteneryzowanych aplikacji funkcji w w pełni zarządzanym środowisku hostowanym przez usługę Azure Container Apps.
Użyj modelu programowania usługi Azure Functions, aby tworzyć aplikacje natywne dla zdarzeń oparte na zdarzeniach, bezserwerowe i natywne dla chmury. Uruchom funkcje wraz z innymi mikrousługami, interfejsami API, witrynami internetowymi i przepływami pracy jako programy hostowane w kontenerach.
Rozważ hostowanie funkcji w usłudze Container Apps w następujących sytuacjach:
- Chcesz spakować biblioteki niestandardowe przy użyciu kodu funkcji, aby obsługiwać aplikacje biznesowe.
- Należy przeprowadzić migrację wykonywania kodu z aplikacji lokalnych lub starszych do natywnych mikrousług w chmurze uruchomionych w kontenerach.
- Chcesz uniknąć obciążeń i złożoności zarządzania klastrami Kubernetes i dedykowanymi obliczeniami.
- Potrzebujesz wysokiej mocy obliczeniowej zapewnianej przez dedykowane zasoby obliczeniowe procesora CPU dla funkcji.
Czas trwania limitu czasu aplikacji funkcji
Właściwość functionTimeout
w pliku projektu host.json określa limit czasu dla funkcji w aplikacji funkcji. Ta właściwość ma zastosowanie specjalnie do wykonywania funkcji. Po uruchomieniu wykonywania funkcji wyzwalacz musi zwrócić/odpowiedzieć w czasie trwania limitu czasu.
W poniższej tabeli przedstawiono wartości domyślne i maksymalne (w minutach) dla określonych planów:
Planowanie | Wartość domyślna | Maksymalna1 |
---|---|---|
Plan Zużycie | 5 | 10 |
Plan Flex Consumption | 30 | Nieograniczone3 |
Plan Premium | 302 | Nieograniczone3 |
Dedykowany plan | 302 | Nieograniczone3 |
Aplikacje kontenera | 305 | Nieograniczone3 |
- Niezależnie od ustawienia limitu czasu aplikacji funkcji maksymalny czas, przez który funkcja wyzwalana przez protokół HTTP może odpowiedzieć na żądanie, wynosi 230 sekund.
- Domyślny limit czasu dla wersji 1.x środowiska uruchomieniowego usługi Functions jest nieograniczony.
- Gwarantowane przez maksymalnie 60 minut. Stosowanie poprawek systemu operacyjnego i środowiska uruchomieniowego, stosowanie poprawek luk w zabezpieczeniach i skalowanie w zachowaniach może nadal anulować wykonywanie funkcji.
- W planie Flex Consumption host nie wymusza limitu czasu wykonywania. Obecnie nie ma gwarancji, ponieważ platforma może wymagać przerwania wystąpień podczas skalowania, wdrożeń lub stosowania aktualizacji.
- Gdy minimalna liczba replik jest ustawiona na zero, domyślny limit czasu zależy od określonych wyzwalaczy używanych w aplikacji.