Afwegingen voor efficiëntie van prestaties
Houd bij het ontwerpen van de workload rekening met de balans tussen prestatieoptimalisatie en andere aspecten van het ontwerp, zoals kostenefficiëntie, operabiliteit, betrouwbaarheid en beveiliging.
Efficiëntie van prestaties versus kostenefficiëntie
De kosten kunnen toenemen als gevolg van het verbeteren van de prestaties. Hier zijn enkele factoren om rekening mee te houden bij het optimaliseren van prestaties en hoe deze van invloed zijn op de kosten:
Vermijd kostenraming van een workload bij consistent hoog gebruik. Prijzen op basis van verbruik zijn duurder dan de equivalente ingerichte prijzen. Vereenig de pieken om een consistente stroom van rekenkracht en gegevens te krijgen. U kunt het beste handmatig en automatisch schalen gebruiken om de juiste balans te vinden. Omhoog schalen is doorgaans duurder dan uitschalen.
Kosten worden rechtstreeks geschaald met het aantal regio's. Het zoeken naar resources in goedkopere regio's mag de kosten van netwerkingressie en -uitdijing of van verslechterende toepassingsprestaties vanwege toegenomen latentie niet in de weg worden gelopen.
Elke rendercyclus van een nettolading verbruikt zowel rekenkracht als geheugen. U kunt caching gebruiken om de belasting op servers te verminderen en te besparen met vooraf in te zetten opslag- en bandbreedtekosten. De besparingen kunnen aanzienlijk zijn, met name voor statische inhoudsservices.
- Hoewel caching de kosten kan verlagen, zijn er enkele prestatie-afwegingen. De prijzen van Azure Traffic Manager zijn bijvoorbeeld gebaseerd op het aantal DNS-query's (Domain Name Service) dat de service bereikt. U kunt dat aantal verminderen door caching en configureren hoe vaak de cache wordt vernieuwd. Als u vertrouwt op de cache die niet regelmatig wordt bijgewerkt, heeft dit langere failover-tijden voor gebruikers als een eindpunt niet beschikbaar is.
Het gebruik van toegewezen resources voor batchverwerking van langlopende taken verhoogt de kosten. U kunt de kosten verlagen door spot-VM's in terichten, maar u kunt er wel op voorbereid zijn dat de taak wordt onderbroken telkens wanneer Azure de VM buiten gebruik stellen.
Zie de pijler Kostenoptimalisatie voor kostenoverwegingen.
Efficiëntie van prestaties versus operationele uitmuntendheid
Wanneer u bepaalt hoe u de schaal van uw workload op een efficiënte manier kunt aan de eisen van gebruikers kunt voldoen, moet u rekening houden met de operationele processen die ervoor zorgen dat een toepassing in productie wordt uitgevoerd. Als u operationele uitmuntendheid met deze processen wilt bereiken, moet u ervoor zorgen dat de implementaties betrouwbaar en voorspelbaar blijven. Ze moeten worden geautomatiseerd om de kans op menselijke fouten te beperken. Ze moeten een snel en routinematig proces zijn, zodat ze het uitbrengen van nieuwe functies of foutoplossingen niet vertragen. Wat net zo belangrijk is, is dat u een update snel kunt terugdraaien of vooruitrollen als deze problemen geeft.
Geautomatiseerde prestatietests
Een operationeel proces dat kan helpen om prestatieproblemen in een vroeg stadium te identificeren, is geautomatiseerde prestatietests. De impact van een ernstig prestatieprobleem kan net zo ernstig zijn als een bug in de code. Hoewel geautomatiseerde functionele tests toepassingsproblemen kunnen voorkomen, detecteren ze mogelijk geen prestatieproblemen. Acceptabele prestatiedoelen definiëren voor metrische gegevens, zoals latentie, laadtijden en resourcegebruik. Neem geautomatiseerde prestatietests op in uw release-pijplijn om ervoor te zorgen dat de toepassing aan deze doelstellingen voldoet.
Snelle builds
Een ander operationeel efficiëntieproces is ervoor zorgen dat uw product zich in een implementeerbare status via een snel bouwproces. Builds bieden essentiële informatie over de status van uw product.
Het volgende kan helpen bij snellere builds:
- Selecteer de juiste grootte van VM's.
- Zorg ervoor dat de buildserver zich in de buurt van de bronnen en een doellocatie bevindt, zodat de duur van uw build aanzienlijk kan worden verminderd.
- Scale-out build-servers.
- De build optimaliseren.
Zie Builds voor een uitleg van deze items.
Optimalisatie van prestaties bewaken
Als u overweegt prestatieverbeteringen aan te brengen, moet u controleren of uw toepassing correct wordt uitgevoerd. Bewaking moet de toepassing, het platform en het netwerk omvatten. Zie Bewaking voor meer informatie.
Zie de pijler Operationele uitmuntendheid voor operationele overwegingen.
Efficiëntie van prestaties versus betrouwbaarheid
We erkennen van te voren dat er fouten optreden. In plaats van fouten helemaal te proberen te voorkomen, is het doel de effecten van een onderdeel met een storing te beperken.
Betrouwbare toepassingen zijn flexibel en zeer beschikbaar. Dankzij tolerantie kunnen systemen zonder problemen herstellen van fouten en blijven ze werken met minimale downtime en gegevensverlies voordat ze volledig worden hersteld. SYSTEMEN met een ha-status worden uitgevoerd zoals ze zijn ontworpen met een goede status zonder significante downtime. Door betrouwbaarheid te onderhouden, kunt u de efficiëntie van de prestaties handhaven.
Enkele overwegingen met het oog op betrouwbaarheid zijn:
Gebruik het patroon Circuit breaker om stabiliteit te bieden terwijl het systeem van een storing herstelt en de impact op de prestaties minimaliseert.
Bereik schaal- en prestatieniveaus die nodig zijn voor uw oplossing door lees- en schrijfinterfaces te scheiden door het CQRS-patroon te implementeren.
U kunt vaak hogere beschikbaarheid bereiken door een model voor uiteindelijke consistentie te gebruiken. Zie Het beste gegevensopslag gebruiken voor de taak voor meer informatie over het selecteren van het juiste gegevensopslag.
Als uw toepassing meer opslagaccounts vereist dan momenteel beschikbaar zijn in uw abonnement, maakt u een nieuw abonnement met extra opslagaccounts. Zie Schaalbaarheids- en prestatiedoelen voor meer informatie.
Schaal niet omhoog of omlaag. Selecteer in plaats daarvan een laag en instantiegrootte die voldoen aan uw prestatievereisten bij een normale belasting en schaal vervolgens de exemplaren uit om wijzigingen in het verkeersvolume te verwerken. Als u omhoog en omlaag schaalt, wordt de toepassing mogelijk opnieuw opgestart.
Maak een afzonderlijk opslagaccount voor logboeken. Gebruik niet hetzelfde opslagaccount voor logboeken en toepassingsgegevens. Dit helpt te voorkomen dat logboekregistratie de prestaties van toepassingen vermindert.
Prestaties bewaken. Gebruik een prestatiebewakingsservice, zoals New Relic of Application Insights om de prestaties en het gedrag van toepassingen bij belasting te bewaken. Prestatiebewaking biedt u realtime inzicht in de toepassing. Hiermee kunt u problemen diagnosticeren en de hoofdoorzaak van fouten analyseren.
Zie de pijler Betrouwbaarheid voor overwegingen met het oog op tolerantie, beschikbaarheid en betrouwbaarheid.
Efficiëntie van prestaties versus beveiliging
Als de prestaties zo slecht zijn dat de gegevens onbruikbaar zijn, kunt u de gegevens als ontoegankelijk beschouwen. Vanuit het oogpunt van beveiliging moet u alles doen wat u kunt om ervoor te zorgen dat uw services optimale uptime en prestaties hebben.
Een populaire en efficiënte methode voor het verbeteren van beschikbaarheid en prestaties is taakverdeling. Taakverdeling is een methode voor het distribueren van netwerkverkeer over servers die deel uitmaken van een service. Dit helpt de prestaties omdat de processor-, netwerk- en geheugenoverhead voor het verwerken van aanvragen worden verdeeld over alle servers met load balanced. We raden u aan om waar mogelijk taakverdeling te gebruiken, en dit zo nodig voor uw services. Zie Uptime en prestaties optimaliseren voor meer informatie over taakverdelingsscenario's.
Houd rekening met deze beveiligingsmaatregelen die van invloed zijn op de prestaties:
Om de prestaties te optimaliseren en de beschikbaarheid te maximaliseren, moet de toepassingscode eerst proberen om OAuth-toegangstokens op de stille kracht van een cache op te halen voordat u een token van de id-provider probeert te verkrijgen. OAuth is een technologische standaard waarmee u veilig informatie kunt delen tussen services zonder uw wachtwoord beschikbaar te maken.
Zorg ervoor dat u kritieke beveiligingswaarschuwingen en -logboeken integreert in SIEM's (beveiligingsinformatie en gebeurtenisbeheer) zonder dat u een grote hoeveelheid gegevens met een lage waarde introduceert. Dit kan de SIEM-kosten, fout-positieven en lagere prestaties verhogen. Zie Prioritize alert and log integration (Waarschuwings- en logboekintegratie prioriteren) voor meer informatie.
Gebruik Azure AD Verbinding maken om uw on-premises directory te synchroniseren met uw clouddirectory. Er zijn factoren die van invloed zijn op de prestaties van Azure AD-Verbinding maken. Zorg ervoor dat Azure AD Verbinding maken voldoende capaciteit heeft om te voorkomen dat slecht presterende systemen de beveiliging en productiviteit in de weg staan. Grote of complexe organisaties (organisaties die meer dan 100.000 objecten inrichten) moeten de aanbevelingen volgen om hun Azure AD-Verbinding maken optimaliseren.
Als u toegang wilt krijgen tot realtime prestatiegegevens op pakketniveau, gebruikt u pakketopname om waarschuwingen in te stellen.
Zie de pijler Beveiliging voor andere beveiligingsoverwegingen.