Azure Functions i en hybridmiljö

Azure Functions
Azure Monitor
Azure Pipelines
Azure Storage
Azure Virtual Network

Den här referensarkitekturen illustrerar flera lokala grenar i en organisation som är utspridd geografiskt. Varje plats använder en Microsoft Azure-funktionsapp som har konfigurerats med Premium-planen i en närliggande molnregion. Utvecklarna i den här arkitekturen övervakar alla Azure Function Apps med hjälp av Azure Monitor som en enda fönsterruta.

Arkitektur

Diagrammet visar flera lokala virtuella datorer som är anslutna till Azure Functions i olika regioner. Utvecklare övervakar sina funktionsappar med hjälp av Azure Monitor.

Ladda ned en Visio-fil med den här arkitekturen.

Komponenter

Arkitekturen består av följande komponenter:

  • Azure Functions. Azure Functions är en serverlös plattform som en tjänst (PaaS) i Azure som kör liten kod med en enda uppgift utan att kräva att ny infrastruktur spunnas upp. Azure Functions Premium-planen lägger till möjligheten att kommunicera med Azure Functions privat via ett virtuellt nätverk.
  • Azure Virtual Network. Virtuella Azure-nätverk är privata nätverk som bygger på Azure-molnplattformen så att Azure-resurser kan kommunicera med varandra på ett säkert sätt. Tjänstslutpunkter för virtuella Azure-nätverk säkerställer att Azure-resurser endast kan kommunicera via det säkra virtuella nätverkets stamnät.
  • Lokalt nätverk. I den här arkitekturen har organisationen skapat ett säkert privat nätverk som ansluter de olika grenarna. Det här privata nätverket är anslutet till sina virtuella Azure-nätverk med hjälp av en plats-till-plats-anslutning .
  • Arbetsstationer för utvecklare. I den här arkitekturen kan enskilda utvecklare arbeta med kod för Azure Functions helt och hållet i det säkra privata nätverket eller från valfri fjärrplats. I båda scenariona har utvecklare åtkomst till Azure Monitor för att fråga efter eller observera mått och loggar för funktionsapparna.

Information om scenario

Vanliga användningsområden för den här arkitekturen inkluderar:

  • Organisationer med många fysiska platser som är anslutna till ett virtuellt nätverk i Azure för att kommunicera med Azure Functions.
  • Arbetsbelastningar med hög tillväxt som använder Azure Functions lokalt och som behåller alternativet att använda Azure för oväntade avbrott i arbetet.

Rekommendationer

Följande rekommendationer gäller för de flesta scenarier. Följ dessa rekommendationer om du inte har ett visst krav som åsidosätter dem.

Designa för en serverlös arkitektur

Traditionella företagsprogram går mot en monolitisk programarkitektur där en kod "lösning" kör hela organisationens affärslogik. Med Azure Functions är bästa praxis att utforma för en serverlös arkitektur där enskilda funktioner utför enskilda uppgifter. Dessa enkla uppgifter är utformade för att köras snabbt och integreras i större arbetsflöden.

Serverlös arkitektur i Azure Functions har många fördelar, bland annat:

  • Program kan automatiskt skalas efter enskilda affärsfunktioner i stället för att skala hela lösningen. Detta kan hjälpa till att hålla kostnaderna nere genom att bara skala det som behövs för varje uppgift för att hantera befintliga arbetsbelastningar.
  • Azure Functions tillhandahåller deklarativa bindningar för många Azure-tjänster, vilket minskar mängden kod som ditt team behöver för att skriva, testa och underhålla.
  • Enskilda funktioner kan återanvändas, vilket minskar mängden upprepad kod som krävs för stora företagslösningar.

Köra Azure Functions lokalt

Du kan välja att låta Azure Functions köras lokalt i stället för i Azure. till exempel:

  • Ditt team kanske vill köra Azure Functions i en befintlig lokal Kubernetes-installation.
  • Under utvecklingen kan ditt team ha lättare att utveckla lokalt med hjälp av kommandoradsgränssnittet i stället för i portalredigeraren.
  • Funktionerna körs lokalt med verktygsuppsättningen installerad på lokala virtuella datorer.

Du kan köra Azure Functions lokalt på tre sätt:

Nätverksanslutningar

Genom att skapa funktionsappar med hjälp av Premium-planen kan du få en mycket säker nätverksanslutning mellan virtuella Azure-nätverk, Azure och lokala nätverk och nätverken för varje lokal gren.

Du bör använda antingen en plats-till-plats-anslutning eller en Azure ExpressRoute-anslutning mellan Azure Virtual Network och lokala nätverk. På så sätt kan de lokala grenarna kommunicera med funktionsapparna i Azure med hjälp av sina tjänstslutpunkter.

Dessutom bör varje virtuellt nätverk i Azure också använda peering för virtuella nätverk för att möjliggöra kommunikation mellan enskilda funktionsappar mellan regioner.

Att tänka på

Dessa överväganden implementerar grundpelarna i Azure Well-Architected Framework, som är en uppsättning vägledande grundsatser som kan användas för att förbättra kvaliteten på en arbetsbelastning. Mer information finns i Microsoft Azure Well-Architected Framework.

Skalbarhet

  • Azure Functions-kod bör utformas så att den kan skalas ut oändligt. Överväg konkurrensförhållanden, leasade filer och andra arbetsbelastningar som kan orsaka att en funktionskörning blockerar en annan. Överväg också att skriva all Azure Functions-kod för att vara tillståndslös och defensiv i sin design.
  • För funktionsappar som använder Azure Storage-konton i utlösare eller bindningar ska du inte återanvända samma konto som används för att lagra metadata om funktionsapparna och deras körningar.

Tillgänglighet

  • Vanligtvis kan Azure Functions i förbrukningsplanen skala ned till noll instanser. När en ny händelse utlöser en funktionsapp måste en ny instans skapas med koden som körs på den. Svarstiden som är associerad med den här processen kallas för en kallstart. Med Azure Functions Premium-planen kan du konfigurera förvärmda instanser som är redo för nya begäranden. Du kan konfigurera antalet förvärmda instanser upp till det minsta antalet instanser i din utskalningskonfiguration.
  • Överväg att ha flera Premium-planer i flera regioner och använda Azure Traffic Manager för att dirigera begäranden på rätt sätt.

Hanterbarhet

  • Azure Functions måste finnas i ett tomt undernät som är ett annat undernät än dina andra Azure-resurser. Detta kan kräva mer planering när du utformar undernät för ditt virtuella nätverk.
  • Överväg att skapa proxyservrar för varje lokal resurs som Azure Functions kan behöva komma åt. Detta kan skydda programintegriteten mot oväntade lokala nätverksändringar.
  • Använd Azure Monitor för att observera analyser och loggar för Azure Functions i hela lösningen.

DevOps

  • Helst bör distributionsåtgärder komma från ett enda team (Dev eller DevOps), inte från varje enskild gren. Överväg att använda ett modernt arbetsflödessystem som Azure Pipelines eller GitHub Actions för att distribuera funktionsappar på ett repeterbart sätt i alla Azure-regioner och potentiellt lokalt.
  • Använd arbetsflödessystemet för att automatisera omdistributionen av kod till Azure Functions när koden uppdateras och taggas för lansering.
  • Använd distributionsfack för att testa Azure Functions innan de slutför push-överföringen till produktion.

Kostnadsoptimering

Kostnadsoptimering handlar om att titta på sätt att minska onödiga utgifter och förbättra drifteffektiviteten. Mer information finns i Översikt över kostnadsoptimeringspelare.

  • Normalt beräknar du kostnader med hjälp av priskalkylatorn för Azure.
  • Azure Functions Premium-planen krävs för Azure Virtual Network-anslutning, åtkomst till privata webbplatser, tjänstslutpunkter och förvärmda instanser.
  • Azure Functions Premium-planen faktureras för instanser i stället för förbrukning. Minimivärdet för en enskild instans säkerställer att det blir minst en månadsfaktura även utan körningar. Du kan ange ett maximalt antal instanser för att kontrollera kostnaderna för arbetsbelastningar som kan öka i storlek.

Deltagare

Den här artikeln underhålls av Microsoft. Det har ursprungligen skrivits av följande medarbetare.

Huvudförfattare:

Om du vill se icke-offentliga LinkedIn-profiler loggar du in på LinkedIn.

Nästa steg

Se följande arkitekturvägledning för Azure Functions:

Se följande arkitekturvägledning för Virtuella Azure-nätverk: