Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Azure Functions is een gebeurtenisgestuurde compute-on-demand service die het bestaande Azure App Service-toepassingsplatform uitbreidt. Het voegt mogelijkheden toe om code te implementeren die wordt geactiveerd door gebeurtenissen die plaatsvinden in Azure, in een partnerservice en in on-premises systemen. Met Behulp van Functions kunt u oplossingen bouwen die verbinding maken met gegevensbronnen of berichtenoplossingen, waardoor het eenvoudiger is om gebeurtenissen te verwerken en erop te reageren. Functies worden uitgevoerd in Azure datacenters, die complex zijn met veel geïntegreerde onderdelen. In een gehoste cloudomgeving wordt verwacht dat VM's af en toe opnieuw kunnen worden opgestart of verplaatst, en dat er systeemupgrades worden uitgevoerd. Uw functies-apps zijn waarschijnlijk ook afhankelijk van externe API's, Azure Services en andere databases, die ook gevoelig zijn voor periodieke niet-betrouwbaarheid.
In dit artikel worden enkele aanbevolen procedures beschreven voor het ontwerpen en implementeren van efficiënte functie-apps die in orde blijven en goed presteren in een cloudomgeving.
Het juiste hostingabonnement kiezen
Wanneer u een functie-app maakt in Azure, moet u een hostingabonnement voor uw app kiezen. Het plan dat u kiest, is van invloed op prestaties, betrouwbaarheid en kosten. Azure Functions biedt de volgende hostingabonnementen:
Gebruik indien mogelijk het Flex Consumption-abonnement om uw dynamische schaal-apps te hosten.
In de context van het App Service-platform is het Premium-abonnement dat dynamisch als host fungeert voor uw functies het Elastic Premium-abonnement (EP). Andere Toegewezen (App Service)-abonnementen worden Premium genoemd. Zie Azure Functions Premium-abonnement voor meer informatie.
Het hostingabonnement dat u kiest, bepaalt het volgende gedrag:
- Hoe uw function app wordt geschaald op basis van de vraag en hoe de toewijzing van instances wordt beheerd.
- De resources die beschikbaar zijn voor elk exemplaar van de functie-app.
- Ondersteuning voor geavanceerde functionaliteit, zoals Azure Virtual Network connectiviteit.
Zie Azure Functions hostingopties voor meer informatie over het kiezen van het juiste hostingabonnement en een gedetailleerde vergelijking tussen de abonnementen.
Kies het juiste plan wanneer u uw functie-app maakt. Functions biedt een beperkte mogelijkheid om uw hostingabonnement te veranderen, voornamelijk tussen Verbruiks- en Elastic Premium-abonnementen. Zie Migratie plannen voor meer informatie.
Opslag correct configureren
Voor Functions moet een opslagaccount worden gekoppeld aan uw functie-app. De Functions-host maakt gebruik van de opslagaccountverbinding voor bewerkingen zoals het beheren van triggers en het uitvoeren van logboekfuncties. Het wordt ook gebruikt bij het dynamisch schalen van functie-apps. Zie Storage-overwegingen voor Azure Functions voor meer informatie.
Een onjuist geconfigureerd bestandssysteem of opslagaccount in uw functie-app kan van invloed zijn op de prestaties en beschikbaarheid van uw functies. Zie het artikel over het oplossen van problemen met een onjuist geconfigureerd opslagaccount voor hulp bij het oplossen van problemen met opslag.
Opslagverbindingsinstellingen
Functie-apps die dynamisch kunnen worden geschaald, kunnen worden uitgevoerd vanaf een Azure Files-eindpunt in uw opslagaccount of vanaf de bestandsservers die zijn gekoppeld aan uw uitgeschaalde exemplaren. Dit gedrag wordt beheerd door de volgende toepassingsinstellingen:
Het Premium-abonnement en het Verbruiksabonnement op Windows ondersteunen deze instellingen. Voor het Flex Consumption-abonnement zijn deze instellingen niet vereist en wordt een Blob Storage-container gebruikt om implementatiepakketten te hosten in plaats van een Azure Files share.
Wanneer u uw functie-app maakt in de Azure-portal of met behulp van Azure CLI of Azure PowerShell, maakt u deze instellingen voor uw functie-app wanneer dat nodig is. Wanneer u uw resources maakt op basis van een Azure Resource Manager-sjabloon (ARM-sjabloon), moet u ook WEBSITE_CONTENTAZUREFILECONNECTIONSTRING opnemen in de sjabloon.
Bij uw eerste implementatie met een ARM-sjabloon hoeft u WEBSITE_CONTENTSHARE niet op te nemen, aangezien deze voor u wordt gegenereerd.
U kunt de volgende ARM-sjabloonvoorbeelden gebruiken om deze instellingen correct te configureren:
- Verbruiksabonnement
- Toegewezen abonnement
- Premium-abonnement met VNET-integratie
- Verbruiksplan met een implementatiesleuf
Belangrijk
De Azure Files-service biedt momenteel geen ondersteuning voor op identiteit gebaseerde verbindingen. Het Flex Consumption-abonnement biedt volledige ondersteuning voor beheerde identiteiten. Zie Maak een app zonder Azure Files voor meer informatie.
Opslagaccountconfiguratie
Wanneer u een functie-app maakt, moet u een algemeen Azure Storage-account maken of koppelen dat blob-, wachtrij- en tableopslag ondersteunt. Functies zijn afhankelijk van Azure Storage voor bewerkingen zoals het beheren van triggers en het uitvoeren van logboekregistratiefuncties. Het verbindingstekenreeks voor het opslagaccount van uw functie-app vindt u in de applicatie-instellingen AzureWebJobsStorage en WEBSITE_CONTENTAZUREFILECONNECTIONSTRING.
Houd rekening met de volgende overwegingen bij het maken van dit opslagaccount:
Als u de latentie wilt verminderen, maakt u het opslagaccount in dezelfde regio als de functie-app.
Gebruik een afzonderlijk opslagaccount voor elke functie-app om de prestaties in productie te verbeteren. Dit aspect geldt met name voor Durable Functions en door Event Hubs geactiveerde functies.
Gebruik voor door Event Hubs geactiveerde functies geen account met Data Lake Storage ingeschakeld.
Grote gegevenssets verwerken
Wanneer u op Linux werkt, kunt u extra opslag toevoegen door een bestandsshare te koppelen. Het koppelen van een share is een handige manier voor een functie om een grote bestaande gegevensset te verwerken. Voor meer informatie, zie Bestandsshares koppelen.
Uw functies organiseren
Als onderdeel van uw oplossing ontwikkelt en publiceert u waarschijnlijk meerdere functies. Deze functies worden vaak gecombineerd tot één functie-app, maar ze kunnen ook worden uitgevoerd in afzonderlijke functie-apps. In de Premium- en Dedicated-abonnementen (App Service) kunnen meerdere functie-apps dezelfde resources delen door in hetzelfde abonnement te draaien. Hoe u uw functies en functie-apps groeperen, kan van invloed zijn op de prestaties, schaalaanpassing, configuratie, implementatie en beveiliging van uw algehele oplossing.
Voor het Verbruiks- en Premium-abonnement worden alle functies in een functie-app dynamisch samen opgeschaald.
Zie Best practices voor functie-organisatie voor meer informatie over het organiseren van uw functies.
Uitrol optimaliseren
Wanneer u een functie-app implementeert, moet u er rekening mee houden dat de implementatie-eenheid voor functies in Azure de functie-app is. U implementeert alle functies in een functie-app tegelijkertijd, meestal vanuit hetzelfde implementatiepakket.
Houd rekening met deze opties voor een geslaagde implementatie:
Laat uw functies worden uitgevoerd vanuit het implementatiepakket. De uitvoeren vanuit pakket aanpak biedt de volgende voordelen:
- Vermindert het risico op problemen met vergrendeling tijdens het kopiëren van bestanden.
- Kan rechtstreeks worden geïmplementeerd in een productie-app en activeert geen herstart.
- Alle bestanden in het pakket zijn beschikbaar voor uw app.
- Verbetert de prestaties van ARM-sjabloonimplementaties.
- Kan koude begintijden verminderen, met name voor JavaScript-functies met grote npm-pakketstructuren.
Overweeg het gebruik van continue implementatie om implementaties te verbinden met uw broncodebeheeroplossing. Met continue implementaties kunt u ook uitvoeren vanuit het implementatiepakket.
Voor Premium-plannen Hosting kunt u overwegen om een opwarmingstrigger toe te voegen om de latentie te verminderen wanneer er nieuwe instanties worden toegevoegd. Zie Azure Functions warm-uptrigger voor meer informatie.
Minimaliseer de uitvaltijd van implementaties door gebruik te maken van implementatieslots voor verbruiks-, premium- en dedicated-abonnementen. Of configureer rolling updates voor implementaties zonder downtime in het Flex Consumption-abonnement. Zie Azure Functions implementatiesites en site-updatestrategieën in Flex Consumption voor meer informatie.
Robuuste functies schrijven
Volg ontwerpprincipes die u helpen bij de algemene prestaties en beschikbaarheid van uw functies. Deze principes zijn onder andere:
- Vermijd langlopende functies
- Communicatie tussen functies plannen
- Schrijf functies staatloos
- Defensieve functies schrijven
Tijdelijke fouten komen vaak voor bij cloud-computing. Gebruik daarom een patroon voor opnieuw proberen bij het openen van cloudresources. Veel triggers en bindingen implementeren al nieuwe pogingen.
Prioriteit geven aan integratietests door uw functies continu te testen in de context van de volledige toepassing en in uw buildautomatiseringspijplijnen.
Ontwerpen voor beveiliging
Houd rekening met de beveiliging tijdens de planningsfase, niet nadat uw functies gereed zijn. Zie Securing Azure Functions voor meer informatie.
Overweeg concurrentie
Naarmate de vraag toeneemt wegens binnenkomende gebeurtenissen, schalen Verbruiks- en Premium-abonnementen de functie-apps uit. Het is belangrijk om te begrijpen hoe uw functie-app reageert op laden en hoe de triggers kunnen worden geconfigureerd om binnenkomende gebeurtenissen te verwerken. Zie Event-driven scaling in Azure Functions voor een algemeen overzicht.
Voor dedicated (App Service)-plannen bent u verantwoordelijk voor het schalen van uw functie-apps.
Aantal werkprocessen
In sommige gevallen is het efficiënter om de belasting te verwerken door meerdere processen te maken, ook wel taalwerkprocessen genoemd, in het exemplaar voordat u uitschaalt. De FUNCTIONS_WORKER_PROCESS_COUNT-instelling bepaalt het maximum aantal toegestane taalwerkprocessen. De standaardinstelling voor deze instelling is 1, wat betekent dat er niet meerdere processen worden gebruikt. Nadat het maximaal aantal processen is bereikt, schaalt de functie-app automatisch uit naar meer exemplaren om de belasting te verwerken. Deze instelling is niet van toepassing op C#-klassenbibliotheekfuncties die worden uitgevoerd in het hostproces.
Wanneer u een Premium-abonnement of een Dedicated (App Service)-abonnement gebruikt FUNCTIONS_WORKER_PROCESS_COUNT, moet u rekening houden met het aantal cores dat door uw abonnement wordt geleverd. Het Premium-abonnement EP2 biedt bijvoorbeeld twee kernen, dus u moet beginnen met een waarde van 2 en naar behoefte met twee verhogen, tot het maximum.
Triggerconfiguratie
Wanneer u plant om doorvoer en schaalbaarheid te verbeteren, begrijpt u hoe de verschillende soorten triggers de gebeurtenissen verwerken. Sommige triggers bieden u controle over batchgedrag en gelijktijdigheid. Door deze waarden aan te passen, kan elke instantie op de juiste wijze worden geschaald voor de vereisten van de aangeroepen functies. U past deze configuratieopties toe op alle triggers in een functie-app en onderhoudt deze in het host.json-bestand voor de app. Zie de sectie Configuratie van de specifieke triggerreferentie voor meer informatie over instellingen.
Zie Azure Functions reliable event processing voor meer informatie over hoe Functions berichtstromen verwerkt.
Verbindingen plannen
Verbindingslimieten zijn van toepassing op functie-apps die worden uitgevoerd in verbruiksabonnement. Deze limieten zijn van toepassing op elk exemplaar. Vanwege deze limieten en als algemene best practice optimaliseert u de uitgaande verbindingen vanuit uw functiecode. Zie Beheerverbindingen in Azure Functions voor meer informatie.
Taalspecifieke overwegingen
Houd rekening met de volgende overwegingen voor uw keuzetaal:
Gebruik asynchrone code, maar vermijd het blokkeren van aanroepen.
Annuleringstokens gebruiken (alleen in verwerking).
Maximale beschikbaarheid
Koude start is een belangrijke overweging voor serverloze architecturen. Zie Cold starts voor meer informatie. Als koude start een probleem is voor uw scenario, raadpleegt u Inzicht in serverloze koude start.
Zowel Flex Consumption- als Premium-abonnementen worden aanbevolen om de koude start te verminderen terwijl de dynamische schaal behouden blijft. Gebruik de volgende richtlijnen om koude starts te verminderen en de beschikbaarheid in alle hostingabonnementen te verbeteren.
Effectief bewaken
Azure Functions biedt ingebouwde integratie met Azure-toepassing Insights voor het bewaken van de uitvoering van uw functie en traceringen die zijn geschreven vanuit uw code. Zie Monitor-uitvoeringen in Azure Functions voor meer informatie. Azure Monitor biedt ook faciliteiten voor het bewaken van de status van de functie-app zelf. Zie Monitor Azure Functions voor meer informatie.
Houd rekening met de volgende overwegingen bij het gebruik van Application Insights-integratie om uw functies te bewaken:
Verwijder de AzureWebJobsDashboard-toepassingsinstelling. Deze instelling is ondersteund in oudere versies van Functions. Het verwijderen van
AzureWebJobsDashboardverbetert de prestaties van uw functies.Bekijk de Application Insights-logboeken. Als er gegevens ontbreken die u verwacht te vinden, kunt u overwegen de steekproefinstellingen aan te passen om uw bewakingsscenario beter vast te leggen. Gebruik de
excludedTypesinstelling om bepaalde typen uit te sluiten van steekproeven, zoalsRequestofException. Zie Sampling configureren voor meer informatie.
Azure Functions stelt u ook in staat om door het systeem gegenereerde en door de gebruiker gegenereerde logboeken naar Azure Monitor Logs te sturen
Bouw redundantie in
Uw bedrijfsbehoeften vereisen mogelijk dat uw functies altijd beschikbaar zijn, zelfs tijdens een storing in een datacenter. Zie Betrouwbaarheid in Azure Functions voor meer informatie over het gebruik van een multiregionale benadering om uw kritieke functies altijd actief te houden.