Azure Functions hostingopties
Wanneer u een functie-app maakt in Azure, moet u een hostingplan voor uw app kiezen. Er zijn drie eenvoudige hostingplannen beschikbaar voor Azure Functions:Verbruiksplan, Premium-abonnementen Dedicated-abonnement (App Service). Alle hostingplannen zijn algemeen beschikbaar (GA) op zowel Linux als Windows virtuele machines.
Het hostingplan dat u kiest, bepaalt het volgende gedrag:
- Hoe uw functie-app wordt geschaald.
- De resources die beschikbaar zijn voor elk exemplaar van de functie-app.
- Ondersteuning voor geavanceerde functionaliteit, zoals Azure Virtual Network connectiviteit.
Dit artikel bevat een gedetailleerde vergelijking tussen de verschillende hostingplannen, samen met hosting op basis van Kubernetes.
Notitie
Als u ervoor kiest om uw functies te hosten in een Kubernetes-cluster, kunt u overwegen Azure Arc Kubernetes-cluster te gebruiken. Hosting op een Azure Arc Kubernetes-cluster met ingeschakelde functie is momenteel in preview. Zie App Service, Functions en Logic Apps op Azure Arc voor meer Azure Arc.
Overzicht van plannen
Hier volgt een overzicht van de voordelen van de drie belangrijkste hostingplannen voor Functions:
| Plannen | Voordelen |
|---|---|
| Verbruiksabonnement | Automatisch schalen en alleen betalen voor rekenbronnen wanneer uw functies worden uitgevoerd. In het verbruiksplan worden exemplaren van de Functions-host dynamisch toegevoegd en verwijderd op basis van het aantal binnenkomende gebeurtenissen. ✔ standaardhostingplan. ✔ alleen betalen wanneer uw functies worden uitgevoerd. ✔ wordt automatisch geschaald, zelfs tijdens perioden met hoge belasting. |
| Premium-abonnement | Wordt automatisch geschaald op basis van de vraag met behulp van vooraf opgewarmde werksters die toepassingen zonder vertraging uitvoeren na inactief te zijn, worden uitgevoerd op krachtigere instanties en verbinding maken met virtuele netwerken. Houd rekening met Azure Functions Premium plan in de volgende situaties: ✔ Uw functie-apps worden continu of bijna continu uitgevoerd. ✔ U hebt een groot aantal kleine uitvoeringen en een hoge uitvoeringsrekening, maar lage GB seconden in het verbruiksplan. ✔ u meer CPU- of geheugenopties nodig hebt dan is opgegeven in het verbruiksplan. ✔ Uw code moet langer worden uitgevoerd dan de maximale uitvoeringstijd die is toegestaan voor het verbruiksplan. ✔ u functies nodig die niet beschikbaar zijn in het verbruiksplan, zoals virtuele netwerkconnectiviteit. ✔ u een aangepaste Linux-afbeelding wilt leveren waarop u uw functies kunt uitvoeren. |
| Toegewezen abonnement | Voer uw functies uit binnen een App Service-abonnement met App Service abonnementstarieven. Dit is het beste voor langlopende scenario'Durable Functions niet kunnen worden gebruikt. Overweeg een App Service plan in de volgende situaties: ✔ U bestaande, onderbelegde VM's hebt die al andere App Service uitvoeren. ✔ Predictive scaling en kosten zijn vereist. |
De vergelijkingstabellen in dit artikel bevatten ook de volgende hostingopties, die de meeste controle en isolatie bieden voor het uitvoeren van uw functie-apps.
| Hostingoptie | Details |
|---|---|
| ASE | App Service Environment (ASE) is een App Service-functie die een volledig geïsoleerde en toegewezen omgeving biedt voor het veilig uitvoeren van App Service apps op grote schaal. AS-toepassingen zijn geschikt voor toepassingsworkloads waarvoor het volgende is vereist: ✔ zeer grootschalig. ✔ volledige rekenisolatie en beveiligde netwerktoegang. ✔ hoog geheugengebruik. |
| Kubernetes (Direct of Azure Arc) |
Kubernetes biedt een volledig geïsoleerde en toegewezen omgeving die wordt uitgevoerd op het Kubernetes-platform. Kubernetes is geschikt voor toepassingsworkloads waarvoor het volgende is vereist: ✔ aangepaste hardwarevereisten. ✔ isolatie en beveiligde netwerktoegang. ✔ mogelijkheid om uit te voeren in een hybride omgeving of een omgeving met meerdere cloudomgevingen. ✔ Naast bestaande Kubernetes-toepassingen en -services uitvoeren. |
In de resterende tabellen in dit artikel worden de plannen vergeleken met verschillende functies en gedragingen. Voor een kostenvergelijking tussen dynamische hostingplannen (verbruik en Premium) gaat u naar Azure Functions pagina met prijzen. Zie de pagina met prijzen voor App Service meer informatie over de verschillende dedicated-abonnementsopties.
Besturingssysteem/runtime
In de volgende tabel ziet u besturingssysteem- en taalondersteuning voor de hostingplannen.
| Linux1 Alleen-code |
Windows2 Alleen-code |
Linux1,3 Docker-container |
|
|---|---|---|---|
| Verbruiksabonnement | .NET Core 3.1 .NET 5.0 Javascript Java Python TypeScript |
.NET Core 3.1 .NET 5.0 Javascript Java PowerShell Core TypeScript |
Geen ondersteuning |
| Premium-abonnement | .NET Core 3.1 .NET 5.0 Javascript Java Python TypeScript |
.NET Core .NET 5.0 Javascript Java PowerShell Core TypeScript |
.NET Core Node.js Java PowerShell Core Python TypeScript |
| Toegewezen abonnement | .NET Core 3.1 .NET 5.0 Javascript Java Python TypeScript |
.NET Core 3.1 .NET 5.0 Javascript Java PowerShell Core TypeScript |
.NET Core 3.1 .NET 5.0 Javascript Java PowerShell Core Python TypeScript |
| ASE | .NET Core 3.1 .NET 5.0 Javascript Java Python TypeScript |
.NET Core 3.1 .NET 5.0 Javascript Java PowerShell Core TypeScript |
.NET Core 3.1 .NET 5.0 Javascript Java PowerShell Core Python TypeScript |
| Kubernetes (direct) | n.v.t. | n.v.t. | .NET Core 3.1 .NET 5.0 Javascript Java PowerShell Core Python TypeScript |
| Azure Arc (preview) | .NET Core 3.1 .NET 5.0 Javascript Java Python TypeScript |
n.v.t. | .NET Core 3.1 .NET 5.0 Javascript Java PowerShell Core Python TypeScript |
1 Linux is het enige ondersteunde besturingssysteem voor de Python-runtimestack.
2 Windows is het enige ondersteunde besturingssysteem voor de PowerShell-runtimestack.
3 Linux is het enige ondersteunde besturingssysteem voor Docker-containers.
Time-outduur voor Function-app
De time-outduur van een Function-app wordt gedefinieerd door de eigenschap functionTimeout in het projectbestand host.json. In de volgende tabel ziet u de standaard- en maximumwaarden in minuten voor beide abonnementen en de verschillende runtimeversies:
| Plannen | Runtime-versie | Standaard | Maximum |
|---|---|---|---|
| Verbruik | 1.x | 5 | 10 |
| Verbruik | 2.x | 5 | 10 |
| Verbruik | 3.x | 5 | 10 |
| Premium | 1.x | Onbeperkt | Onbeperkt |
| Premium | 2.x | 30 | Onbeperkt |
| Premium | 3.x | 30 | Onbeperkt |
| App Service | 1.x | Onbeperkt | Onbeperkt |
| App Service | 2.x | 30 | Onbeperkt |
| App Service | 3.x | 30 | Onbeperkt |
Notitie
Ongeacht de time-outinstelling van de Function-app is 230 seconden de maximale tijdsduur die een door HTTP geactiveerde functie heeft om te reageren op een aanvraag. Dit komt door de standaard time-out voor inactiviteit van Azure Load Balancer. Overweeg voor langere verwerkingstijden het asynchrone Durable Functions-patroon te gebruiken of stel het werk uit en stuur onmiddellijk een antwoord terug.
Schalen
In de volgende tabel wordt het schaalgedrag van de verschillende hostingplannen vergeleken.
| Plannen | Uitschalen | Maximum aantal exemplaren |
|---|---|---|
| Verbruiksabonnement | Gebeurtenisgestuurd. Automatisch uitschalen, zelfs tijdens perioden met hoge belasting. Azure Functions infrastructuur schaalt CPU- en geheugenbronnen door extra exemplaren van de Functions-host toe te voegen op basis van het aantal binnenkomende triggergebeurtenissen. | 200 |
| Premium-abonnement | Gebeurtenisgestuurd. Automatisch uitschalen, zelfs tijdens perioden met hoge belasting. Azure Functions-infrastructuur worden CPU- en geheugenbronnen geschaald door extra exemplaren van de Functions-host toe te voegen op basis van het aantal gebeurtenissen dat door de functies ervan wordt geactiveerd. | 100 |
| Toegewezen abonnement1 | Handmatig/automatisch schalen | 10-20 |
| ASE1 | Handmatig/automatisch schalen | 100 |
| Kubernetes | Automatisch schalen op basis van gebeurtenissen voor Kubernetes-clusters met BEHULP van KEDA. | Varieert per cluster |
1 Voor specifieke limieten voor de verschillende App Service-abonnementsopties, zie App Service planlimieten.
Gedrag bij koude start
| Plannen | Details |
|---|---|
| Verbruiksplan | Apps kunnen worden geschaald naar nul wanneer ze niet actief zijn, wat betekent dat sommige aanvragen mogelijk extra latentie hebben bij het opstarten. Het verbruiksplan heeft een aantal optimalisaties om de koude starttijd te verlagen, waaronder het binnenhalen van vooraf opgewarmde functies van tijdelijke aanduidingen die al de functiehost en taalprocessen uitvoeren. |
| Premium-abonnement | Continu warme exemplaren om koude start te voorkomen. |
| Toegewezen abonnement | Bij het uitvoeren in een Dedicated-abonnement kan de Functions-host continu worden uitgevoerd, wat betekent dat koude start niet echt een probleem is. |
| ASE | Bij het uitvoeren in een Dedicated-abonnement kan de Functions-host continu worden uitgevoerd, wat betekent dat koude start niet echt een probleem is. |
| Kubernetes | Afhankelijk van de KEDA-configuratie kunnen apps worden geconfigureerd om een koude start te voorkomen. Als deze is geconfigureerd om te worden geschaald naar nul, is er een koude start voor nieuwe gebeurtenissen. |
Servicelimieten
| Resource | Verbruiksabonnement | Premium-abonnement | Toegewezen abonnement | ASE | Kubernetes |
|---|---|---|---|---|---|
| Standaard time-outduur (min.) | 5 | 30 | 301 | 30 | 30 |
| Maximale time-outduur (min.) | 10 | niet-gebonden7 | niet-gebonden2 | niet-gebonden | niet-gebonden |
| Maximumaantal uitgaande verbindingen (per exemplaar) | 600 actief (1.200 totaal) | niet-gebonden | niet-gebonden | niet-gebonden | niet-gebonden |
| Maximale aanvraaggrootte (MB)3 | 100 | 100 | 100 | 100 | Afhankelijk van cluster |
| Maximale tekenreekslengte voor query's3 | 4096 | 4096 | 4096 | 4096 | Afhankelijk van cluster |
| Maximale lengte voor aanvraag-URL's3 | 8192 | 8192 | 8192 | 8192 | Afhankelijk van cluster |
| ACU per exemplaar | 100 | 210-840 | 100-840 | 210-2508 | AKS-prijzen |
| Maximaal geheugen (GB per exemplaar) | 1.5 | 3,5-14 | 1,75-14 | 3,5 - 14 | Elk knooppunt wordt ondersteund |
| Maximum aantal exemplaren | 200 | 1009 | varieert per SKU10 | 10010 | Afhankelijk van cluster |
| Functie-apps per abonnement | 100 | 100 | niet-gebonden4 | niet-gebonden | niet-gebonden |
| App Service-abonnementen | 100 per regio | 100 per resourcegroep | 100 per resourcegroep | - | - |
| Opslag5 | 5 TB | 250 GB | 50-1000 GB | 1 TB | n.v.t. |
| Aangepaste domeinen per app | 5006 | 500 | 500 | 500 | n.v.t. |
| Aangepast domein voor SSL-ondersteuning | niet-gebonden SNI SSL-verbinding inbegrepen | niet-gebonden SNI SSL- en 1 IP SSL-verbindingen inbegrepen | niet-gebonden SNI SSL- en 1 IP SSL-verbindingen inbegrepen | niet-gebonden SNI SSL- en 1 IP SSL-verbindingen inbegrepen | n.v.t. |
1 De time-out voor de Functions 1.x-runtime in een App Service-abonnement is standaard niet-gebonden.
2 Het App Service-abonnement moet zijn ingesteld op Altijd aan. Tegen standaardtarieven.
3 Deze limieten worden ingesteld in de host.
4 Het werkelijke aantal functie-apps dat u kunt hosten, is afhankelijk van de activiteit van de apps, de grootte van het machine-exemplaar en het bijbehorende resourcegebruik.
5 De opslaglimiet is de totale inhoudsgrootte in tijdelijke opslag voor alle apps in hetzelfde App Service-abonnement. Verbruiksabonnement maakt gebruik van Azure Files voor tijdelijke opslag.
6 Wanneer uw functie-app in een verbruiksabonnement wordt gehost, wordt alleen de optie CNAME ondersteund. Voor functie-apps in een Premium-abonnement of een App Service-abonnement kunt u een aangepast domein toewijzen met een CNAME- of A-record.
7 Gegarandeerd voor maximaal 60 minuten.
8 Werkrollen zijn rollen die klanten-apps hosten. Werkrollen zijn beschikbaar in drie vaste grootten: Eén vCPU/3,5 GB RAM; Twee vCPU/7 GB RAM; Vier vCPU/14 GB RAM.
9 wanneer u in een Premium-abonnement op Linux wordt uitgevoerd, bent u momenteel beperkt tot 20 exemplaren.
10 Zie app service limieten voor meer informatie.
Netwerkfuncties
| Functie | Verbruiksabonnement | Premium-abonnement | Toegewezen abonnement | ASE | Kubernetes |
|---|---|---|---|---|---|
| Binnenkomende IP-beperkingen en toegang tot persoonlijke sites | ✅Yes | ✅Yes | ✅Yes | ✅Yes | ✅Yes |
| Integratie van virtueel netwerk | ❌No | ✅Ja (regionaal) | ✅Ja (regionaal en gateway) | ✅Yes | ✅Yes |
| Virtuele netwerk triggers (niet-HTTP) | ❌No | ✅Yes | ✅Yes | ✅Yes | ✅Yes |
| Hybride verbindingen (alleen Windows) | ❌No | ✅Yes | ✅Yes | ✅Yes | ✅Yes |
| Uitgaande IP-beperkingen | ❌No | ✅Yes | ✅Yes | ✅Yes | ✅Ja |
Billing
| Plannen | Details |
|---|---|
| Verbruiksabonnement | Betaal alleen voor de tijd dat uw functies worden uitgevoerd. De facturering is dan ook gebaseerd op het aantal uitvoeringen, de uitvoeringstijd en het gebruikte geheugen. |
| Premium-abonnement | Premium abonnement is gebaseerd op het aantal kernseconden en het geheugen dat wordt gebruikt in de benodigde en vooraf opgewarmde exemplaren. Ten minste één exemplaar per abonnement moet altijd warm worden gehouden. Dit abonnement biedt de meest voorspelbare prijzen. |
| Toegewezen abonnement | U betaalt hetzelfde voor functie-apps in een App Service-abonnement als voor andere App Service resources, zoals web-apps. |
| App Service Environment (ASE) | Er is een vast maandtarief voor een ASE die de infrastructuur betaalt en niet verandert met de grootte van de ASE. Er zijn ook kosten per App Service plan vCPU. Alle apps die worden gehost in een AS-omgeving, vallen onder de Geïsoleerde prijs-SKU. |
| Kubernetes | U betaalt alleen de kosten van uw Kubernetes-cluster; geen extra facturering voor Functions. Uw functie-app wordt uitgevoerd als een toepassingsworkload boven op uw cluster, net als een gewone app. |