Dela via


Metoder för hållbar programvaruutveckling i Azure Kubernetes Service (AKS)

Principerna för hållbar programvaruutveckling är en uppsättning kompetenser som hjälper dig att definiera, bygga och köra hållbara program. Det övergripande målet är att minska koldioxidavtrycket i alla aspekter av ditt program. Vägledningen för Azure Well-Architected Framework för hållbarhet överensstämmer med principerna för hållbar programvaruutveckling från Green Software Foundation och ger en översikt över principerna för hållbar programvaruutveckling.

Hållbar programvaruutveckling är en förändring i prioriteringar och fokus. I många fall är det sätt som de flesta program är utformade och kör högdagrar snabba prestanda och låg svarstid. Hållbar programvaruteknik fokuserar på att minska så mycket koldioxidutsläpp som möjligt.

  • Om du tillämpar principer för hållbar programvaruutveckling kan du få snabbare prestanda eller kortare svarstid, till exempel att minska den totala nätverksbläddringen.
  • Att minska koldioxidutsläppen kan orsaka långsammare prestanda eller ökad svarstid, till exempel fördröjning av arbetsbelastningar med låg prioritet.

Följande vägledning fokuserar på tjänster som du skapar eller arbetar med i Azure med Azure Kubernetes Service (AKS). Den här artikeln innehåller checklistor för design och konfiguration, rekommenderade designmetoder och konfigurationsalternativ. Innan du tillämpar principer för hållbar programvaruutveckling i ditt program bör du granska programmets prioriteringar, behov och kompromisser.

Förutsättningar

  • Genom att förstå hållbarhetsvägledningen för well-architected Framework kan du skapa en högkvalitativ, stabil och effektiv molnarkitektur. Vi rekommenderar att du börjar med att läsa mer om hållbara arbetsbelastningar och granska din arbetsbelastning med hjälp av utvärdering av Microsoft Azure Well-Architected Review .
  • Det är viktigt att du har tydligt definierade affärskrav när du skapar program, eftersom de kan ha en direkt inverkan på både kluster- och arbetsbelastningsarkitekturer och konfigurationer. När du skapar eller uppdaterar befintliga program granskar du hållbarhetsdesignområdena för well-Architected Framework, tillsammans med programmets holistiska livscykel.

Förstå modellen för delat ansvar

Hållbarhet är ett delat ansvar mellan molnleverantören och kunden eller partnern som utformar och distribuerar AKS-kluster på plattformen. Att distribuera AKS gör det inte automatiskt hållbart, även om datacenter är optimerade för hållbarhet. Program som inte är korrekt optimerade kan fortfarande generera mer koldioxid än nödvändigt.

Läs mer om modellen med delat ansvar för hållbarhet.

Designprinciper

  • Koldioxideffektivitet: Avge minsta möjliga mängd koldioxid.

    Ett koldioxideffektivt molnprogram är ett som är optimerat, och utgångspunkten är kostnadsoptimeringen.

  • Energieffektivitet: Använd minsta möjliga mängd energi.

    Ett sätt att öka energieffektiviteten är att köra programmet på så få servrar som möjligt med servrarna som körs med högsta användningshastighet, vilket också ökar maskinvarueffektiviteten.

  • Maskinvarueffektivitet: Använd minsta möjliga mängd inbäddad koldioxid.

    Det finns två huvudsakliga metoder för maskinvarueffektivitet:

    • För slutanvändarenheter utökas maskinvarulivslängden.
    • För molnbaserad databehandling ökar resursanvändningen.
  • Koldioxidmedvetenhet: Gör mer när elen är renare och gör mindre när elen är smutsigare.

    Att vara koldioxidmedveten innebär att reagera på förändringar i koldioxidintensiteten genom att öka eller minska din efterfrågan.

Designmönster och metoder

Innan du granskar de detaljerade rekommendationerna i vart och ett av designområdena rekommenderar vi att du noga överväger följande designmönster för att skapa hållbara arbetsbelastningar i AKS:

Designmönster Gäller för arbetsbelastning Gäller för kluster
Design för oberoende skalning av logiska komponenter ✔️
Design för händelsedriven skalning ✔️
Sikta på tillståndslös design ✔️
Aktivera automatisk uppdatering av kluster och noder ✔️
Installera tillägg som stöds ✔️ ✔️
Containerisera din arbetsbelastning där det är tillämpligt ✔️
Använda energieffektiv maskinvara ✔️
Matcha skalbarhetsbehoven och använd funktioner för automatisk skalning och bursting ✔️
Inaktivera arbetsbelastningar och nodpooler utanför kontorstid ✔️ ✔️
Ta bort oanvända resurser ✔️ ✔️
Tagga dina resurser ✔️ ✔️
Optimera lagringsanvändning ✔️ ✔️
Välj en region som är närmast användarna ✔️
Minska nätverksbläddering mellan noder ✔️
Utvärdera med hjälp av ett tjänstnät ✔️
Optimera loggsamling ✔️ ✔️
Cachelagrade statiska data ✔️ ✔️
Utvärdera om TLS-avslutning ska användas ✔️ ✔️
Använda molnbaserade nätverkssäkerhetsverktyg och -kontroller ✔️ ✔️
Sök efter sårbarheter ✔️ ✔️

Programdesign

Utforska det här avsnittet om du vill veta mer om hur du optimerar dina program för en mer hållbar programdesign.

Design för oberoende skalning av logiska komponenter

En mikrotjänstarkitektur kan minska de beräkningsresurser som krävs, eftersom den möjliggör oberoende skalning av dess logiska komponenter och säkerställer att de skalas efter behov.

  • Överväg att använda Dapr Framework eller andra CNCF-projekt för att hjälpa dig att separera dina programfunktioner i olika mikrotjänster och för att tillåta oberoende skalning av dess logiska komponenter.

Design för händelsedriven skalning

När du skalar din arbetsbelastning baserat på relevanta affärsmått, till exempel HTTP-begäranden, kölängd och molnhändelser, kan du minska resursanvändningen och koldioxidutsläppen.

  • Använd Keda när du skapar händelsedrivna program för att tillåta nedskalning till noll när det inte finns någon efterfrågan.

Sikta på tillståndslös design

Om du tar bort tillstånd från din design minskar mängden minnesintern eller på diskdata som krävs av arbetsbelastningen för att fungera.

  • Överväg tillståndslös design för att minska onödig nätverksbelastning, databearbetning och beräkningsresurser.

Programplattform

Utforska det här avsnittet för att lära dig hur du fattar bättre välgrundade plattformsrelaterade beslut kring hållbarhet.

Aktivera automatisk uppdatering av kluster och noder

Ett uppdaterat kluster undviker onödiga prestandaproblem och ser till att du drar nytta av de senaste prestandaförbättringarna och beräkningsoptimeringarna.

Installera tillägg som stöds

Tillägg och tillägg som omfattas av AKS-supportpolicyn ger ytterligare funktioner som stöds i klustret, samtidigt som du kan dra nytta av de senaste prestandaförbättringarna och energioptimeringarna under hela klusterlivscykeln.

Containerisera din arbetsbelastning där det är tillämpligt

Containrar gör det möjligt att minska onödig resursallokering och utnyttja de resurser som distribueras på ett bättre sätt, eftersom de möjliggör paketering av lagerplatser och kräver mindre beräkningsresurser än virtuella datorer.

  • Använd Draft för att förenkla programcontaineriseringen genom att generera Dockerfiles- och Kubernetes-manifest.

Använda energieffektiv maskinvara

Ampere:s molnbaserade processorer är unikt utformade för att uppfylla både molnets höga prestanda- och energieffektivitetsbehov.

Matcha skalbarhetsbehoven och använd funktioner för automatisk skalning och bursting

Ett överdimensionerat kluster maximerar inte användningen av beräkningsresurser och kan leda till slöseri med energi. Avgränsa dina program i olika nodpooler för att tillåta klusterrätt storleksändring och oberoende skalning enligt programkraven. När kapaciteten i AKS-klustret tar slut växer du från AKS till ACI för att skala ut extra poddar till serverlösa noder och se till att din arbetsbelastning använder alla allokerade resurser effektivt.

Inaktivera arbetsbelastningar och nodpooler utanför kontorstid

Arbetsbelastningar kanske inte behöver köras kontinuerligt och kan stängas av för att minska energiavfallet och koldioxidutsläppen. Du kan helt stänga av (stoppa) dina nodpooler i AKS-klustret, så att du även kan spara på beräkningskostnader.

  • Använd nodpoolens stopp/start för att inaktivera nodpoolerna utanför kontorstid.
  • Använd KEDA CRON-skalningsappen för att skala ned dina arbetsbelastningar (poddar) baserat på tid.

Operativa procedurer

Utforska det här avsnittet för att konfigurera din miljö för att mäta och kontinuerligt förbättra dina arbetsbelastningskostnader och koldioxideffektivitet.

Ta bort resurser som inte används

Du bör identifiera och ta bort oanvända resurser, till exempel orefererade bilder och lagringsresurser, eftersom de har en direkt inverkan på maskinvara och energieffektivitet. För att säkerställa kontinuerlig energioptimering måste du behandla identifiering och borttagning av oanvända resurser som en process i stället för en punkt-i-tid-aktivitet.

  • Använd Azure Advisor för att identifiera oanvända resurser.
  • Använd ImageCleaner för att rensa inaktuella bilder och ta bort ett riskområde i klustret.

Tagga dina resurser

Att få rätt information och insikter vid rätt tidpunkt är viktigt för att skapa rapporter om prestanda och resursanvändning.

  • Ange Azure-taggar i klustret för att aktivera övervakning av dina arbetsbelastningar.

Storage

Utforska det här avsnittet om du vill lära dig hur du utformar en mer hållbar datalagringsarkitektur och optimerar befintliga distributioner.

Optimera lagringsanvändning

Datahämtnings- och datalagringsåtgärderna kan ha en betydande inverkan på både energi- och maskinvarueffektiviteten. Att utforma lösningar med rätt dataåtkomstmönster kan minska energiförbrukningen och inbäddad koldioxid.

Nätverk och anslutning

Utforska det här avsnittet om du vill lära dig hur du förbättrar och optimerar nätverkseffektiviteten för att minska onödiga koldioxidutsläpp.

Välj en region som är närmast användarna

Avståndet från ett datacenter till användare har en betydande inverkan på energiförbrukning och koldioxidutsläpp. Om du förkortar avståndet för ett nätverkspaket förbättras både din energi- och koldioxideffektivitet.

  • Granska dina programkrav och Azure-geografiska områden för att välja en region som är närmast den plats där de flesta nätverkspaket är på väg.

Minska nätverksbläddering mellan noder

Om du placerar noder i en enda region eller i en enda tillgänglighetszon minskar det fysiska avståndet mellan instanserna. För affärskritiska arbetsbelastningar måste du dock se till att klustret är utspritt över flera tillgänglighetszoner, vilket kan leda till mer nätverksbläddering och ökad koldioxidavtryck.

Utvärdera med hjälp av ett tjänstnät

Ett servicenät distribuerar extra containrar för kommunikation, vanligtvis i ett sidovagnsmönster, för att ge fler operativa funktioner, vilket leder till en ökning av CPU-användning och nätverkstrafik. Ändå kan du frikoppla ditt program från dessa funktioner när det flyttar ut dem från programskiktet och ned till infrastrukturlagret.

Optimera loggsamling

Att skicka och lagra alla loggar från alla möjliga källor (arbetsbelastningar, tjänster, diagnostik och plattformsaktivitet) kan öka lagrings- och nätverkstrafiken, vilket påverkar kostnader och koldioxidutsläpp.

Cachelagrade statiska data

Att använda Content Delivery Network (CDN) är en hållbar metod för att optimera nätverkstrafiken eftersom det minskar dataflytten i ett nätverk. Den minimerar svarstiden genom att lagra statiska data som ofta läses närmare användarna och minskar nätverkstrafiken och serverbelastningen.

  • Se till att du följer metodtipsen för CDN.
  • Överväg att använda Azure CDN för att sänka den förbrukade bandbredden och hålla kostnaderna nere.

Säkerhet

Utforska det här avsnittet om du vill veta mer om rekommendationerna som leder till en hållbar säkerhetsstatus i rätt storlek.

Utvärdera om TLS-avslutning ska användas

Transport Layer Security (TLS) säkerställer att alla data som skickas mellan webbservern och webbläsare förblir privata och krypterade. Att avsluta och återupprätta TLS ökar dock processoranvändningen och kan vara onödigt i vissa arkitekturer. En balanserad säkerhetsnivå kan erbjuda en mer hållbar och energieffektiv arbetsbelastning, medan en högre säkerhetsnivå kan öka kraven på beräkningsresurser.

  • Granska informationen om TLS-avslutning när du använder Application Gateway eller Azure Front Door. Avgör om du kan avsluta TLS vid din gränsgateway och fortsätta med icke-TLS till lastbalanseraren och arbetsbelastningen för arbetsbelastningen.

Använda molnbaserade nätverkssäkerhetsverktyg och -kontroller

Azure Front Door och Application Gateway hjälper till att hantera trafik från webbprogram, medan Azure Web Application Firewall ger skydd mot OWASP:s 10 främsta attacker och belastningsutgjutning av dåliga robotar vid nätverksgränsen. Dessa funktioner hjälper till att ta bort onödig dataöverföring och minska belastningen på molninfrastrukturen med lägre bandbredd och färre infrastrukturkrav.

Sök efter sårbarheter

Många attacker mot molninfrastrukturen syftar till att missbruka distribuerade resurser för angriparens direkta vinst, vilket leder till en onödig ökning av användning och kostnader. Verktyg för sårbarhetsgenomsökning hjälper till att minimera möjligheterna för angripare och minimera eventuell skadlig användning av resurser.

  • Följ rekommendationerna från Microsoft Defender för molnet.
  • Kör automatiserade verktyg för sårbarhetsgenomsökning, till exempel Defender för containrar, för att undvika onödig resursanvändning. De här verktygen hjälper dig att identifiera sårbarheter i dina bilder och minimera fönstret med möjligheter för angripare.

Nästa steg