Dela via


Arkitekturstrategier för att optimera kod och infrastruktur

Gäller för denna checklista för Prestandaeffektivitet för Azure Well-Architected Framework:

PE:07 Optimera kod och infrastruktur. Använd kod som är högpresterande och se till att den avlastar ansvarsområden till plattformen. Använd endast kod och infrastruktur för deras kärnsyfte och endast när det behövs.

Den här guiden beskriver rekommendationerna för att optimera kod- och infrastrukturprestanda. För att optimera din kod och infrastruktur bör du endast använda komponenterna för deras kärnsyfte och endast när det behövs. När du överanvänder kod och infrastruktur skapar det onödig resursförbrukning, flaskhalsar och långsamma svar. För att kompensera för dessa ineffektiviteter måste du lägga till fler resurser för att utföra samma uppgifter.

Definitioner

Begrepp Definition
Konkurens När flera uppgifter eller processer utförs samtidigt men inte nödvändigtvis på exakt samma gång.
CPU-arkitektur De komponenter och principer som påverkar hur datorn fungerar.
Datakomprimering Åtgärden att minska storleken på filer genom att minimera redundanta data.
Hög Ett område i minnet som används för körningsminnesallokeringar.
Minnesläcka När en arbetsbelastning inte kan frigöra allokerat minne när minnet inte längre behövs.
Parallellitet När flera uppgifter eller processer utförs samtidigt.

Att optimera kod och infrastruktur innebär finjustering av koden och den stödjande infrastrukturen för att förbättra prestandaeffektiviteten. Det kräver utförande kod som kör uppgifter snabbt och inte slösar resurser. Det kräver en väldesignad infrastruktur som effektiviseras för att undvika onödig komplexitet. En arbetsbelastning bör använda plattformens inneboende funktioner. Det är en metod som hjälper till att säkerställa att både kod och infrastruktur främst används för deras kärnändamål och endast när det behövs.

Optimera kodprestanda

Du kan optimera kodprestanda genom att ändra kod för att minska resursanvändningen, minimera körningen och förbättra prestandan. Du kan ändra kod för att förbättra effektiviteten och hastigheten för ett program. Maskera inte prestandaproblem med råstyrkekraft. Brute force innebär att lägga till beräkningsresurser för att kompensera för kodprestanda, som att lägga till extra kapacitet i stället för att adressera källan. Du måste åtgärda prestandaproblem med optimering. När du optimerar kodprestanda hjälper det till att maximera användningen av systemresurser, förbättra svarstiden, minska svarstiden och förbättra användarupplevelsen.

Instrumentera koden

Instrumenteringskod syftar på metoden att lägga till kodfragment eller -bibliotek i kod som samlar in data och övervakar kodprestanda under körning. Med kodinstrumentation kan utvecklare samla in information om viktiga mått som resursförbrukning (CPU, minnesanvändning) och körningstid. Genom att instrumentera kod kan utvecklare få insikter om heta kodsökvägar, identifiera flaskhalsar i prestanda och optimera koden för bättre prestandaeffektivitet.

I en idealisk miljö bör du göra kodanalys tidigt i livscykeln för programvaruutveckling. Ju tidigare du får ett kodproblem, desto billigare är det att åtgärda det. Du vill automatisera så mycket av den här kodanalysen som möjligt. Använd verktyg för dynamisk och statisk kodanalys för att minska den manuella ansträngningen. Tänk dock på att den här testningen fortfarande är en simulering av produktionen. Produktion ger den tydligaste förståelsen för kodoptimering.

Kompromiss: Kodövervakningsverktyg kommer sannolikt att öka kostnaderna.

Identifiera heta sökvägar

Genom att instrumentera koden kan du mäta resursförbrukningen för olika kodsökvägar. De här måtten hjälper dig att identifiera heta sökvägar. Frekventa sökvägar har en betydande effekt på prestanda och resursanvändning. De är kritiska eller ofta utförda delar av ett program som kräver höga prestanda och låg svarstid. Tänk på följande för att identifiera heta kodsökvägar:

  • Analysera körningsdata: Samla in körningsdata och analysera dem för att identifiera områden i koden som använder betydande resurser, till exempel CPU-, minnes- eller I/O-åtgärder. Leta efter mönster eller delar av kod som körs ofta eller tar lång tid att slutföra.

  • Mät prestanda: Använd profileringsverktyg eller ramverk för prestandatestning för att mäta körningstiden och resursförbrukningen för olika kodsökvägar. Det hjälper till att identifiera flaskhalsar och förbättringsområden.

  • Överväg affärslogik och användareffekt: Utvärdera vikten av olika kodsökvägar baserat på deras relevans för programmets funktioner eller viktiga affärsåtgärder. Avgör vilka kodsökvägar som är avgörande för att leverera värde till användare eller uppfylla prestandakraven.

Optimera kodlogik

Att optimera kodlogik handlar om att förfina kodens struktur och design för att utföra uppgifter med färre resurser. Förbättrad logik minskar onödiga åtgärder. Det skapar snabbare körning med mindre resursförbrukning. Du bör ta bort onödiga åtgärder i kodsökvägen som kan påverka prestanda. Prioritera optimering av heta sökvägar för att se de största prestandaeffektivitetsvinsterna. Tänk på följande strategier för att optimera kodlogik:

  • Ta bort onödiga funktionsanrop: Granska koden och identifiera funktioner som inte är nödvändiga för de önskade funktionerna och kan påverka prestanda negativt. Om ett funktionsanrop till exempel utför en validering som slutfördes tidigare i koden kan du ta bort det onödiga verifieringsfunktionsanropet.

  • Minimera loggningsåtgärder: Loggning kan vara till hjälp vid felsökning och analys, men överdriven loggning kan påverka prestanda. Utvärdera behovet av varje loggningsåtgärd och ta bort eventuella onödiga loggningsanrop som inte är kritiska för prestandaanalys.

  • Optimera loopar och villkor: Analysera loopar och villkor i koden och identifiera eventuella onödiga iterationer eller villkor som kan elimineras. Att förenkla och optimera dessa strukturer kan förbättra kodens prestanda. Minimera funktionsanrop i loopar och eliminera redundanta beräkningar. Överväg att flytta beräkningar utanför loopen eller att avregistrera loopen.

  • Minska onödig databehandling: Granska koden för onödiga databearbetningsåtgärder, till exempel redundanta beräkningar eller transformeringar. Eliminera dessa onödiga åtgärder för att förbättra kodens effektivitet.

  • Optimera datastrukturer. Om du vill lagra och hämta data effektivt väljer du lämpliga datastrukturer, till exempel matriser, länkade listor, träd och hash-tabeller. Välj den bästa datastrukturen för ett specifikt problem. En lämplig datastruktur förbättrar programmets prestanda.

  • Minimera nätverksbegäranden: Om koden omfattar att göra nätverksbegäranden minimerar du antalet begäranden och optimerar deras användning. Batch-begäranden när det är möjligt och undvik onödiga rundturer för att förbättra prestandan.

  • Minimera allokeringar: Identifiera områden där överdriven minnesallokering sker. Optimera koden genom att minska onödiga allokeringar och återanvända befintliga resurser när det är möjligt. Genom att minimera allokeringar kan du förbättra minneseffektiviteten och övergripande prestanda. Använd lämpliga strategier för minneshantering och skräpinsamling för ditt programmeringsspråk.

  • Minska datastrukturens storlek: Utvärdera storleken på dina datastrukturer, till exempel klasser, och identifiera områden där minskning är möjlig. Granska datakraven och eliminera onödiga fält eller egenskaper. Optimera minnesanvändningen genom att välja lämpliga datatyper och packa data effektivt.

  • Använd prestandaoptimerade SDK:er och bibliotek. Använd interna SDK:er eller prestandaoptimerade bibliotek. Interna SDK:er är utformade för att interagera med tjänsterna och resurserna på en plattform eller inom ett ramverk. Molnbaserade SDK:er fungerar till exempel bättre med molntjänstdataplan än med anpassad API-åtkomst. SDK:er är utmärkta när det gäller att hantera nätverksbegäranden och optimera interaktioner. Prestandaoptimerade bibliotek, till exempel Math.NET, innehåller prestandaoptimerade funktioner. När du tillämpar funktionerna på rätt sätt kan du förbättra arbetsbelastningens prestanda.

  • Övergripande implementering: Överväg effekterna av övergripande implementeringar, till exempel mellanprogram eller tokenkontroller, och utvärdera om de påverkar prestanda negativt.

Granska de prestandarekommendationer som är specifika för det programmeringsspråk som du arbetar med. Utvärdera koden mot dessa rekommendationer för att identifiera förbättringsområden.

Kompromisser:

  • Optimering av kod och heta sökvägar kräver utvecklarkunskaper i att identifiera kodeffektivitet är subjektivt och kan vara högkvalificerad individ som krävs för andra uppgifter.
  • SDK:er ger bekvämlighet och eliminerar komplexiteten i att interagera med API:er. Men SDK:er kan begränsa dina kontroll- och anpassningsalternativ för anpassad kod.

Optimera minneshantering

Optimering av minneshantering innebär att förfina hur en arbetsbelastning använder, allokerar och frigör minnesresurser för att förbättra effektiviteten. Korrekt minneshantering förbättrar kodprestanda eftersom det minskar minnesbelastningen. Effektiv minnesanvändning minskar svarstiden, förhindrar systemavmattning eller krascher och maximerar dataflödet för beräkningsuppgifter. Överväg följande strategier för att optimera minneshantering.

Felsöka minnesproblem. Minnesdumpar är ögonblicksbilder av programminne. De avbildar minnestillståndet för ett program vid en viss tidpunkt. Minnesdumpar möjliggör retrospektiv analys av minnesrelaterade problem. Välj lämplig typ av minnesdump baserat på vilket problem du försöker diagnostisera och vilka resurser som är tillgängliga. Du bör använda miniatyrdumpar för rutinmässig felsökning och fullständiga dumpar för komplexa, kritiska problem. Den här strategin ger en balans mellan resursanvändning och diagnostikfunktioner. Många kodvärdtjänster stöder minnesfelsökning. Du bör föredra tjänster som stöder minnesanalys framför de tjänster som inte gör det. Här är de grundläggande stegen för att felsöka minnesproblem:

  1. Avbilda minnesdumpar: Börja med att konfigurera en mekanism för att samla in minnesdumpar under programmets körning. Avbildningen kan utlösas manuellt, automatiskt eller när specifika villkor (t.ex. överdriven minnesförbrukning) uppfylls. Vissa molntjänster kanske redan erbjuder den här processen.

  2. Analysera minnesdumpar: När du har samlat in minnesdumpar analyserar du dem. Många verktyg kan hjälpa dig att inspektera dessa dumpar, till exempel WinDbg för Windows-program eller GDB för Unix-baserade system.

  3. Identifiera minnesläckor: Fokusera på att identifiera minnesläckor under analysen. Minnesläckor uppstår när programmet allokerar minne men inte släpper det när minnet inte längre krävs. Sök efter objekt eller datastrukturer som finns kvar i minnet även när de ska frigöras.

  4. Åtgärda och testa: När du identifierar den problematiska koden koncentrerar du dig på att lösa minnesproblemen. Lösningar kan innebära att frigöra minne på rätt sätt, optimera datastrukturer eller omvärdera metoder för minneshantering. Bekräfta att dina lösningar genomgår rigorösa tester för att säkerställa deras effekt.

  5. Iterera och övervaka: Minneshantering är en kontinuerlig process. Övervaka programmets minnesanvändning rutinmässigt och spara i insamlingen av minnesdumpar i produktion. Gå regelbundet tillbaka till analys- och optimeringsstegen för att se till att minnesproblemen inte visas igen med efterföljande kodändringar.

Genom att införliva analys av minnesdumpar i livscykeln för programutveckling kan du öka tillförlitligheten och effektiviteten i dina program. Det hjälper till att minska sannolikheten för minnesrelaterade problem i produktionen.

Minska minnesallokering. Minimera minnesallokeringar för att minska kodens totala minnesfotavtryck. Din arbetsbelastning kan använda det tillgängliga minnet effektivt. Det finns mindre behov för skräpinsamlaren att frigöra oanvänt minne, och det minskar frekvensen och varaktigheten för skräpinsamlingscykler. Minnesallokeringar kan vara kostsamma, särskilt om du utför dem ofta. Minimera minnesallokeringar så att koden kan köras snabbt och effektivt.

Cachelagrar data som används ofta nära processorn, vilket förbättrar prestandan. När du minimerar minnesallokering är det mindre konkurrens om cacheutrymme, så att du effektivt kan använda cacheminnet. Ett stort antal minnesallokeringar kan försämra programmets prestanda och generera fel. Andra sätt att minimera minnesallokeringar är:

  • Lokala variabler: Använd lokala variabler i stället för globala variabler för att minimera minnesförbrukningen.

  • Lat initiering: Implementera lat initiering för att skjuta upp skapandet av objekt eller resurser tills de behövs.

  • Buffertar: Hantera buffertar effektivt för att undvika allokering av stora minnesbuffertar.

  • Objektpooler: Överväg att använda objektpooler för att återanvända stora objekt i stället för att allokera och frigöra dem.

Mer information finns i Minska minnesallokeringar och Den stora objekthögen på Windows-system.

Använda samtidighet och parallellitet

Att använda samtidighet och parallellitet innebär att köra flera uppgifter eller processer samtidigt eller på ett överlappande sätt för att effektivt använda beräkningsresurser. Dessa tekniker ökar det totala dataflödet och antalet uppgifter som en arbetsbelastning kan bearbeta. När du kör uppgifter samtidigt eller parallellt minskar det körningen av programmet och minskar svarstiden och ökar svarstiderna. Samtidighet och parallellitet möjliggör effektiv användning av beräkningsresurser, till exempel CPU-kärnor eller distribuerade system. Samtidighet och parallellitet distribuerar effektivt arbetsbelastningen mellan beräkningsresurserna.

Använd parallellitet. Parallellitet är möjligheten för ett system att samtidigt utlösa flera uppgifter eller processer på flera beräkningsresurser. Parallellitet delar upp en arbetsbelastning i mindre uppgifter som körs parallellt. Du kan uppnå parallellitet med hjälp av tekniker som multibearbetning eller distribuerad databehandling. Distribuera uppgifter mellan processorer med flera kärnor för att optimera arbetsbelastningshanteringen. Optimera koden för att dra nytta av CPU-arkitekturen, trådningsmodeller och processorer med flera kärnor. När du kör kod parallellt förbättras prestandan eftersom arbetsbelastningen distribueras över flera kärnor.

Använd samtidighet. Samtidighet är möjligheten för ett system att köra flera uppgifter eller processer. Samtidighet gör det möjligt för olika delar av ett program att göra framsteg oberoende av varandra, vilket kan förbättra den övergripande prestandan. Du kan implementera samtidighet med hjälp av tekniker som multitrådning, där flera trådar körs samtidigt i en enda process. Du kan också använda asynkron programmering, där aktiviteter utlöses samtidigt.

  • Asynkron programmering: Asynkron programmering är en metod för att utlösa uppgifter utan att blockera huvudtråden. Med asynkron programmering kan ett program utlösa uppgifter i väntan på att långvariga åtgärder ska slutföras. Med asynkron programmering kan programmet initiera flera uppgifter och vänta tills de har slutförts asynkront. Programmet behöver inte vänta tills varje uppgift har slutförts innan du går vidare till nästa.

    Det finns många asynkrona programmeringstekniker och mönster, beroende på programmeringsspråk och plattform. En vanlig metod är att använda asynkrona nyckelord och konstruktioner, till exempel async och await, på språk som C#. Med dessa nyckelord kan du definiera asynkrona metoder. Överväg att använda mönstret Asynkron Request-Reply för HTTP-trafik.

    Många ramverk och bibliotek har inbyggt stöd för asynkron programmering. I .NET-plattformen kan du till exempel implementera asynkrona åtgärder med hjälp av mönster som Task-Based asynkront mönster och Event-Based asynkront mönster. Den specifika implementeringen av asynkron programmering varierar beroende på programmets programmeringsspråk, plattform och krav.

  • Köer: En kö är en lagringsbuffert som finns mellan en begärande komponent (producent) och bearbetningskomponenten (konsument) för arbetsbelastningen. Det kan finnas flera konsumenter för en enda kö. När aktiviteterna ökar bör du skala konsumenterna för att möta efterfrågan. Producenten placerar uppgifter i en kö. Kön lagrar uppgifterna tills en konsument har kapacitet. En kö är ofta det bästa sättet att lämna över arbete till en bearbetningstjänst som upplever toppar i efterfrågan. Mer information finns iQueue-Based mönster för belastningsutjämning och Lagringsköer och Service Bus-köer.

Använda anslutningspooler

Anslutningspooler är en metod för att återanvända etablerade databasanslutningar i stället för att skapa en ny anslutning för varje begäran. Det kan vara dyrt att upprätta en anslutning till en databas. Du måste skapa en autentiserad nätverksanslutning till fjärrdatabasservern. Databasanslutningar är särskilt dyra för program som ofta öppnar nya anslutningar. Anslutningspooler återanvänder befintliga anslutningar och eliminerar kostnaden för att öppna en ny anslutning för varje begäran. Anslutningspooler minskar anslutningsfördröjningen och möjliggör högt databasdataflöde (transaktioner per sekund) på servern. Du bör välja en poolstorlek som kan hantera fler anslutningar än vad du har för närvarande. Målet är att anslutningspoolen snabbt ska hantera nya inkommande begäranden.

Förstå gränser för anslutningspooler. Vissa tjänster begränsar antalet nätverksanslutningar. När du överskrider den här gränsen kan anslutningarna sakta ned eller avslutas. Du kan använda anslutningspooler för att upprätta en fast uppsättning anslutningar vid start och sedan underhålla dessa anslutningar. I många fall kan en standardpoolstorlek bestå av endast ett fåtal anslutningar som fungerar snabbt i grundläggande testscenarier. Ditt program kan uttömma standardpoolstorleken under skalning och skapa en flaskhals. Du bör upprätta en poolstorlek som mappar till antalet samtidiga transaktioner som stöds på varje programinstans.

Testa anslutningspoolen. Varje databas och programplattform har lite olika krav för att konfigurera och använda en pool. Testa anslutningspoolen för att säkerställa att den fungerar effektivt under belastning.

Risk: Anslutningspooler kan skapa poolfragmentering och försämra prestanda.

Optimera bakgrundsjobb

Många program kräver bakgrundsaktiviteter som körs oberoende av användargränssnittet. Programmet kan starta jobbet och fortsätta att bearbeta interaktiva begäranden från användare. Exempel på bakgrundsjobb är batchjobb, processorintensiva uppgifter och tidskrävande processer, till exempel arbetsflöden. Bakgrundsaktiviteter bör inte blockera programmet eller orsaka inkonsekvenser på grund av fördröjd åtgärd när systemet är under belastning. För att förbättra prestandan kan du skala beräkningsinstanser som är värdar för bakgrundsaktiviteter. Mer information finns i Bakgrundsjobb och skalnings- och prestandaöverväganden.

Optimera infrastrukturprestanda

Att optimera infrastrukturens prestanda innebär att förbättra och justera infrastrukturelement för att säkerställa högsta drift och bästa användning av resurser för en arbetsbelastning. Genom att finjustera infrastrukturen kan du minimera avfall, minska fördröjningar och uppnå mer med de tillgängliga resurserna. Det säkerställer att arbetsbelastningarna körs tillförlitligt och snabbt, vilket leder till förbättrade användarupplevelser och kostnadsbesparingar. Tänk på följande strategier för att optimera infrastrukturens prestanda:

Lägg till användningsgränser. Du kan implementera användningsgränser för vissa arbetsbelastningskomponenter. Om du till exempel vill ta bort instabila poddar kan du definiera processor- och minnesgränser för poddar i Azure Kubernetes Service (AKS). För att optimera prestanda kan du definiera minnesgränser i virtuella Java-datorer (VM).

Effektivisera infrastrukturen. Förenkla arbetsbelastningen för att minska risken för interaktion, beroende och kompatibilitetsproblem. När du förenklar arbetsbelastningen optimerar du resursanvändningen för minne, bearbetningskraft och lagring.

Minska belastningen. För att minska belastningen på en arbetsbelastning minimerar du efterfrågan på ett program och gör det möjligt för resurser att utföra sina primära uppgifter. Det är till exempel vanligt att undvika att köra säkerhetslösningar i koden eller på enskilda beräkningsinstanser. I stället bör webbservrar hantera HTTP-begäranden. Brandväggar för webbprogram och gatewayresurser kan hantera säkerhetskontroller. Följande strategier bidrar till att minska belastningen på din arbetsbelastning:

  • Slutlig konsekvens: Anta en eventuell konsekvensmodell för att förbättra prestanda genom att tillåta att data är något daterade. Slutlig konsekvens minskar den omedelbara efterfrågan på CPU-cykler och nätverksbandbredd för konstanta datauppdateringar.

  • Delegera uppgifter: Delegera serveruppgifter till klienter eller mellanhänder, till exempel sökindex och cacheminnen. Delegera uppgifter som att sortera data, filtrera data eller återge vyer. När du avlastar dessa uppgifter minskar du arbetsbelastningen på dina servrar och förbättrar prestandan.

Optimera nätverket. Om du vill optimera ett arbetsbelastningsnätverk för prestanda konfigurerar och finjusterar du nätverksinfrastrukturen. Se till att arbetsbelastningen kan fungera på högsta effektivitetsnivå.

  • Nätverksprotokoll: Uppgradera till moderna protokoll som HTTP/2, vilket gör att flera begäranden kan skickas via en enda anslutning. Moderna protokoll minskar kostnaderna för att upprätta nya anslutningar.

    Kompromiss: Moderna protokoll kan exkludera äldre klienter.

  • Nätverkschattighet: Batch-nätverksbegäranden tillsammans för att minska antalet begäranden. I stället för att göra flera små begäranden kombinerar du dem till större begäranden för att minska nätverkskostnaderna.

  • Databasfrågor: Kontrollera att databasfrågor endast hämtar nödvändig information. Undvik att hämta stora mängder onödiga data, vilket kan leda till ökad nätverkstrafik och långsamma prestanda.

  • Statiska data: Använd ett nätverk för innehållsleverans för att cachelagrat statiskt innehåll som används ofta och som är nära användarna. När du cachelagrar data behöver de inte färdas över långa sträckor. Cachelagring förbättrar svarstiderna och minskar nätverkstrafiken.

  • Logginsamling: Samla in och behåll endast de loggdata som krävs för att stödja dina krav. Konfigurera regler för datainsamling och implementera designöverväganden för att optimera dina Log Analytics-kostnader.

  • Datakomprimering: Komprimera och paket http-innehåll och fildata för att möjliggöra snabb överföring mellan klienter och servrar. Komprimering krymper de data som en sida eller ett API returnerar och skickar tillbaka till webbläsaren eller klientappen. Komprimering optimerar nätverkstrafiken, vilket kan påskynda programkommunikationen.

    Kompromiss: Komprimering lägger till bearbetning på serversidan och klientsidan. Programmet måste komprimera, skicka och dekomprimera data. Multicast-kommunikation, eller kommunikation till flera mottagare, kan skapa dekomprimeringskostnader. Du måste testa och mäta prestandavariationerna före och efter implementeringen av datakomprimering för att avgöra om det passar bra för din arbetsbelastning. Mer information finns i Svarskomprimering i ASP.NET Core.

Azure-stöd

Instrumenteringskod: Azure Monitor Application Insights stöder automatisk instrumentering (autoinstrumentation) och manuell instrumentering av programkod. Automatisk instrumentering möjliggör telemetriinsamling utan att röra programmets kod. Manuell instrumentering kräver kodändringar för att implementera Application Insights- eller OpenTelemetry-API:et. Du kan använda Application Insights Profiler för att optimera heta sökvägar.

Optimera kodlogik: Azure erbjuder SDK:er och bibliotek för olika programmeringsspråk för att interagera med Azure-tjänster. Använd SDK:er för att förenkla interaktionen mellan program och Azure-resurser. SDK:er ger optimal interaktion med Azure-tjänster, vilket minskar svarstiden och förbättrar effektiviteten.

Optimera minneshantering: Använd funktionen för smart identifiering i Application Insights för att analysera minnesförbrukning och hjälpa till att identifiera och åtgärda minnesläckor.

Azure App Service har en funktion för insamling och analys av profiler och minnesdumpar. Funktionen Autohealing i App Service kan automatiskt ta minnesdumpar och profilspårningar av .NET- och Java-appar.

Använda samtidighet och parallellitet: Olika Azure-tjänster ger unikt stöd för samtidighet, till exempel Azure Cosmos DB, Azure Functions och Blob Storage. För parallellitet stöder tjänster som AKS stöder distribution av containerbaserade program, vilket förbättrar parallell bearbetning.

Azure Batch är en molnbaserad jobbschemaläggningstjänst som du kan använda för att aktivera parallell och högpresterande databehandling utan att behöva konfigurera infrastrukturen. Mer information finns i Bakgrundsjobb.

Optimera infrastrukturens prestanda: Implementera Azure Resource Manager-mallar för att definiera och distribuera infrastruktur med hjälp av kod. Använd dessa mallar för att implementera effektiva, repeterbara och konsekventa resursdistributioner. Azure Policy tillhandahåller styrningsfunktioner för att säkerställa att resursdistributioner följer organisationens metodtips och standarder.

För asynkron programmering använder du skalbara kötjänster, till exempel Azure Queue Storage och Azure Service Bus, för att underlätta asynkron programmering. Du kan köa uppgifter och bearbeta dem separat. För att stödja asynkrona åtgärder erbjuder Azure Marketplace köer och verktyg från tredje part som du kan integrera med Azure-tjänster.

Checklista för prestandaeffektivitet

Se den fullständiga uppsättningen rekommendationer.