Dela via


Metodtips för arkitektur för Azure Functions

Azure Functions är en serverlös beräkningstjänst som du kan använda för att köra händelsedriven kod utan att behöva hantera infrastrukturen direkt. Azure Functions är en funktion som ett tjänsterbjudande som abstraherar den underliggande infrastrukturen. Med den här abstraktionen kan du fokusera på din kod. Azure Functions skalar automatiskt baserat på efterfrågan och tar bara betalt för de resurser som förbrukas vid användning.

Den här artikeln förutsätter att du som arkitekt har granskat beslutsträdet för beräkning och valt Azure Functions som beräkningslösning för din arbetsbelastning. Vägledningen i den här artikeln innehåller arkitektoniska rekommendationer som mappas till principerna för Well-Architected Framework-pelarna.

Teknikomfång

Den här granskningen fokuserar på de relaterade besluten för följande Azure-resurs:

  • Funktionsappar

Note

Den här tjänstguiden bygger på vägledning i tjänstguiden för Azure App Service (Web Apps). 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. Med de dedikerade och Premium-värdplanerna kan du konfigurera och hantera App Service-instansen. Se App Service-tjänstguiden för rekommendationer och överväganden när du väljer dedikerad eller Premium-värdplan.

Reliability

Syftet med grundpelarna för tillförlitlighet är att tillhandahålla fortsatt funktionalitet genom att bygga upp tillräckligt med motståndskraft och möjlighet att snabbt återhämta sig från fel.

Designprinciperna för tillförlitlighet ger en övergripande designstrategi som tillämpas för enskilda komponenter, systemflöden och systemet som helhet.

Checklista för arbetsbelastningsdesign

Påbörja din designstrategi baserat på checklistan för designgranskning för tillförlitlighet. Fastställ dess relevans för dina affärskrav samtidigt som du tänker på de specifika funktionerna och konfigurationerna i Azure Functions. Utöka strategin till att omfatta fler metoder efter behov.

  • 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. Om du vill ha mer komplexa arbetsflöden bör du överväga att använda Durable Functions-tillägget för Azure Functions. Den tillhandahåller tillståndshantering och samordning mellan flera funktionsoperationer.

    Durable Functions är särskilt användbart för scenarier som kräver tillförlitlighet i långvariga arbetsflöden. Den stöder automatiska återförsök och beständig uppgiftshantering.

  • Se till att undantagshanteringen är korrekt: Implementera robust undantagshantering för att säkerställa att funktionerna misslyckas korrekt. Logga fel och överväg att implementera aviseringsmekanismer för kritiska fel.

  • Planera 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 för idempotens: Se till att dina funktioner kan köras igen på ett säkert sätt utan att orsaka oavsiktliga bieffekter. Idempotens är avgörande för funktioner som interagerar med externa system eller ändrar data.

  • Använd Durable Functions för långvariga å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ånd 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.

Konfigurationsrekommendationer

Recommendation Benefit
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 orkestrera komplexa arbetsflöden och tidskrävande processer. Läs mer om Durable Functions. Ger tillförlitlig drift 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 funktionsåtgärder och beroenden.
Skala ut automatiskt baserat på hostningsplan, triggertyp och efterfrågan. Läs mer om skalning. Hjälper till att säkerställa att ditt program kan hantera trafikökningar utan manuella åtgärder, vilket förbättrar tillförlitligheten och prestandan.

Security

Syftet med säkerhetspelaren är att tillhandahålla garantier för konfidentialitet, integritet och tillgänglighet för arbetet.

Principerna för säkerhetsdesign ger en övergripande designstrategi för att uppnå dessa mål genom att tillämpa metoder för den tekniska designen kring Azure Functions.

Checklista för arbetsbelastningsdesign

Påbörja din designstrategi baserad på checklistan för designgranskning för säkerhet och identifiera sårbarheter och kontroller för att förbättra säkerhetsläget. Utöka strategin till att omfatta fler metoder 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.

  • Skydda din funktionsapp med Microsoft Entra-ID: Begränsa åtkomsten till dina funktioner genom att konfigurera Azure Functions så att Microsoft Entra ID-autentisering krävs.

  • Tillämpa nätverkssäkerhetskontroller: Förstå tillgängliga Azure Functions-nätverksalternativ för din värdmodell för att skydda Azure Functions-nätverkskonfigurationen. Skydda nätverket för att uppfylla dina krav.

Konfigurationsrekommendationer

Recommendation Benefit
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. Den här metoden förbättrar säkerheten.
Använd Azure Key Vault- för hantering av hemligheter och regelbunden rotation. Integrera Key Vault med Azure Functions. Hjälper till att skydda känslig information, till exempel API-nycklar och anslutningssträngar, genom att lagra den på ett säkert sätt och automatisera hemlig rotation 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örbrukningsvärdplansalternativet.

Kostnadsoptimering

Kostnadsoptimering fokuserar på identifiera utgiftsmönster, prioritera investeringar inom kritiska områden och optimera i andra för att uppfylla organisationens budget samtidigt som affärskraven uppfylls.

Designprinciperna för kostnadsoptimering ger en övergripande designstrategi för att uppnå dessa mål och göra avvägningar vid behov i den tekniska designen som rör Azure Functions och dess miljö.

Checklista för arbetsbelastningsdesign

Påbörja din designstrategi baserat på checklistan för designgranskning och kostnadsoptimering för investeringar. Finjustera designen så att arbetsbelastningen är i linje med den budget som allokeras för arbetsbelastningen. Din design bör använda rätt Azure-funktioner, övervaka investeringar och hitta möjligheter att optimera över tid.

  • Välj rätt prisplan: Azure Functions har flera prisplaner, inklusive förbrukningsplan, Premium-plan och Dedikerad (App Service). Välj en prisplan som överensstämmer med dina arbetsbelastnings- och kostnadsöverväganden.

    Förbrukningsplanen är idealisk för oförutsägbara belastningar som har sällan förekommande operationer eftersom du bara betalar för den operationstid och de resurser som förbrukas. När appen är inaktiv debiteras du inte.

  • Optimera drifttiden: Minska drifttiden genom att optimera funktionskoden. Minimera användningen av externa beroenden och optimera kodlogik för att minska varaktigheten för varje åtgärd.

  • Övervaka och analysera kostnader: Övervaka regelbundet användning och kostnader för funktionsappar med hjälp av Microsoft Cost Management och konfigurera aviseringar för att identifiera kostnadsavvikelser.

Konfigurationsrekommendationer

Recommendation Benefit
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 när funktioner utförs, 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 användningsmönster.
Övervaka kostnader regelbundet och konfigurera aviseringar för avvikelser. Övervaka kostnader med aviseringar. Hjälper till att identifiera kostnadstoppar tidigt, vilket möjliggör proaktiv hantering och optimering.

Operativ skicklighet

Operational Excellence fokuserar främst på procedurer för utvecklingsmetoder, observerbarhet och versionshantering.

Designprinciperna för operational excellence tillhandahåller en övergripande designstrategi för att uppnå dessa mål för arbetsbelastningens driftskrav.

Checklista för arbetsbelastningsdesign

Starta din designstrategi baserat på checklistan för designgranskning för operational excellence för att definiera processer för observerbarhet, testning och distribution som är relaterade till Azure Functions.

  • Automatisera distributioner: Använd CI/CD-pipelines (continuous integration and continuous delivery) 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 dina funktioners hälsa och prestanda. Konfigurera aviseringar för kritiska mått och använd anpassade instrumentpaneler för insikter i realtid. Mer information finns i Övervaka Azure Functions.

  • Distribuera lösningen på ett säkert sätt: Förstå de distributionsmodeller som är tillgängliga för Azure Functions och anta den modell som bäst uppfyller dina säkra distributionsmetoder.

  • Planera för katastrofåterställning (DR):Implementera DR-strategier genom att använda tvärregionala DR-strategier och tillgänglighetszoner för kritiska funktioner.

Konfigurationsrekommendationer

Recommendation Benefit
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 distributionsfack för mellanlagringsändringar före produktionsversionen. Minskar risken för att införa fel i produktionen och möjliggör säkra återställningar om problem upptäcks.
Implementera centraliserad övervakning med Hjälp av Application Insights och Azure Monitor med hjälp av tillgängliga mått. Förbättrar insynen i funktionsprestanda, vilket hjälper till att identifiera och lösa problem snabbt.

Prestandaeffektivitet

Prestandaeffektivitet handlar om upprätthålla användarupplevelsen även när belastningen ökar genom att hantera kapaciteten. Strategin omfattar skalning av resurser, identifiering och optimering av potentiella flaskhalsar och optimering för högsta prestanda.

Designprinciperna för prestandaeffektivitet ger en designstrategi på hög nivå för att uppnå dessa kapacitetsmål mot den förväntade användningen.

Checklista för arbetsbelastningsdesign

Påbörja din designstrategi baserad på designgranskningschecklista för prestanda och effektivitet. Definiera en baslinje som baseras på viktiga prestandaindikatorer för Azure Functions.

  • Optimera kallstarter: Minimera effekterna av kalla starter genom att använda Premium Flex-planer som tillhandahåller förvärmda instanser eller se till att dina funktioner förblir varma med hjälp av strategier som Azure Functions-uppvärmningsutlösaren.

  • Optimera funktionskod: Skriv effektiv kod för att minska drifttiden 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 drifttid, CPU och minnesanvändning. Konfigurera aviseringar för prestandaförsämring.

Konfigurationsrekommendationer

Recommendation Benefit
Använd Elastic Premium-planen med en förvärmd instans för att minimera kallstartsfördröjning. Förstå kallstarter. Minskar svarstiden som är associerad med kalla starter, vilket förbättrar svarstiderna för tidskänsliga program.
Optimera funktionskoden för att minska drifttiden. Förstå metodtipsen för Azure Functions. Förbättrar prestandan genom att minska den tid och de resurser som krävs för att varje funktion ska köras.
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. Den här metoden hjälper till att upprätthålla prestanda under press.

Azure-riktlinjer

Azure tillhandahåller en omfattande uppsättning inbyggda principer som rör Azure Functions och dess beroenden. En uppsättning Azure-principer kan granska några av föregående rekommendationer. Du kan till exempel kontrollera om:

  • Alla funktionsappar har hanterade identiteter aktiverade.
  • Funktionsappar använder endast privata slutpunkter för nätverkssäkerhet.
  • Diagnostikloggning är aktiverad för alla funktionsappar.

För att uppnå omfattande styrning, granska de inbyggda Azure Policy-definitionerna och andra policyer som kan påverka nätverksskiktets säkerhet.

Azure Advisor-rekommendationer

Azure Advisor är en anpassad molnkonsult som hjälper dig att följa metodtipsen för att optimera dina Azure-distributioner.

Mer information finns i Azure Advisor.

Exempelarkitektur

Grundläggande arkitektur som visar de viktigaste rekommendationerna: Arkitekturdesign för webbprogram.

Nästa steg

Överväg följande resurser för att ytterligare utforska rekommendationerna som är markerade i det här dokumentet: