Duurzame software-engineeringprocedures in Azure Kubernetes Service (AKS)
De principes voor duurzame software-engineering zijn een set competenties die u helpen bij het definiëren, bouwen en uitvoeren van duurzame toepassingen. Het algemene doel is om de koolstofvoetafdruk in elk aspect van uw toepassing te verminderen. De richtlijnen voor het Goed ontworpen Framework van Azure voor duurzaamheid komen overeen met de Principes van Duurzame Software Engineering van de Green Software Foundation en bieden een overzicht van de principes van duurzame software-engineering.
Duurzame software-engineering is een verschuiving in prioriteiten en focus. In veel gevallen markeert de manier waarop de meeste software is ontworpen en uitgevoerd, snelle prestaties en lage latentie. Duurzame software-engineering richt zich op het verminderen van zo veel mogelijk koolstofuitgifte.
- Het toepassen van duurzame software-engineeringprincipes kan u snellere prestaties of lagere latentie bieden, zoals het verlagen van het totale netwerkverkeer.
- Het verminderen van koolstofemissies kan leiden tot tragere prestaties of een hogere latentie, zoals het vertragen van workloads met lage prioriteit.
De volgende richtlijnen zijn gericht op services die u in Azure bouwt of gebruikt met Azure Kubernetes Service (AKS). Dit artikel bevat ontwerp- en configuratiecontrolelijsten, aanbevolen ontwerpprocedures en configuratieopties. Voordat u duurzame software-engineeringprincipes toepast op uw toepassing, bekijkt u de prioriteiten, behoeften en afwegingen van uw toepassing.
Vereisten
- Als u de richtlijnen voor duurzaamheid van het Well-Architected Framework begrijpt, kunt u een hoogwaardige, stabiele en efficiënte cloudarchitectuur produceren. We raden u aan om eerst meer te lezen over duurzame workloads en uw workload te beoordelen met behulp van de Beoordelingsevaluatie van Microsoft Azure Well-Architected .
- Het is van cruciaal belang dat u duidelijk gedefinieerde bedrijfsvereisten hebt bij het bouwen van toepassingen, omdat ze mogelijk een directe invloed hebben op zowel cluster- als workloadarchitecturen en -configuraties. Wanneer u bestaande toepassingen bouwt of bijwerkt, bekijkt u de ontwerpgebieden voor duurzaamheid van het Well-Architected Framework, naast de holistische levenscyclus van uw toepassing.
Inzicht krijgen in het model voor gedeelde verantwoordelijkheid
Duurzaamheid is een gedeelde verantwoordelijkheid tussen de cloudprovider en de klant of partner die AKS-clusters op het platform ontwerpt en implementeert. Het implementeren van AKS maakt het niet automatisch duurzaam, zelfs als de datacenters zijn geoptimaliseerd voor duurzaamheid. Toepassingen die niet goed zijn geoptimaliseerd, kunnen nog steeds meer koolstof uitstoten dan nodig is.
Meer informatie over het model voor gedeelde verantwoordelijkheid voor duurzaamheid.
Ontwerpbeginselen
Koolstofefficiëntie: zend de minste hoeveelheid koolstof uit.
Een koolstofefficiënte cloudtoepassing is een toepassing die is geoptimaliseerd en het startpunt is de kostenoptimalisatie.
Energie-efficiëntie: Gebruik de minste hoeveelheid energie die mogelijk is.
Een manier om de energie-efficiëntie te verhogen, is door de toepassing op zo weinig mogelijk servers uit te voeren met de servers met het hoogste gebruikspercentage, waardoor ook de hardware-efficiëntie wordt verhoogd.
Hardware-efficiëntie: gebruik de minste hoeveelheid opgenomen koolstof die mogelijk is.
Er zijn twee belangrijke benaderingen voor hardware-efficiëntie:
- Voor apparaten van eindgebruikers wordt de levensduur van hardware verlengd.
- Voor cloud-computing neemt het resourcegebruik toe.
Koolstofbewustzijn: Doe meer als de elektriciteit schoner is en minder doen wanneer de elektriciteit vuiler is.
Koolstofbewust zijn betekent reageren op verschuivingen in koolstofgehalte door uw vraag te vergroten of te verlagen.
Ontwerppatronen en -procedures
Voordat u de gedetailleerde aanbevelingen in elk van de ontwerpgebieden bekijkt, raden we u aan zorgvuldig na te denken over de volgende ontwerppatronen voor het bouwen van duurzame workloads op AKS:
Toepassingsontwerp
Bekijk deze sectie voor meer informatie over het optimaliseren van uw toepassingen voor een duurzaam toepassingsontwerp.
Ontwerpen voor onafhankelijk schalen van logische onderdelen
Een microservicearchitectuur kan de vereiste rekenresources verminderen, omdat het onafhankelijk schalen van de logische onderdelen mogelijk maakt en ervoor zorgt dat ze worden geschaald op basis van de vraag.
- Overweeg het Dapr Framework of andere CNCF-projecten te gebruiken om u te helpen uw toepassingsfunctionaliteit te scheiden in verschillende microservices en om onafhankelijk schalen van de logische onderdelen toe te staan.
Ontwerpen voor gebeurtenisgestuurd schalen
Wanneer u uw workload schaalt op basis van relevante zakelijke metrische gegevens, zoals HTTP-aanvragen, wachtrijlengte en cloudevenementen, kunt u helpen het resourcegebruik en de koolstofemissies te verminderen.
- Gebruik Keda bij het bouwen van gebeurtenisgestuurde toepassingen om omlaag te schalen naar nul wanneer er geen vraag is.
Doel voor staatloos ontwerp
Als u de status uit uw ontwerp verwijdert, worden de gegevens in het geheugen of op de schijf verminderd die nodig zijn voor de werkbelasting om te functioneren.
- Overweeg stateless ontwerp om onnodige netwerkbelasting, gegevensverwerking en rekenresources te verminderen.
Toepassingsplatform
Bekijk deze sectie voor meer informatie over het maken van beter geïnformeerde platformgerelateerde beslissingen over duurzaamheid.
Automatische updates voor clusters en knooppunten inschakelen
Een up-to-date cluster voorkomt onnodige prestatieproblemen en zorgt ervoor dat u profiteert van de nieuwste prestatieverbeteringen en rekenoptimalisaties.
- Schakel automatisch clusterupgrade in en pas beveiligingsupdates toe op knooppunten met behulp van GitHub Actions om ervoor te zorgen dat uw cluster de meest recente verbeteringen heeft.
Ondersteunde invoegtoepassingen en extensies installeren
Invoegtoepassingen en extensies die worden gedekt door het AKS-ondersteuningsbeleid bieden verdere ondersteunde functies voor uw cluster, terwijl u kunt profiteren van de nieuwste prestatieverbeteringen en energieverbruikoptimalisaties gedurende de hele levenscyclus van uw cluster.
- Installeer KEDA als een invoegtoepassing.
- Installeer GitOps & Dapr als extensies.
Uw workload waar van toepassing containeriseren
Containers maken het mogelijk om onnodige resourcetoewijzing te verminderen en beter gebruik te maken van de resources die zijn geïmplementeerd omdat ze bin-verpakking mogelijk maken en minder rekenresources nodig hebben dan virtuele machines.
- Gebruik Concept om toepassingscontainerisatie te vereenvoudigen door Dockerfiles en Kubernetes-manifesten te genereren.
Energie-efficiënte hardware gebruiken
De Cloud Native Processors van Ampere zijn uniek ontworpen om te voldoen aan zowel de hoge prestaties als de energie-efficiëntiebehoeften van de cloud.
- Evalueer of knooppunten met Ampere Altra Arm-processors een goede optie zijn voor uw workloads.
Voldoen aan de schaalbaarheidsbehoeften en maken gebruik van mogelijkheden voor automatisch schalen en bursting
Een te groot cluster maximaliseert het gebruik van rekenresources niet en kan leiden tot verspilling van energie. Scheid uw toepassingen in verschillende knooppuntgroepen om de juiste grootte en onafhankelijk schalen van clusters mogelijk te maken op basis van de toepassingsvereisten. Naarmate u geen capaciteit meer hebt in uw AKS-cluster, kunt u groeien van AKS naar ACI om extra pods uit te schalen naar serverloze knooppunten en ervoor te zorgen dat uw workload alle toegewezen resources efficiënt gebruikt.
- De grootte van uw cluster aanpassen aan de schaalbaarheidsbehoeften van uw toepassing. Gebruik de automatische schaalaanpassing van clusters met virtuele knooppunten om het rekenresourcegebruik snel te schalen en te maximaliseren.
- U kunt ook resourcequota afdwingen op naamruimteniveau en gebruikersknooppuntgroepen schalen naar nul wanneer er geen vraag is.
Werkbelastingen en knooppuntgroepen buiten kantooruren uitschakelen
Workloads hoeven mogelijk niet continu te worden uitgevoerd en kunnen worden uitgeschakeld om energieverspilling en koolstofemissies te verminderen. U kunt uw knooppuntgroepen in uw AKS-cluster volledig uitschakelen (stoppen), zodat u ook kunt besparen op de rekenkosten.
- Gebruik de stop/start van de knooppuntgroep om uw knooppuntgroepen buiten kantooruren uit te schakelen.
- Gebruik de KEDA CRON-scaler om uw workloads (pods) omlaag te schalen op basis van tijd.
Operationele procedures
Bekijk deze sectie om uw omgeving in te stellen voor het meten en continu verbeteren van de kosten en koolstofefficiëntie van uw workloads.
Ongebruikte resources verwijderen
U moet ongebruikte resources, zoals niet-deductieafbeeldingen en opslagresources, identificeren en verwijderen, omdat ze direct invloed hebben op hardware en energie-efficiëntie. Om continue energieverbruikoptimalisatie te garanderen, moet u het identificeren en verwijderen van ongebruikte resources behandelen als een proces in plaats van een time-activiteit naar een bepaald tijdstip.
- Gebruik Azure Advisor om ongebruikte resources te identificeren.
- Gebruik ImageCleaner om verouderde installatiekopieën op te schonen en een risicogebied in uw cluster te verwijderen.
Uw resources taggen
Het verkrijgen van de juiste informatie en inzichten op het juiste moment is belangrijk voor het produceren van rapporten over prestaties en resourcegebruik.
- Stel Azure-tags in op uw cluster om bewaking van uw workloads mogelijk te maken.
Storage
Bekijk deze sectie voor meer informatie over het ontwerpen van een meer duurzame architectuur voor gegevensopslag en het optimaliseren van bestaande implementaties.
Opslaggebruik optimaliseren
De bewerkingen voor het ophalen van gegevens en gegevensopslag kunnen een aanzienlijke invloed hebben op zowel energie- als hardware-efficiëntie. Het ontwerpen van oplossingen met het juiste patroon voor gegevenstoegang kan het energieverbruik en de opgenomen koolstof verminderen.
- Inzicht in de behoeften van uw toepassing om de juiste opslag te kiezen en deze te definiëren met behulp van opslagklassen om te voorkomen dat opslag onderbezetting wordt gebruikt.
- Overweeg volumes dynamisch in te richten om het aantal opslagbronnen automatisch te schalen.
Netwerk en connectiviteit
Bekijk deze sectie voor meer informatie over het verbeteren en optimaliseren van netwerkefficiëntie om onnodige koolstofuitstoot te verminderen.
Kies een regio die zich het dichtst bij gebruikers bevindt
De afstand van een datacentrum tot gebruikers heeft een aanzienlijke invloed op het energieverbruik en de koolstofuitstoot. Het verkorten van de afstand die een netwerkpakket reist, verbetert zowel uw energie- als koolstofefficiëntie.
- Controleer uw toepassingsvereisten en Azure-geografische gebieden om een regio te kiezen die het dichtst bij de meeste netwerkpakketten ligt.
Netwerkdoorkruising tussen knooppunten verminderen
Het plaatsen van knooppunten in één regio of één beschikbaarheidszone vermindert de fysieke afstand tussen de exemplaren. Voor bedrijfskritieke workloads moet u er echter voor zorgen dat uw cluster wordt verdeeld over meerdere beschikbaarheidszones, wat kan leiden tot meer netwerkkruising en een toename van uw koolstofvoetafdruk.
- Overweeg om uw knooppunten binnen een nabijheidsplaatsingsgroep te implementeren om de netwerkkruising te verminderen door ervoor te zorgen dat uw rekenresources zich fysiek dicht bij elkaar bevinden.
- Voor kritieke workloads configureert u nabijheidsplaatsingsgroepen met beschikbaarheidszones.
Evalueren met behulp van een service-mesh
Een service mesh implementeert extra containers voor communicatie, meestal in een sidecar-patroon, om meer operationele mogelijkheden te bieden, wat leidt tot een toename van het CPU-gebruik en netwerkverkeer. Niettemin kunt u uw toepassing loskoppelen van deze mogelijkheden terwijl deze van de toepassingslaag naar de infrastructuurlaag worden verplaatst.
- Houd zorgvuldig rekening met de toename van het CPU-gebruik en netwerkverkeer dat wordt gegenereerd door service mesh-communicatieonderdelen voordat u de beslissing neemt om er een te gebruiken.
Logboekverzameling optimaliseren
Het verzenden en opslaan van alle logboeken uit alle mogelijke bronnen (workloads, services, diagnostische gegevens en platformactiviteit) kan het opslag- en netwerkverkeer verhogen, wat van invloed is op de kosten en koolstofemissies.
- Zorg ervoor dat u alleen de benodigde logboekgegevens verzamelt en bewaart om uw vereisten te ondersteunen. Configureer regels voor gegevensverzameling voor uw AKS-workloads en implementeer ontwerpoverwegingen voor het optimaliseren van uw Log Analytics-kosten.
Statische gegevens in cache opslaan
Het gebruik van Content Delivery Network (CDN) is een duurzame benadering voor het optimaliseren van netwerkverkeer, omdat het de gegevensverplaatsing over een netwerk vermindert. Het minimaliseert de latentie door het opslaan van vaak gelezen statische gegevens dichter bij gebruikers en helpt het netwerkverkeer en de serverbelasting te verminderen.
- Zorg ervoor dat u de aanbevolen procedures voor CDN volgt.
- Overweeg om Azure CDN te gebruiken om de verbruikte bandbreedte te verlagen en de kosten laag te houden.
Beveiliging
Bekijk deze sectie voor meer informatie over de aanbevelingen die leiden tot een duurzame, rechtse beveiligingspostuur.
Evalueren of TLS-beëindiging moet worden gebruikt
Transport Layer Security (TLS) zorgt ervoor dat alle gegevens die worden doorgegeven tussen de webserver en webbrowsers privé en versleuteld blijven. Het beëindigen en opnieuw tot stand brengen van TLS verhoogt echter het CPU-gebruik en is mogelijk niet nodig in bepaalde architecturen. Een evenwichtig beveiligingsniveau kan een meer duurzame en energie-efficiënte workload bieden, terwijl een hoger beveiligingsniveau de rekenresourcevereisten kan verhogen.
- Bekijk de informatie over TLS-beëindiging bij het gebruik van Application Gateway of Azure Front Door. Bepaal of u TLS op uw randgateway kunt beëindigen en doorgaan met niet-TLS naar de load balancer en workload van uw werkbelasting.
Cloudeigen hulpprogramma's en besturingselementen voor netwerkbeveiliging gebruiken
Azure Front Door en Application Gateway helpen bij het beheren van verkeer van webtoepassingen, terwijl Azure Web Application Firewall bescherming biedt tegen OWASP top 10-aanvallen en het laden van slechte bots aan de netwerkrand. Deze mogelijkheden helpen onnodige gegevensoverdracht te verwijderen en de belasting van de cloudinfrastructuur te verminderen met een lagere bandbreedte en minder infrastructuurvereisten.
- Gebruik AGIC (Application Gateway Ingress Controller) in AKS om verkeer aan de netwerkrand te filteren en offloaden om het energieverbruik en de koolstofemissies te verminderen.
Scannen op beveiligingsproblemen
Veel aanvallen op de cloudinfrastructuur proberen geïmplementeerde resources te misbruiken voor de directe winst van de aanvaller, wat leidt tot een onnodige piek in gebruik en kosten. Hulpprogramma's voor het scannen van beveiligingsproblemen helpen bij het minimaliseren van het kansvenster voor aanvallers en het beperken van mogelijk schadelijk gebruik van resources.
- Volg de aanbevelingen van Microsoft Defender voor Cloud.
- Voer geautomatiseerde hulpprogramma's voor het scannen van beveiligingsproblemen uit, zoals Defender for Containers, om onnodig resourcegebruik te voorkomen. Met deze hulpprogramma's kunt u beveiligingsproblemen in uw afbeeldingen identificeren en het kansvenster voor aanvallers minimaliseren.
Volgende stappen
Azure Kubernetes Service