Ontwerpprincipes voor prestatie-efficiëntie
Prestatie-efficiëntie is de mogelijkheid van uw workload om zich aan te passen aan veranderingen in de vraag. Een workload moet een toename van de belasting kunnen verwerken zonder dat dit ten koste gaat van de gebruikerservaring. Wanneer de belasting daarentegen afneemt, moet de workload de resources besparen. Capaciteit, waarmee de beschikbaarheid van resources (CPU en geheugen) wordt aangegeven, is een belangrijke factor.
Het ontwerp van de workload moet niet alleen afhankelijk zijn van vooraf ingerichte capaciteit, waarmee prestaties tot een bepaalde limiet worden gegarandeerd. Als deze limiet wordt overschreden, kan de workload prestatieproblemen ondervinden of zelfs storingen ondervinden. Wanneer de belasting onder die limiet ligt, blijven resources onnodig worden uitgevoerd, wat kosten met zich meebrengt.
U hebt een uitgebreide strategie nodig om prestatiedoelen in de loop van de tijd te behouden. Prestatieoverwegingen moeten geen bijzaak zijn in het ontwerpproces, maar moeten alleen worden opgelost wanneer er problemen optreden in de productie. Neem in plaats daarvan een mentaliteit aan waarbij prestaties een belangrijke overweging zijn vanaf de eerste fasen van het ontwerp. Bouw het systeem in eerste instantie zonder specifieke prestatiedoelen. Maar van daaruit kunt u de prestaties in elke ontwikkelingsfase testen en meten om de voortgang en effectiviteit te garanderen. Continue optimalisatie van deze doelen gedurende het hele proces en het opnemen van lessen die zijn opgedaan uit de productie, kan potentiële problemen van tevoren aanzienlijk verminderen.
Deze ontwerpprincipes kunnen helpen bij het bouwen van uw strategie voor het beheren van de capaciteit van resources om voldoende te voldoen aan de vereisten van uw bedrijf voor verwacht gebruik. Verminder ook verspilling buiten de piekuren. Nadat u een strategie hebt gekozen, kunt u uw ontwerp verstevigen met behulp van de controlelijst prestatie-efficiëntie.
Prestatie-efficiëntie gaat over effectief gebruik van workloadresources. Zonder een goede strategie kunt u mogelijk niet anticiperen op en voldoen aan de behoeften van gebruikers. Mogelijk moet u uw toevlucht nemen tot langetermijnprognoses en vooraf ingerichte capaciteit, waardoor u niet optimaal kunt profiteren van uw cloudplatform.
Onderhandelen over realistische prestatiedoelen
De beoogde gebruikerservaring wordt gedefinieerd en er is een strategie om een benchmark te ontwikkelen en doelen te meten aan de vooraf ingestelde bedrijfsvereisten. |
---|
Vanuit het oogpunt van prestaties is het ideaal om goed gedefinieerde prestatiedoelen te hebben om uw ontwerpproces te starten. Als u deze doelen wilt instellen, moet u een goed begrip hebben van de bedrijfsvereisten en de verwachte kwaliteit van de service die de workload naar verwachting zal leveren. Definieer de verwachtingen in samenwerking met de zakelijke belanghebbenden. In plaats van alleen te focussen op technische metrische gegevens, kunt u de acceptabele effecten voor de gebruikerservaring voor de belangrijkste stromen bepalen.
Er is een kringafhankelijkheid. U kunt niet meten wat u niet hebt gedefinieerd en u kunt niet definiëren zonder metingen. Het is dus ook belangrijk om de prestaties van de workload te meten totdat u een bevredigende definitie van acceptabele drempelwaarde hebt bereikt met collectieve overeenkomst.
Er is een sterke correlatie tussen prestatie- en betrouwbaarheidsdoelen, die helpen bij het bepalen van de kwaliteit van de service op het gebied van prestaties, beschikbaarheid en tolerantie. Zonder een duidelijke definitie is het lastig om prestaties te meten, te waarschuwen en te testen. Nadat u de doelen hebt vastgesteld en de werkelijke aantallen hebt geïdentificeerd door middel van tests in de loop van de tijd, kunt u automatisering implementeren voor doorlopend testen op basis van deze doelen.
Volg de aanbevolen procedures bij het definiëren van doelen op macroniveau, zelfs als ze bij benadering of binnen een bereik vallen.
Methode | Voordelen |
---|---|
Bereid u voor op effectieve onderhandelingen door inzicht te krijgen in technische concepten, ontwerpmogelijkheden te verkennen met de beschikbare infrastructuur en resultaten van concrete experimenten te gebruiken, indien beschikbaar. Gebruik historische gegevens om inzicht te krijgen in gebruikspatronen en knelpunten. Breng inzicht uit externe factoren, zoals input van marktanalyse, experts en industriestandaarden. |
U kunt weloverwogen beslissingen nemen op basis van praktische inzichten. De prestatiedoelen zijn gericht op de gebruikerservaring die is gebaseerd op wat haalbaar is, best practices in de branche en de huidige markttrends. |
Werk samen met de bedrijfseigenaren om inzicht te hebben in de beloften van gebruikers, indien van toepassing op het gebied van kwaliteit en naleving van regelgeving. Houd een breed perspectief en vermijd gedetailleerde details in deze fase. Wees expliciet over wat acceptabele prestaties vertegenwoordigen, op basis van de investeringen. Inzicht in de bedrijfscontext en verwachte groei. |
U vermijdt veronderstellingen te maken die mogelijk niet overeenkomen met de bedrijfsdoelen. Het stimuleert ook duidelijkheid en motivatie binnen het workloadteam. Het hebben van een bedrijfscontext over functionele en niet-functionele vereisten kan ontwerpwijzigingen aan het licht brengen in andere Azure Well-Architected pijlers en u helpen weloverwogen afwegingen te maken. Als u in een vroeg stadium parameters definieert, kunt u kosten voorkomen die gepaard gaan met mogelijke oplossingen die later opnieuw worden ontworpen. Hiermee kunt u ervoor zorgen dat prestatiedoelen toekomstige projecties omvatten, zodat u de huidige inspanningen kunt afstemmen op langetermijndoelen. |
Identificeer de workloadstromen en geef prioriteit aan de stromen in het architectuurdiagram. Definieer de prestatietolerantie van elke stroom als een bereik van ambitieuze tot onaanvaardbare prestaties. Evalueer de begin- en eindpunten voor elke stroom, rekening houdend met de ernst van het pad, de gebruiksfrequentie en de architecturale intensiteit. |
Door stromen prioriteit te geven, kunt u uw resources richten op kritieke gebieden die het meeste effect hebben op gebruikers- en bedrijfsresultaten. Door het systeem op te delen in onderdelen en afhankelijkheden, begrijpt u de functie en invloed van elk onderdeel op de prestaties. U wordt ook bewust van mogelijke problemen. Het helpt bij het vaststellen van een prestatiebasislijn en schijfoptimalisatie. |
Beginnen met het bouwen van een prestatiemodel Overweeg of gebruikspatronen seizoensgebonden of dagelijkse variaties laten zien. Houd rekening met de kosten, bewerkingen en kritiek voor het bedrijf. Gebruik industriestandaarden om metrische gegevens en aggregatiemethoden te kwantificeren , zoals het gebruik van percentielen. Evalueer de verwachtingen van de vraag en het aanbod en de beperkingen die zakelijke beperkingen opleggen. Groeivooruitzichten opnemen. |
Een prestatiemodel biedt inzicht in optimaal gebruik van resources en helpt bij strategische planning. Industriestandaarden helpen bij benchmarking. Future proofing zorgt ervoor dat de prestatiedoelen relevant blijven en kunnen worden aangepast aan wijzigingen. |
Ontwerpen om te voldoen aan capaciteitsvereisten
Voldoende aanbod bieden om aan de verwachte vraag te voldoen. |
---|
Het is belangrijk om de prestaties proactief te meten. Het meten van prestaties omvat het meten van basislijnen en het hebben van een voorlopig inzicht in welke onderdelen van het systeem waarschijnlijk uitdagingen zullen vormen. U kunt dit bereiken zonder een volledige prestatietest uit te voeren of door middel van gedetailleerde optimalisatie. Door deze eerste stappen uit te voeren, brengt u vroeg in de ontwikkelingslevenscyclus een basis tot stand voor effectief prestatiebeheer.
Bekijk het systeem als geheel, in plaats van zich te richten op afzonderlijke onderdelen. Vermijd afstemming in deze fase. Het maken van gedetailleerde prestatieverbeteringen resulteert in compromissen op andere gebieden. Naarmate u de levenscyclus doorloopt en begint met het testen van gebruikersacceptatie of naar productie gaat, kunt u snel bepalen op welke gebieden verdere optimalisatie nodig is.
Methode | Voordeel |
---|---|
Evalueer de elasticiteitsvereisten voor de geïdentificeerde stromen. Verken ontwerppatronen die kunnen worden geïmplementeerd in de technologiestack, rekening houdend met de toepassing en de onderliggende reken- en gegevenslagen. |
U kunt schaalbaarheidsvereisten definiëren voor bestaande onderdelen die meer capaciteit nodig hebben en de gebieden waar u extra onderdelen nodig hebt om de belasting te verdelen. U bent op de hoogte van mogelijke knelpunten in het systeem en ontwerp compenserende besturingselementen, zoals het toevoegen van cachemogelijkheden om latentie en systeembelasting te verminderen. |
Kies de juiste resources in de technologiestack, zodat u aan de prestatiedoelen kunt voldoen en kunt integreren met het systeem. Overweeg functies die kunnen voldoen aan de schaalbaarheidsvereisten. Zoek de juiste balans tussen resourcetoewijzing en systeemvereisten om onverwachte pieken efficiënt af te handelen. |
Door de verschillende mogelijkheden van de resources te analyseren, zorgt u ervoor dat elk onderdeel bijdraagt aan de algehele functionaliteit en prestaties van het systeem. U kunt profiteren van de ingebouwde mogelijkheden die automatisch schaalbewerkingen activeren. Resources met de juiste grootte kunnen voldoen aan wijzigingen in de vraag zonder overprovisioning, wat leidt tot kostenbesparingen. |
Maak capaciteitsplanning op basis van de vraag en de mogelijkheid van geselecteerde resources om uw prestatiemodel te verrijken. Gebruik voorspellende modelleringstechnieken om verwachte capaciteitswijzigingen te voorspellen die kunnen optreden met voorspelbare en onverwachte wijzigingen. Definieer prestatiedoelen die kunnen worden omgezet in technische vereisten. |
U kunt resources efficiënt gebruiken en aan de vraag voldoen zonder te veel inrichting, waardoor onnodige kosten worden vermeden. U begrijpt hoe de ontwerpkeuzen van invloed zijn op de prestaties. |
Implementeer een proof-of-concept dat de technische vereisten en ontwerpkeuzes valideert. | Een proof-of-concept is essentieel bij het valideren van het ontwerp om te bepalen of het systeem aan de prestatiedoelen kan voldoen en of deze doelen realistisch zijn. Op basis van de verwachte belasting kunt u valideren of de verwachte capaciteit kan voldoen aan de prestatiedoelen. Controleer ook de kostenconsequenties van de ontwerpkeuzen. |
Documenteer uw strategie voor het testen van prestaties. Neem gebruiksvoorbeelden, verschillende methodologieën en frequentie van uw testplannen op. Definieer een proces voor bewerking dat wordt beschreven in het prestatietestplan. De testcases in het plan sorteren en prioriteren. Richt u op cases die waardevolle inzichten bieden in prestatiedoelen en capaciteitsplanning afstemmen. |
U zorgt ervoor dat de juiste aspecten van het systeem worden getest. U kunt resources effectief toewijzen en tests uitvoeren op een manier die overeenkomt met de bedrijfsprioriteiten en -vereisten. |
Documenteer uw strategie voor prestatiebewaking. Evalueer metrische gegevens op verschillende abstractieniveaus voor elke geïdentificeerde stroom. |
U kunt de voortgang bijhouden bij het bereiken van prestatiedoelen gedurende de hele ontwikkelingscyclus. |
Prestaties bereiken en behouden
Bescherming tegen prestatievermindering tijdens het gebruik en de ontwikkeling van het systeem. |
---|
Ontwikkeling is geen eenmalige inspanning. Het is een doorlopend proces. Verwacht wijzigingen in de prestaties als functies veranderen. Er zijn verschillen in gebruikerspatronen en -profielen, zelfs wijzigingen ten opzichte van optimalisaties in andere Azure Well-Architected pijlers. Elke wijziging kan workloadresources overbelasten.
Beveilig het systeem tegen wijzigingen , zodat het niet terugschuift op prestatiedoelen. Test- en bewakingsprocessen integreren in het ontwikkelingsproces. Test de prestaties van het systeem in productie met echte belasting en simuleer die belasting met geautomatiseerde tests vóór productie. In beide gevallen moet u controleprocedures hebben voor verificatiedoeleinden.
Voer gedurende de ontwikkelingslevenscyclus verschillende soorten tests uit in verschillende fasen. Test in de eerste fasen het concept om ervoor te zorgen dat de prestatieresultaten niet geheel onverwacht zijn. Naarmate de ontwikkeling vordert, voert u handmatige tests met weinig inspanning uit om benchmarks vast te stellen. Begin in de buildfase met het ontwikkelen van geautomatiseerde routineprestatietests die latentie, stressniveaus, belastingscapaciteit en andere kenmerken evalueren die in de testplannen zijn gedefinieerd.
Bewaking moet een integraal onderdeel van die inspanning zijn, in plaats van een geïsoleerde oefening te zijn. U kunt zien hoe het systeem en de bijbehorende resources in de loop van de tijd presteren. Vervolgens kunt u ze verfijnen om hun waarde te maximaliseren en ervoor te zorgen dat ze blijven voldoen aan de prestatiestandaarden.
Houd er rekening mee dat prestatiedoelen in de loop van de tijd variëren als reactie op wijzigingen. Werk het prestatiemodel bij op basis van geteste en bewaakte metrische gegevens. Duidelijk verhoogde, verminderde of geen invloed op de prestaties van de stromen aangeven.
Wees altijd klaar om met zakelijke belanghebbenden opnieuw te onderhandelen en de verwachtingen te herstellen.
Methode | Voordeel |
---|---|
Integreer routineprestatietests in Azure Pipelines. Kies pijplijnen die tests kunnen integreren. Kies daarentegen testhulpprogramma's die in de pijplijnen kunnen worden geïntegreerd. |
Geautomatiseerde tests besparen tijd en zorgen voor consistentie, waardoor regressies of verbeteringen gemakkelijker kunnen worden gedetecteerd. Met deze artefacten kunt u eventuele afwijkingen of afwijkingen in de loop van de tijd continu bewaken, zodat u consistente prestaties en kwaliteit kunt behouden. |
Formaliseer prestatietests als kwaliteitspoorten die releasepromotie en de uiteindelijke implementatie naar productie kunnen goedkeuren of weigeren. | Deze controlepunten zorgen ervoor dat elke implementatiefase voldoet aan de vereiste prestatiestandaarden voordat u verdergaat met de volgende. De controlepunten helpen onbedoelde prestatie-regressie te voorkomen. Als de prestaties bijvoorbeeld aanzienlijk onder de verwachtingen liggen, kunt u een release blokkeren totdat er verbeteringen zijn aangebracht. |
Stel een herhaalbaar proces in voor het bewaken van werkelijke transacties in de productie en afwijkingen ten opzichte van uw prestatiedoelen. Gebruik synthetische transacties in productie. Bewakingswaarschuwingen instellen voor prestatieregressies. |
U wilt inzicht in de werkelijke prestaties van uw systeem onder werkelijke belasting die niet kan worden gesimuleerd door middel van tests. Vervolgens kunt u proactief problemen en verbeteringsgebieden identificeren, zoals mogelijke knelpunten, onderbenutte resources en andere problemen. |
Bekijk de resultaten van prestatietests en bewakingsgegevens zorgvuldig en optimaliseer totdat u de prestatiedoelen bereikt. Geef prioriteit aan acties die zijn afgeleid van deze beoordelingen en voeg ze toe aan de achterstand voor geplande uitvoering. |
Op basis van testresultaten kunt u gegevens vastleggen en vergelijken en trends gaan analyseren. Uw optimalisatie-inspanningen zijn gegevensgestuurd. |
Ontwikkel codeervaardigheden die gericht zijn op prestaties. Coderingsstandaarden hebben die een voorbeeld zijn van prestatiegestuurde coderingspatronen. |
Code die geen prestatieproblemen heeft, kan het testen van cycli efficiënter maken, omdat tests kunnen worden gericht op belangrijkere problemen. Codepatronen helpen bij het voorkomen van opnieuw werk en houden uw codestijl consistent. |
De prestatie-uitholling aanpakken naarmate het gebruik toeneemt, functies veranderen en gegevens zich in de loop van de tijd verzamelen om de prestaties te behouden. Stel de verwachtingen opnieuw in en stel nieuwe doelen vast, als afstemming alleen voordelen op de korte termijn oplevert. |
U kunt de prestatiestatus behouden voordat degradatie zich ontwikkelt tot problemen die een negatieve invloed hebben op de gebruikerservaring buiten het acceptabele bereik. Als u doelen wijzigt, wordt het prestatiemodel opnieuw ingesteld en verspilt u geen tijd aan het optimaliseren van het systeem dat de capaciteit al heeft bereikt. |
Efficiëntie verbeteren door optimalisatie
Verbeter de systeemefficiëntie binnen de gedefinieerde prestatiedoelen om de workloadwaarde te verhogen. |
---|
De doelen die tijdens de eerste fase zijn ingesteld, zijn gebaseerd op een redelijk niveau van gebruikerservaring, rekening houdend met verschillende beperkingen. U moet doelen opnieuw beoordelen en aanpassen om de ervaring verder te verbeteren. Om de ervaring verder te verbeteren, is een duidelijk begrip vereist van hoe het systeem wordt gebruikt, hoe het zich heeft ontwikkeld en hoe het platform of de technologie in de loop van de tijd is veranderd. De cyclus van bewaking, optimalisatie, testen en implementeren is een continu proces.
Dankzij optimalisatie van efficiëntie kan een workload werken met een lager resourceverbruik. Ze kunnen ertoe leiden dat de workload een te ingerichte status heeft met reservecapaciteit. Gebruik deze capaciteit om de betrouwbaarheid van het systeem te verbeteren. Elimineer de capaciteit om de kosten van het systeem te verbeteren. Of gebruik de capaciteit om nieuwe productfuncties op bestaande resources te ondersteunen.
Wanneer het systeem efficiënter wordt, kunt u van de gelegenheid gebruikmaken om nieuwe prestatiedoelen in te stellen en te handhaven.
Methode | Voordeel |
---|---|
Wijs toegewezen cycli toe voor prestatieoptimalisatie om te voldoen aan niet-functionele vereisten en optimalisaties in functionele gebieden. Doelen voor deze optimalisatie zijn resources, code, gegevensretentie, databasequery's en andere. | U kunt een cultuur van prestatiegestuurde optimalisatie bouwen. U houdt het team verantwoordelijk voor het proactief bewaken van prestatiepatronen en verfijnt ook de toepassing. |
Verbeter de architectuur met nieuwe ontwerppatronen en onderdelen, die de prestaties kunnen verbeteren, op manieren die u eerder niet hebt overwogen vanwege beperkte tijd of budget. | Nieuw ontwerp en nieuwe onderdelen kunnen het systeem optimaliseren, wat leidt tot een betere gebruikerservaring. U kunt bijvoorbeeld caching gebruiken of een netwerkonderdeel voor inhoudslevering toevoegen. Het kan ook leiden tot kostenvoordelen op de lange termijn. |
Gebruik bewakingshulpprogramma's om historische trends te analyseren en om de stromen en code-implementatiepaden te identificeren die het meeste zouden profiteren van een prestatieoptimalisatie. Voor dit doel raden we hulpprogramma's en profilers voor het bewaken van de prestaties van toepassingen (APM) aan. Identificeer dynamische paden voor bewerkingen en andere mogelijke knelpunten in het systeem. |
Wanneer u de terugkerende problematische gebieden identificeert, kan het team zich richten waar de winst het hoogst is. |
Op de hoogte blijven van technologische innovaties die de prestaties kunnen verbeteren. Profiteer van de nieuwe versies die zijn uitgebracht voor de afhankelijke frameworks en bibliotheken. Gebruik op dezelfde manier de nieuwe functies voor platformresources wanneer deze worden bijgewerkt en gepatcht. |
Het overstappen op nieuwe technologie kan vaak de motiverende factor zijn om te zoeken naar mogelijkheden om te verbeteren. Code die in het verleden mogelijk traag was, kan sneller worden met deze updates. U wilt ook weten hoe bepaalde updates de prestaties negatief beïnvloeden. |