Ontwerp zo dat u kunt uitschalen

Toepassingen geschikt maken voor horizontaal schalen

Een belangrijk voordeel van de cloud is elastisch schalen: de mogelijkheid om zoveel capaciteit te gebruiken als u nodig hebt, uitschalen naarmate de belasting toeneemt en inschalen wanneer de extra capaciteit niet nodig is. Ontwerp uw toepassing zodat u horizontaal kunt schalen of nieuwe exemplaren op aanvraag kunt verwijderen.

Aanbevelingen

Voorkom persistentie van exemplaren. Er is sprake van persistentie, ook wel sessie-affiniteit genoemd, als aanvragen van dezelfde client altijd naar dezelfde server worden gestuurd. Stickiness beperkt de mogelijkheid van de toepassing om uit te schalen. Verkeer van een gebruiker met een hoog volume wordt bijvoorbeeld niet verdeeld over exemplaren. Oorzaken van persistentie zijn het opslaan van de sessiestatus in het geheugen en het gebruik van machine-specifieke sleutels voor versleuteling. Zorg ervoor dat elk exemplaar elke aanvraag kan afhandelen.

Identificeer knelpunten. Uitschalen is niet voor elk prestatieprobleem een magische oplossing. Als de back-end-database bijvoorbeeld het knelpunt is, lost u het probleem niet op door webservers toe te voegen. Identificeer en verhelp eerst de knelpunten in het systeem in plaats van meer exemplaren los te laten op het probleem. Knelpunten worden meestal veroorzaakt door stateful onderdelen van het systeem.

Verdeel werkbelastingen afhankelijk van de vereisten voor schaalbaarheid. Toepassingen bestaan vaak uit meerdere werkbelastingen, elk met verschillende vereisten voor schaalbaarheid. Zo kan een toepassing een openbare site hebben en een afzonderlijke beheersite. De openbare site kan te maken krijgen met plotselinge pieken in het verkeer, terwijl de beheersite een kleinere, beter voorspelbare belasting heeft.

Offload natuurlijk asynchrone taken. Taken zoals het verzenden van e-mailberichten, acties waarvoor de gebruiker geen onmiddellijke reactie nodig heeft en integratie met andere systemen zijn allemaal goede plaatsen om gebruik te maken van asynchrone berichtenpatronen.

Resource-intensieve taken offloaden. Taken die veel CPU-tijd of I/O-resources nodig hebben, moeten indien mogelijk worden verplaatst naar achtergrondtaken om zo de belasting van de front-end te minimaliseren, zodat de afhandeling van aanvragen van gebruikers soepel verloopt.

Gebruik de ingebouwde functies voor automatisch schalen. Veel services van Azure Compute hebben ingebouwde ondersteuning voor automatisch schalen. Als de toepassing een voorspelbare en normale werkbelasting heeft, kunt u uitschalen volgens een schema, bijvoorbeeld tijdens kantooruren. Als de werkbelasting niet voorspelbaar is, gebruikt u metrische gegevens voor prestaties zoals CPU-gebruik of lengte van de wachtrij met aanvragen om automatisch schalen te activeren. Zie Automatisch schalen voor aanbevolen procedures voor automatisch schalen.

Overweeg agressief automatisch schalen voor kritieke werkbelastingen. In het geval van kritieke werkbelastingen is het essentieel om de vraag voor te blijven. Het is beter om bij zware belasting snel nieuwe exemplaren toe te voegen voor het afhandelen van het extra verkeer, om vervolgens geleidelijk terug te schalen.

Houd bij het ontwerp rekening met inschalen. Als u kiest voor elastisch schalen, zijn er ook momenten dat de toepassing gaat inschalen en er dus exemplaren worden verwijderd. De toepassing moet zorgvuldig omgaan met het verwerken van exemplaren. Dit kan onder andere op deze manieren:

  • Luisteren naar afsluitgebeurtenissen (indien beschikbaar) en deze op de juiste manier afhandelen.
  • Clients/consumenten van een service moeten ondersteuning bieden voor de afhandeling van tijdelijke fouten en het opnieuw proberen van bewerkingen.
  • Voor langlopende taken kan het zinvol zijn om het werk op te splitsen, met behulp van controlepunten of het patroon Pijpen en filters.
  • Plaats werkitems in een wachtrij zodat een ander exemplaar het werk kan overnemen als een exemplaar tijdens de verwerking van een item wordt verwijderd.

Overweeg om te schalen voor redundantie. Uitschalen kan de betrouwbaarheid van uw toepassing verbeteren. Overweeg bijvoorbeeld uit te schalen over meerdere beschikbaarheidszones, zoals door zone-redundante services te gebruiken. Deze aanpak kan de doorvoer van uw toepassing verbeteren en tolerantie bieden als één zone een storing ondervindt.