Azure Well-Architected Framework-perspektiv på Azure Functions
Azure Functions är en serverlös beräkningstjänst som gör att du kan köra händelsedriven kod utan att behöva hantera infrastrukturen explicit. Som ett FaaS-erbjudande (Functions as a Service) abstraherar Azure Functions den underliggande infrastrukturen så att du kan fokusera på din kod. Den här tjänsten skalar automatiskt baserat på efterfrågan och debiterar dig endast för de resurser som används under körningen.
Det här dokumentet förutsätter att du som arkitekt har granskat beslutsträd för beräkning och valt Azure Functions som beräkningslösning för din arbetsbelastning. Vägledningen som tillhandahålls här överensstämmer med principerna för grundpelarna Azure Well-Architected Framework.
Viktig
Använda den här guiden
Varje avsnitt innehåller en checklista för design som belyser arkitekturområden med specifika designstrategier relaterade till Azure Functions.
De rekommendationerna erbjuder teknikfunktioner för att implementera dessa strategier. Den här listan är inte fullständig men innehåller viktiga rekommendationer som hjälper dig att skapa eller optimera dina arbetsbelastningar med Azure Functions.
Grundläggande arkitektur som visar de viktigaste rekommendationerna: Arkitekturdesign för serverlösa funktioner
Teknikomfång
Den här granskningen fokuserar på de relaterade besluten för följande Azure-resurser:
- Funktionsappar
Obs
Den här tjänstguiden bygger på vägledningen i App Service (Web Apps) serviceguide. Azure Functions är en serverlös beräkningstjänst. Funktioner distribueras i App Service-planer som tillhandahåller den underliggande beräkningsinfrastrukturen för din arbetsbelastning. Du kan välja mellan flera värdplaner. Förbrukningsplanen är helt hanterad och stöder inte åtkomst till den associerade App Service-instansen, medan Dedicated och Premium ger dig möjlighet att konfigurera och hantera App Service-instansen. Se App Service-tjänstguiden för rekommendationer och överväganden när du väljer en dedikerad eller Premium-värdplan.
Tillförlitlighet
Grundpelare för tillförlitlighet säkerställer kontinuerliga funktioner genom att bygga motståndskraft och möjliggöra snabb återställning från fel.
Designprinciperna för tillförlitlighet tillhandahåller övergripande designstrategier som gäller för enskilda komponenter, systemflöden och det övergripande systemet.
Checklista för design
Starta din designstrategi baserat på de tillförlitlighetsdesignprinciperna . Utvärdera dess relevans för dina affärskrav samtidigt som du överväger de specifika funktionerna och konfigurationerna för Azure Functions.
Förstå utlösarna: Se till att du förstår fullständigt hur Azure Functions utlöses. Utlösare inkluderar HTTP-begäranden, timers, köer med mera. Välj utlösare som matchar programmets tillförlitlighetskrav.
Om din funktion till exempel bearbetar meddelanden från en kö kontrollerar du att själva kön är motståndskraftig och att meddelanden kan bearbetas igen om ett fel inträffar.
Implementera återförsök och hållbara mönster: Använd inbyggda återförsöksprinciper för tillfälliga fel. För mer komplexa arbetsflöden bör du överväga att använda Durable Functions, som erbjuder tillståndshantering och samordning över flera funktionskörningar.
Durable Functions är särskilt användbara för scenarier som kräver tillförlitlighet i långvariga arbetsflöden. De stöder automatiska återförsök och beständig uppgiftshantering.
Säkerställa korrekt undantagshantering: Implementera robust undantagshantering för att säkerställa att funktionerna hanteras smidigt vid misslyckanden. Logga fel och överväg att implementera aviseringsmekanismer för kritiska fel.
Plan för skalbarhet: Azure Functions skalas automatiskt ut baserat på efterfrågan. Se till att ditt program är utformat för att hantera toppar genom att testa dess prestanda under belastning.
Överväg att använda Application Insights för att övervaka prestanda och spåra hur dina funktioner skalar i realtid.
Design for idempotency: Se till att dina funktioner kan utföras på ett säkert sätt utan att orsaka oavsiktliga biverkningar. Idempotens är avgörande för funktioner som interagerar med externa system eller ändrar data.
Använd Durable Functions för tidskrävande åtgärder: För åtgärder som kräver orkestrering eller långvariga processer använder du Durable Functions för att upprätthålla tillståndet och säkerställa tillförlitlighet i flera steg.
Övervaka hälsotillståndet för din lösning: Integrera din Azure Functions-lösning i ditt övergripande hälsoövervaknings- och aviseringssystem för arbetsbelastningar.
Rekommendationer
Rekommendation | Fördel |
---|---|
Konfigurera automatiska återförsök för tillfälliga fel. Läs mer om felhantering och återförsök i Azure Functions | Förbättrar tillförlitligheten genom att automatiskt försöka utföra misslyckade körningar igen, vilket minskar sannolikheten för dataförlust eller avbrott. |
Använd Durable Functions- för att samordna komplexa arbetsflöden och tidskrävande processer. Läs mer om Durable Functions. | Ger tillförlitlig körning av långvariga arbetsflöden med inbyggd tillståndshantering och automatiska återförsök. |
Implementera Övervakning och centraliserad loggning med hjälp av Application Insights. Konfigurera Application Insights. | Förbättrar övervakning och felsökning genom att ge detaljerade insikter om funktionskörningar och beroenden. |
Skala ut automatiskt baserat på funktionshostingplanen, utlösartyp och efterfrågan. Läs mer om att skala. | Säkerställer att ditt program kan hantera trafikökningar utan manuella åtgärder, vilket förbättrar tillförlitligheten och prestandan. |
Säkerhet
Säkerhetspelaren fokuserar på att säkerställa sekretess, integritet och tillgänglighet för dina data och tjänster.
Designprinciperna för Säkerhet erbjuder en övergripande strategi för att skydda dina Azure Functions, inklusive bästa praxis för autentisering, auktorisering och dataskydd.
Checklista för design
Starta din designstrategi med checklistan för designgranskning och identifiera potentiella sårbarheter för säkerhet. Utöka din strategi genom att införa ytterligare säkerhetsåtgärder efter behov.
Använd hanterade identiteter: Aktivera hanterade identiteter för dina funktionsappar för säker åtkomst till andra Azure-tjänster utan att behöva hantera autentiseringsuppgifter. Läs mer om hanterade identiteter.
Skydda funktionsappen med Microsoft Entra-ID: Begränsa åtkomsten till dina funktioner genom att konfigurera Azure Functions så att Microsoft Entra ID-autentisering krävs. Konfigurera Microsoft Entra-autentisering.
Använd nätverkssäkerhetskontroller: Förstå tillgängliga alternativ för värdmodellen för att skydda konfigurationen av Functions-nätverk. Skydda nätverket för att uppfylla dina krav.
Rekommendationer
Rekommendation | Fördel |
---|---|
Aktivera hanterade identiteter för säker åtkomst till Azure-resurser. Aktivera hanterade identiteter | Förenklar hantering av autentiseringsuppgifter genom att eliminera behovet av att lagra och rotera hemligheter, vilket förbättrar säkerheten. |
Använd Azure Key Vault- för hantering av hemligheter och regelbunden rotation. Integrera Key Vault med Azure Functions. | Skyddar känslig information, till exempel API-nycklar och anslutningssträngar, genom att lagra dem på ett säkert sätt och automatisera rotation av hemligheter när det inte är möjligt att använda en hanterad identitet. |
Integrera med ett virtuellt nätverk och använd privata slutpunkter. | Skyddar funktionsappar genom att begränsa åtkomsten till ditt interna nätverk och förhindra exponering för det offentliga Internet.
Integrering av virtuella nätverk och privata slutpunkter är inte tillgängliga i förbrukningsplanen. |
Kostnadsoptimering
Grundpelarna för kostnadsoptimering fokuserar på att identifiera sätt att minska kostnaderna samtidigt som nödvändiga prestandanivåer bibehålls.
Kostnadsoptimeringens designprinciper tillhandahåller strategier för att balansera kostnader och prestanda, vilket säkerställer att din Azure Functions-distributionen är effektiv och kostnadseffektiv.
Checklista för design
Börja din strategi för kostnadsoptimering med checklistan för designgranskning för kostnadsoptimeringoch justera din design så att den överensstämmer med budgetkraven.
Välj rätt prisplan: Azure Functions erbjuder flera prisplaner, inklusive förbrukningsplan, Premium-plan och Dedikerad (App Service). Välj en plan som överensstämmer med dina arbetsbelastnings- och kostnadsöverväganden. Jämför prisplaner.
Förbrukningsplanen är perfekt för oförutsägbara arbetsbelastningar med ovanliga körningar, eftersom du bara betalar för körningstiden och de resurser som förbrukas. När appen är inaktiv debiteras du inte.
Optimera körningstiden: Minska körningstiden genom att optimera funktionskoden. Minimera användningen av externa beroenden och optimera kodlogik för att minska varaktigheten för varje körning.
Övervaka och analysera kostnader: Övervaka regelbundet användning och kostnader för funktionsappar med hjälp av Azure Cost Management och konfigurera aviseringar identifiera kostnadsavvikelser. Läs mer om kostnadshantering och optimering.
Rekommendationer
Rekommendation | Fördel |
---|---|
Använd förbrukningsplanen för arbetsbelastningar med oförutsägbar trafik. Förstå förbrukningsplanen. | Minskar kostnaderna genom att endast debitera för de resurser som används under funktionskörningen, vilket undviker kostnader som är kopplade till inaktiva resurser. |
Reservera kapacitet för Elastic Premium- planer eller dedikerade App Service-planer om din arbetsbelastning är förutsägbar. | Sänker kostnaderna genom rabatterade priser för förutsägbara arbetsbelastningar med stadiga körningsmönster. |
Övervaka regelbundet kostnader och ställ in aviseringar för avvikelser. Konfigurera kostnadsaviseringar. | Hjälper till att identifiera kostnadstoppar tidigt, vilket möjliggör proaktiv hantering och optimering. |
Operational Excellence
Operational Excellence fokuserar på processer och procedurer för distribution, observerbarhet och hantering av dina Azure Functions-program.
Designprinciperna för Operational Excellence tillhandahåller strategier för att säkerställa att dina funktionsappar distribueras, hanteras och övervakas effektivt.
Checklista för design
Starta din designstrategi genom designprinciperna för operativ excellens och, där strategier erbjuds för att upprätthålla driftkvaliteten hos Azure Functions.
Automatisera distributioner: Använd CI/CD-pipelines för att automatisera distributionen av dina funktionsappar. Integrera med Azure DevOps eller GitHub Actions för sömlösa distributionsarbetsflöden.
Implementera hälsoövervakning: Använd Azure Monitor och Application Insights för att spåra hälsotillstånd och prestanda för dina funktioner. Konfigurera aviseringar för kritiska mått och använd anpassade instrumentpaneler för insikter i realtid. Monitor Azure Function.
Distribuera lösningen på ett säkert sätt: Förstå distributionsmodeller tillgängliga för Azure Functions och anta den modell som bäst uppfyller dina säkra distributionsmetoder.
Planera för katastrofåterställning: Implementera strategier för katastrofåterställning genom användning av regional katastrofåterställning och tillgänglighetszoner för kritiska funktioner. Plan för DR.
Rekommendationer
Rekommendation | Fördel |
---|---|
Automatisera distributioner med CI/CD-pipelines med hjälp av Azure DevOps eller GitHub Actions. Konfigurera CI/CD | Förbättrar distributionskonsekvensen, minskar manuella fel och påskyndar tiden till marknaden för nya funktioner. |
Använd distributionsplatser för att förbereda ändringar innan produktionslansering. Distribuera med hjälp av slotar. | Minskar risken för att införa fel i produktion och möjliggör säkra återställningar om problem upptäcks. |
Implementera centraliserad övervakning med Application Insights och Azure Monitor genom att använda tillgängliga mätvärden. | Förbättrar insynen i funktionsprestanda och hjälper dig att snabbt identifiera och lösa problem. |
Prestandaeffektivitet
Prestandaeffektivitet säkerställer optimal användarupplevelse även under ökad belastning genom att hantera kapaciteten effektivt.
Designprinciperna för prestandaeffektivitet tillhandahålla strategier som hjälper dig att utforma funktionsappar som uppfyller prestandakraven, även när efterfrågan ökar.
Checklista för design
Starta din prestandastrategi med principerna för Design för prestandaeffektivitetoch utforma funktionsapparna så att de kan skalas och prestera optimalt.
Optimera kallstart: Minimera effekten av kallstarter genom att använda Premium Flex-planer med förvärmd instans eller se till att dina funktioner förblir varma med strategier som Azure Functions-uppvärmningsutlösare.
Optimera funktionskod: Skriv effektiv kod för att minska körningstiden och resursförbrukningen. Undvik långvariga operationer och optimera externa tjänstanrop.
Aktivera automatisk skalning: Utnyttja funktionerna för automatisk skalning i Azure Functions för att automatiskt skala ut baserat på efterfrågan. Se till att skalningsreglerna är väldefinierade och testade.
Övervaka prestandamått: Använd Application Insights för att övervaka viktiga prestandamått, till exempel körningstid, PROCESSOR- och minnesanvändning. Konfigurera aviseringar för prestandaförsämring. Övervaka prestanda.
Rekommendationer
Rekommendation | Fördel |
---|---|
Använd Elastic Premium-plan med en förvärmd instans för att minimera latensen för kallstart. Förstå kallstart. | Minskar svarstiden som är associerad med kalla starter, vilket förbättrar svarstiderna för tidskänsliga program. |
Optimera funktionskod för att minska exekveringstiden. Bästa praxis för Azure Functions. | Förbättrar prestandan genom att minska den tid och de resurser som krävs för varje funktionsexekvering. |
Aktivera automatisk skalning för att automatiskt justera kapaciteten baserat på efterfrågan. Konfigurera automatisk skalning. | Säkerställer att dina funktionsappar kan hantera varierande belastningar utan manuella åtgärder och upprätthålla prestanda under press. |
Azure-principer
Azure tillhandahåller en omfattande uppsättning inbyggda principer för att granska och framtvinga konfigurationer för Azure Functions och deras beroenden. Du kan använda Azure Policy för att se till att dina funktionsappar följer organisationens standarder för säkerhet, kostnadsoptimering och prestanda.
Du kan till exempel tillämpa principer som kräver:
- Hanterade identiteter som ska aktiveras för alla funktionsappar.
- Funktionsappar för att endast använda privata slutpunkter för nätverkssäkerhet.
- Diagnostikloggning ska aktiveras för alla funktionsappar.
Granska inbyggda definitioner i Azure Policy för att hitta principer som överensstämmer med organisationens krav.
Azure Advisor-rekommendationer
Azure Advisor är en anpassad molnkonsult som hjälper dig att följa metodtipsen för att optimera dina Azure-distributioner. Advisor-rekommendationerna är anpassade till Well-Architected Framework-pelare.
Mer information finns i rekommendationerna i Azure Advisor.
Nästa steg
Överväg följande resurser för att ytterligare utforska rekommendationerna som är markerade i det här dokumentet:
- Referensarkitekturer: