Dimensionamento automáticoAutoscaling

O dimensionamento automático é o processo de alocar recursos dinamicamente para atender aos requisitos de desempenho.Autoscaling is the process of dynamically allocating resources to match performance requirements. À medida que o volume de trabalho aumenta, um aplicativo pode precisar de recursos adicionais para manter os níveis de desempenho desejados e atender aos contratos de nível de serviço (SLAs).As the volume of work grows, an application may need additional resources to maintain the desired performance levels and satisfy service-level agreements (SLAs). Conforme a demanda diminui e os recursos adicionais não são mais necessários, é possível desalocá-los para minimizar os custos.As demand slackens and the additional resources are no longer needed, they can be de-allocated to minimize costs.

O Dimensionamento Automático aproveita a elasticidade de ambientes hospedados na nuvem ao mesmo tempo em que alivia a sobrecarga de gerenciamento.Autoscaling takes advantage of the elasticity of cloud-hosted environments while easing management overhead. Ele reduz a necessidade de um operador monitorar constantemente o desempenho de um sistema e toma decisões, como adicionar ou remover recursos.It reduces the need for an operator to continually monitor the performance of a system and make decisions about adding or removing resources.

Há duas maneiras principais de um aplicativo ser dimensionado:There are two main ways that an application can scale:

  • Dimensionamento vertical, também chamado de aumento e redução vertical, significa que é possível alterar a capacidade de um recurso.Vertical scaling, also called scaling up and down, means changing the capacity of a resource. Por exemplo, você pode mover um aplicativo para um tamanho maior de VM.For example, you could move an application to a larger VM size. Geralmente, o dimensionamento vertical requer que o sistema fique temporariamente indisponível enquanto é reimplantado.Vertical scaling often requires making the system temporarily unavailable while it is being redeployed. Portanto, não é comum automatizar o dimensionamento vertical.Therefore, it's less common to automate vertical scaling.

  • Dimensionamento horizontal, também chamado de expansão e redução horizontal, significa que é possível adicionar ou remover instâncias de um recurso.Horizontal scaling, also called scaling out and in, means adding or removing instances of a resource. O aplicativo continua em execução sem interrupções conforme os novos recursos são provisionados.The application continues running without interruption as new resources are provisioned. Quando o processo de provisionamento é concluído, a solução é implantada com esses recursos adicionais.When the provisioning process is complete, the solution is deployed on these additional resources. Se a demanda cair, os recursos adicionais poderão ser desligados e desalocados.If demand drops, the additional resources can be shut down cleanly and deallocated.

Muitos sistemas baseados em nuvem, incluindo o Microsoft Azure, oferecem suporte à automação dessa forma de dimensionamento.Many cloud-based systems, including Microsoft Azure, support automatic horizontal scaling. O restante deste artigo está voltado para o dimensionamento horizontal.The rest of this article focuses on horizontal scaling.

Observação

O dimensionamento automático se aplica principalmente a recursos de computação.Autoscaling mostly applies to compute resources. Embora seja possível dimensionar horizontalmente de uma fila de banco de dados ou mensagem, isso normalmente envolve particionamento de dados, que geralmente não são automatizados.While it's possible to horizontally scale a database or message queue, this usually involves data partitioning, which is generally not automated.

Visão geralOverview

Uma estratégia de dimensionamento automático geralmente envolve as seguintes partes:An autoscaling strategy typically involves the following pieces:

  • Sistemas de instrumentação e monitoramento nos níveis de aplicativos, serviços e infraestrutura.Instrumentation and monitoring systems at the application, service, and infrastructure levels. Esses sistemas capturam métricas essenciais, como tempos de resposta, comprimentos de fila, utilização da CPU e uso de memória.These systems capture key metrics, such as response times, queue lengths, CPU utilization, and memory usage.
  • A lógica de tomada de decisões avalia essas métricas em relação a limites predefinidos ou agendas e decide se vai dimensionar.Decision-making logic that evaluates these metrics against predefined thresholds or schedules, and decides whether to scale.
  • Componentes que dimensionam o sistema.Components that scale the system.
  • Teste, monitoramento e ajuste da estratégia de dimensionamento automático para garantir que ela funcione conforme o esperado.Testing, monitoring, and tuning of the autoscaling strategy to ensure that it functions as expected.

O Azure fornece mecanismos de dimensionamento automático internos que atendem cenários comuns.Azure provides built-in autoscaling mechanisms that address common scenarios. Se um determinado serviço ou tecnologia não tem a funcionalidade de dimensionamento automático interna, ou se você tiver requisitos de dimensionamento automático específicos além dos seus recursos, é possível considerar uma implementação personalizada.If a particular service or technology does not have built-in autoscaling functionality, or if you have specific autoscaling requirements beyond its capabilities, you might consider a custom implementation. Uma implementação personalizada deve coletar e analisar métricas do sistema e operacionais e, em seguida, dimensionar os recursos de acordo.A custom implementation would collect operational and system metrics, analyze the metrics, and then scale resources accordingly.

Configurar o dimensionamento automático para uma solução do AzureConfigure autoscaling for an Azure solution

O Azure fornece dimensionamento automático interno para a maioria das opções de computação.Azure provides built-in autoscaling for most compute options.

Todas essas opções de computação usam o Dimensionamento automático do Azure Monitor para fornecer um conjunto comum de funcionalidade de dimensionamento automático.These compute options all use Azure Monitor autoscale to provide a common set of autoscaling functionality.

  • As Azure Functions diferem das opções anteriores de computação porque não é necessário configurar regras de dimensionamento automático.Azure Functions differs from the previous compute options, because you don't need to configure any autoscale rules. Em vez disso, as Azure Functions alocam a capacidade de computação automaticamente quando seu código é executado, dimensionando conforme o necessário para lidar com a carga.Instead, Azure Functions automatically allocates compute power when your code is running, scaling out as necessary to handle load. Para obter mais informações, confira Como escolher o plano de hospedagem correto para as Azure Functions.For more information, see Choose the correct hosting plan for Azure Functions.

Por fim, uma solução de dimensionamento automático personalizado, às vezes, pode ser útil.Finally, a custom autoscaling solution can sometimes be useful. Por exemplo, você pode usar o diagnóstico do Azure e métricas baseadas no aplicativo, junto com o código personalizado para monitorar e exportar as métricas de aplicativo.For example, you could use Azure diagnostics and application-based metrics, along with custom code to monitor and export the application metrics. Em seguida, você poderia definir regras personalizadas com base nessas métricas e usar APIs REST do Gerenciador de Recursos para acionar o dimensionamento automático.Then you could define custom rules based on these metrics, and use Resource Manager REST APIs to trigger autoscaling. No entanto, uma solução personalizada não é simples de implementar e deve-se considerar essa possibilidade apenas se nenhuma das abordagens anteriores atendem a seus requisitos.However, a custom solution is not simple to implement, and should be considered only if none of the previous approaches can fulfill your requirements.

Use os recursos de dimensionamento automático internos da plataforma, se atenderem aos seus requisitos.Use the built-in autoscaling features of the platform, if they meet your requirements. Caso contrário, avalie cuidadosamente se você realmente precisa de recursos de dimensionamento mais complexos.If not, carefully consider whether you really need more complex scaling features. Alguns exemplos de requisitos adicionais podem incluir mais granularidade de controle, maneiras diferentes para detectar eventos de gatilho para dimensionamento, dimensionamento entre assinaturas e dimensionamento de outros tipos de recursos.Examples of additional requirements may include more granularity of control, different ways to detect trigger events for scaling, scaling across subscriptions, and scaling other types of resources.

Como usar o dimensionamento automático do Azure MonitorUse Azure Monitor autoscale

[Dimensionamento automático do Azure do Monitor] monitoring fornecem um conjunto comum de funcionalidade de dimensionamento automático para conjuntos de dimensionamento de máquina virtual, serviço de aplicativo do Azure e serviço de nuvem do Azure.Azure Monitor autoscale provide a common set of autoscaling functionality for virtual machine scale sets, Azure App Service, and Azure Cloud Service. O dimensionamento pode ser executado em um cronograma, ou com base em uma métrica de tempo de execução, como o uso de CPU ou memória.Scaling can be performed on a schedule, or based on a runtime metric, such as CPU or memory usage. Exemplos:Examples:

  • Expandir 10 instâncias em dias da semana e reduzir 4 instâncias no sábado e domingo.Scale out to 10 instances on weekdays, and scale in to 4 instances on Saturday and Sunday.
  • Expandir uma instância se o uso médio da CPU está acima de 70%, e reduzir uma instância se o uso de CPU cai abaixo de 50%.Scale out by one instance if average CPU usage is above 70%, and scale in by one instance if CPU usage falls below 50%.
  • Expandir uma instância se o número de mensagens em uma fila exceder um determinado limite.Scale out by one instance if the number of messages in a queue exceeds a certain threshold.

Para obter uma lista das métricas internas, confira Métricas comuns de dimensionamento automático do Azure Monitor.For a list of built-in metrics, see Azure Monitor autoscaling common metrics. Você também pode implementar métricas personalizadas usando o Application Insights.You can also implement custom metrics by using Application Insights.

Você pode configurar o dimensionamento automático usando o PowerShell, a CLI do Azure, um modelo do Azure Resource Manager ou o portal do Azure.You can configure autoscaling by using PowerShell, the Azure CLI, an Azure Resource Manager template, or the Azure portal. Para obter mais controle, use a API REST do Azure Resource Manager.For more detailed control, use the Azure Resource Manager REST API. A Biblioteca de Gerenciamento dos Serviços de Monitoramento do Azure e a Biblioteca do Microsoft Insights (em visualização) são SDKs que permitem a coleta de métricas de recursos diferentes e realizam o dimensionamento automático usando a API REST.The Azure Monitoring Service Management Library and the Microsoft Insights Library (in preview) are SDKs that allow collecting metrics from different resources, and perform autoscaling by making use of the REST APIs. Para recursos em que o suporte do Azure Resource Manager não está disponível, ou se você estiver usando os Serviços de Nuvem do Azure, a API REST do Gerenciamento de Serviços pode ser usada para dimensionamento automático.For resources where Azure Resource Manager support isn't available, or if you are using Azure Cloud Services, the Service Management REST API can be used for autoscaling. Nos outros casos, use o Azure Resource Manager.In all other cases, use Azure Resource Manager.

Considere os seguintes pontos ao usar o dimensionamento automático do Azure:Consider the following points when using Azure autoscale:

  • Considere se é possível prever a carga no aplicativo com precisão suficiente para usar o dimensionamento automático agendado, adicionando e Removendo instâncias para atender a picos de demanda previstos.Consider whether you can predict the load on the application accurately enough to use scheduled autoscaling, adding and removing instances to meet anticipated peaks in demand. Se isso não for possível, use dimensionamento automático reativo com base nas métricas de tempo de execução para lidar com alterações imprevisíveis na demanda.If this isn't possible, use reactive autoscaling based on runtime metrics, in order to handle unpredictable changes in demand. Normalmente, você pode combinar essas abordagens.Typically, you can combine these approaches. Por exemplo, crie uma estratégia que adiciona recursos com base em um cronograma de horários quando você souber que o aplicativo é mais ocupado.For example, create a strategy that adds resources based on a schedule of the times when you know the application is busiest. Isso ajuda a garantir que a capacidade esteja disponível quando necessário, sem a demora enfrentada ao iniciar novas instâncias.This helps to ensure that capacity is available when required, without any delay from starting new instances. Além disso, para cada regra agendada, defina métricas que permitam o dimensionamento automático reativo durante esse período para garantir que o aplicativo possa dar suporte a picos de demanda prolongados, mas repentinos.For each scheduled rule, define metrics that allow reactive autoscaling during that period to ensure that the application can handle sustained but unpredictable peaks in demand.

  • Muitas vezes é difícil entender a relação entre os requisitos de capacidade e métricas, especialmente quando um aplicativo é inicialmente implantado.It's often difficult to understand the relationship between metrics and capacity requirements, especially when an application is initially deployed. Prefira provisionar um pouco de capacidade extra no início e, então, monitorar e ajustar as regras de dimensionamento automático para aproximar a capacidade da carga real.Provision a little extra capacity at the beginning, and then monitor and tune the autoscaling rules to bring the capacity closer to the actual load.

  • Configure as regras de dimensionamento automático e monitore o desempenho do seu aplicativo ao longo do tempo.Configure the autoscaling rules, and then monitor the performance of your application over time. Use os resultados desse monitoramento para ajustar a maneira na qual o sistema pode ser dimensionado, se necessário.Use the results of this monitoring to adjust the way in which the system scales if necessary. No entanto, tenha em mente que o dimensionamento automático não é um processo instantâneo.However, keep in mind that autoscaling is not an instantaneous process. Leva tempo para reagir a uma métrica como a média de uso da CPU que excede (ou fica abaixo) de um limite especificado.It takes time to react to a metric such as average CPU utilization exceeding (or falling below) a specified threshold.

  • As regras de dimensionamento automático que usam um mecanismo de detecção com base em um atributo de gatilho de medida (por exemplo, o comprimento da fila ou a utilização de CPU) usam, para disparar uma ação de dimensionamento automático, um valor agregado ao longo do tempo em vez de valores instantâneos.Autoscaling rules that use a detection mechanism based on a measured trigger attribute (such as CPU usage or queue length) use an aggregated value over time, rather than instantaneous values, to trigger an autoscaling action. Por padrão, a agregação é uma média dos valores.By default, the aggregate is an average of the values. Isso impede que o sistema reaja rápido demais ou cause oscilação rápida.This prevents the system from reacting too quickly, or causing rapid oscillation. Ele também permite que o tempo para novas instâncias que são iniciados automaticamente se estabeleçam em modo de execução, impedindo que ações de dimensionamento automático adicionais ocorram enquanto as novas instâncias estão inicializando.It also allows time for new instances that are automatically started to settle into running mode, preventing additional autoscaling actions from occurring while the new instances are starting up. Para Serviços de Nuvem e Máquinas Virtuais do Azure, o período padrão para a agregação é 45 minutos, então esse é o período de tempo máximo que poderá levar para a métrica disparar o dimensionamento automático em resposta a picos de demanda.For Azure Cloud Services and Azure Virtual Machines, the default period for the aggregation is 45 minutes, so it can take up to this period of time for the metric to trigger autoscaling in response to spikes in demand. Você pode alterar o período de agregação, usando o SDK, mas os períodos de menor que 25 minutos podem causar resultados imprevisíveis.You can change the aggregation period by using the SDK, but periods of less than 25 minutes may cause unpredictable results. Para aplicativos Web, o período de cálculo da média é muito menor, permitindo que novas instâncias estejam disponíveis cerca de cinco minutos após uma alteração à medida de gatilho segundo a média.For Web Apps, the averaging period is much shorter, allowing new instances to be available in about five minutes after a change to the average trigger measure.

  • Se configurar o dimensionamento automático usando o SDK em vez do portal, você poderá especificar uma agenda mais detalhada durante a qual as regras estão ativas.If you configure autoscaling using the SDK rather than the portal, you can specify a more detailed schedule during which the rules are active. Você também pode criar suas próprias métricas e usá-las, com ou sem as métricas existentes, em suas regras de dimensionamento automático.You can also create your own metrics and use them with or without any of the existing ones in your autoscaling rules. Por exemplo, você poderá usar contadores alternativos como o número de solicitações por segundo ou a disponibilidade de memória média, ou usar contadores personalizados para medir os processos comerciais específicos.For example, you may wish to use alternative counters, such as the number of requests per second or the average memory availability, or use custom counters to measure specific business processes.

  • Quando o dimensionamento automático do Service Fabric, os tipos de nós no cluster são feitos de dimensionamento de máquinas virtuais define no back-end, portanto, você precisará configurar as regras de AutoEscala para cada tipo de nó.When autoscaling Service Fabric, the node types in your cluster are made of virtual machine scale sets at the back end, so you need to set up autoscale rules for each node type. Leve em conta o número de nós que você deve ter antes de configurar o dimensionamento automático.Take into account the number of nodes that you must have before you set up autoscaling. O número mínimo de nós necessários para o tipo de nó primário é controlado pelo nível de confiabilidade escolhido.The minimum number of nodes that you must have for the primary node type is driven by the reliability level you have chosen. Para obter mais informações, consulte escalar um cluster do Service Fabric in ou out usando regras de dimensionamento automático.For more information, see scale a Service Fabric cluster in or out using autoscale rules.

  • Você pode usar o portal para vincular recursos como instâncias do Banco de Dados SQL e filas a uma instância do Serviço de Nuvem.You can use the portal to link resources such as SQL Database instances and queues to a Cloud Service instance. Isso permite que você acesse mais facilmente as opções de configuração de dimensionamento manual e automático separadas, para cada um dos recursos vinculados.This allows you to more easily access the separate manual and automatic scaling configuration options for each of the linked resources. Para saber mais, confira Como vincular um recurso a um serviço de nuvem.For more information, see How to: Link a resource to a cloud service.

  • Ao configurar várias políticas e regras, elas poderão entrar em conflito entre si.When you configure multiple policies and rules, they could conflict with each other. O Dimensionamento Automático usa as regras de resolução de conflitos a seguir para garantir que haja sempre um número suficiente de instâncias em execução:Autoscale uses the following conflict resolution rules to ensure that there is always a sufficient number of instances running:

    • Operações de escala horizontal sempre têm precedência sobre operações de redução horizontal.Scale-out operations always take precedence over scale-in operations.
    • Quando as operações de escala horizontal em conflito, a regra que inicia o maior aumento no número de instâncias tem precedência.When scale-out operations conflict, the rule that initiates the largest increase in the number of instances takes precedence.
    • Quando há conflito entre operações de redução horizontal, a regra que inicia a menor redução no número de instâncias tem precedência.When scale in operations conflict, the rule that initiates the smallest decrease in the number of instances takes precedence.
  • Em um ambiente de serviço de aplicativo, qualquer métrica de front-end ou um pool de trabalho pode ser usada para definir regras de dimensionamento automático.In an App Service Environment, any worker pool or front-end metrics can be used to define autoscale rules. Para obter mais informações, confira Dimensionamento automático e Ambiente do Serviço de Aplicativo.For more information, see Autoscaling and App Service Environment.

Considerações sobre o design de aplicativoApplication design considerations

O dimensionamento automático não é uma solução imediata.Autoscaling isn't an instant solution. Apenas adicionar recursos a um sistema ou executar mais instâncias de um processo não garante que o desempenho do sistema vai melhorar.Simply adding resources to a system or running more instances of a process doesn't guarantee that the performance of the system will improve. Considere os seguintes pontos ao criar uma estratégia de dimensionamento automático:Consider the following points when designing an autoscaling strategy:

  • O sistema deve ser projetado para ser escalonável horizontalmente.The system must be designed to be horizontally scalable. Evite fazer suposições sobre afinidade de instância; não crie soluções que exijam que o código esteja sempre sendo executado em uma instância específica de um processo.Avoid making assumptions about instance affinity; do not design solutions that require that the code is always running in a specific instance of a process. Ao dimensionar um site ou serviço de nuvem horizontalmente, não presuma que uma série de solicitações da mesma fonte será sempre roteada para a mesma instância.When scaling a cloud service or web site horizontally, don't assume that a series of requests from the same source will always be routed to the same instance. Projete os serviços, por essa mesma razão, como sem monitoração de estado, evitando assim a exigência de que uma série de solicitações de um aplicativo sejam sempre roteadas para a mesma instância de um serviço.For the same reason, design services to be stateless to avoid requiring a series of requests from an application to always be routed to the same instance of a service. Ao criar um serviço que lê as mensagens de uma fila e as processa, não faça suposições sobre qual instância do serviço lidará com qual mensagem.When designing a service that reads messages from a queue and processes them, don't make any assumptions about which instance of the service handles a specific message. O Dimensionamento Automático pode iniciar instâncias adicionais de um serviço conforme o comprimento da fila cresce.Autoscaling could start additional instances of a service as the queue length grows. O Padrão de Consumidores Concorrentes descreve como administrar esse cenário.The Competing Consumers pattern describes how to handle this scenario.

  • Se a solução implementa uma tarefa de execução longa, projete-a para oferecer suporte tanto a escalar quanto a reduzir horizontalmente.If the solution implements a long-running task, design this task to support both scaling out and scaling in. Sem o devido cuidado, essa tarefa pode impedir que uma instância de um processo seja desligada corretamente quando o sistema é reduzido horizontalmente, ou ela poderá perder dados se o processo for encerrado.Without due care, such a task could prevent an instance of a process from being shut down cleanly when the system scales in, or it could lose data if the process is forcibly terminated. Idealmente, refatore uma tarefa de execução longa e divida o processamento que ela executa em blocos menores e distintos.Ideally, refactor a long-running task and break up the processing that it performs into smaller, discrete chunks. O Padrão de Filtros e Tubos fornece um exemplo de como atingir esse resultado.The Pipes and Filters pattern provides an example of how you can achieve this.

  • Como alternativa, você pode implementar um mecanismo de ponto de verificação que registre informações de estado da tarefa em intervalos regulares, e salve esse estado em armazenamento durável que possa ser acessado por qualquer instância do processo executando a tarefa.Alternatively, you can implement a checkpoint mechanism that records state information about the task at regular intervals, and save this state in durable storage that can be accessed by any instance of the process running the task. Dessa forma, se o processo for encerrado, o trabalho que ele estava executando poderá ser retomado do último ponto de verificação usando outra instância.In this way, if the process is shut down, the work that it was performing can be resumed from the last checkpoint by using another instance.

  • Quando tarefas em segundo plano executadas em outras instâncias de computação, como em funções de trabalho dos serviços de nuvem–hospedado de aplicativo, talvez seja necessário dimensionar diferentes partes do aplicativo usando políticas de dimensionamento diferentes.When background tasks run on separate compute instances, such as in worker roles of a cloud-services–hosted application, you may need to scale different parts of the application using different scaling policies. Por exemplo, talvez seja necessário implantar instâncias de computação de IU (interface do usuário) adicionais sem aumentar o número de instâncias de computação em segundo plano, ou fazer o oposto disso.For example, you may need to deploy additional user interface (UI) compute instances without increasing the number of background compute instances, or the opposite of this. Se você oferecer níveis diferentes de serviço (como pacotes de serviço básicos e premium), talvez seja necessário escalar horizontalmente os recursos de computação para pacotes de serviço premium de modo mais agressivo do que aqueles para pacotes de serviço básico, para assim atender aos SLAs.If you offer different levels of service (such as basic and premium service packages), you may need to scale out the compute resources for premium service packages more aggressively than those for basic service packages in order to meet SLAs.

  • Considere usar o comprimento da fila, pela qual a interface do usuário e as instâncias de computação em segundo plano se comunicam, como um critério da sua estratégia de dimensionamento automático.Consider using the length of the queue over which UI and background compute instances communicate as a criterion for your autoscaling strategy. Esse é o melhor indicador de um desequilíbrio ou a diferença entre a carga atual e a capacidade de processamento da tarefa em segundo plano.This is the best indicator of an imbalance or difference between the current load and the processing capacity of the background task.

  • Se sua estratégia de dimensionamento automático em contadores que medem processos de negócios, como o número de pedidos feitos por hora ou o tempo médio de execução de uma transação complexa, certifique-se de entender completamente a relação entre os resultados desses tipos de contadores e os reais requisitos de capacidade de computação.If you base your autoscaling strategy on counters that measure business processes, such as the number of orders placed per hour or the average execution time of a complex transaction, ensure that you fully understand the relationship between the results from these types of counters and the actual compute capacity requirements. Pode ser necessário dimensionar mais de um componente ou unidade de computação em resposta a alterações nos contadores de processo empresarial.It may be necessary to scale more than one component or compute unit in response to changes in business process counters.

  • Para evitar que o sistema tente escalar horizontalmente de modo excessivo e para evitar os custos associados à execução de vários milhares de instâncias, considere a possibilidade de limitar o número máximo de instâncias que podem ser adicionadas automaticamente.To prevent a system from attempting to scale out excessively, and to avoid the costs associated with running many thousands of instances, consider limiting the maximum number of instances that can be automatically added. A maioria dos mecanismos de dimensionamento automático permitem que você especifique os números mínimo e máximo de instâncias para uma regra.Most autoscaling mechanisms allow you to specify the minimum and maximum number of instances for a rule. Além disso, considere degradar normalmente a funcionalidade que o sistema oferece se o número máximo de instâncias tiverem sido implantadas e, ainda assim, o sistema estiver sobrecarregado.In addition, consider gracefully degrading the functionality that the system provides if the maximum number of instances have been deployed, and the system is still overloaded.

  • Mantenha em mente que dimensionamento automático pode não ser o mecanismo mais apropriado para lidar com um aumento repentino na carga de trabalho.Keep in mind that autoscaling might not be the most appropriate mechanism to handle a sudden burst in workload. Leva tempo para provisionar e iniciar novas instâncias de um serviço ou adicionar recursos a um sistema, e o pico da demanda pode já ter passado quando esses recursos adicionais forem disponibilizados.It takes time to provision and start new instances of a service or add resources to a system, and the peak demand may have passed by the time these additional resources have been made available. Nesse cenário, talvez seja melhor limitar o serviço.In this scenario, it may be better to throttle the service. Para saber mais, confira Padrão de limitação.For more information, see the Throttling pattern.

  • Por outro lado, se você precisa da capacidade de processar todas as solicitações quando o volume flutua rapidamente e o custo não é um fator principal, considere usar uma estratégia de dimensionamento automático agressiva que inicia as instâncias adicionais mais rapidamente.Conversely, if you do need the capacity to process all requests when the volume fluctuates rapidly, and cost isn't a major contributing factor, consider using an aggressive autoscaling strategy that starts additional instances more quickly. Você também pode usar uma política programada que inicie um número suficiente de instâncias para atender à carga máxima antes que ela seja esperada.You can also use a scheduled policy that starts a sufficient number of instances to meet the maximum load before that load is expected.

  • O mecanismo de dimensionamento automático deve monitorar o processo de dimensionamento automático e registrar os detalhes de cada evento desse dimensionamento (o que o disparou, quais recursos foram adicionados ou removidos e quando isso ocorreu).The autoscaling mechanism should monitor the autoscaling process, and log the details of each autoscaling event (what triggered it, what resources were added or removed, and when). Se você criar um mecanismo de dimensionamento automático personalizado, certifique-se de que ele incorpora essa funcionalidade.If you create a custom autoscaling mechanism, ensure that it incorporates this capability. Analise as informações para ajudar a medir a eficiência da estratégia de dimensionamento automático e ajustá-la se necessário.Analyze the information to help measure the effectiveness of the autoscaling strategy, and tune it if necessary. Você pode ajustar tanto a curto prazo, conforme os padrões de uso tornam-se mais óbvios, quanto a longo prazo, conforme os negócios se expandem ou os requisitos do aplicativo evoluem.You can tune both in the short term, as the usage patterns become more obvious, and over the long term, as the business expands or the requirements of the application evolve. Se um aplicativo atinge o limite superior definido para o dimensionamento automático, o mecanismo também pode alertar um operador, que pode iniciar recursos adicionais manualmente se necessário.If an application reaches the upper limit defined for autoscaling, the mechanism might also alert an operator who could manually start additional resources if necessary. Observe que, sob essas circunstâncias o operador pode também ser responsável por remover manualmente esses recursos depois que alivia a carga de trabalho.Note that under these circumstances the operator may also be responsible for manually removing these resources after the workload eases.

Os padrões e diretrizes a seguir também podem ser relevantes a esse cenário ao implementar o dimensionamento automático:The following patterns and guidance may also be relevant to your scenario when implementing autoscaling:

  • Padrão de limitação.Throttling pattern. Esse padrão descreve como um aplicativo pode continuar a funcionar e cumprir os contratos de nível de serviço quando um aumento na demanda coloca uma carga extrema sobre os recursos.This pattern describes how an application can continue to function and meet SLAs when an increase in demand places an extreme load on resources. É possível usar limitação com o dimensionamento automático para evitar que, ao escalar horizontalmente o sistema, este seja sobrecarregado.Throttling can be used with autoscaling to prevent a system from being overwhelmed while the system scales out.

  • Padrão de consumidores concorrentes.Competing Consumers pattern. Esse padrão descreve como implementar um conjunto de instâncias de serviço que pode lidar com mensagens de qualquer instância do aplicativo.This pattern describes how to implement a pool of service instances that can handle messages from any application instance. O dimensionamento automático pode ser usado para iniciar e parar as instâncias de serviço de acordo com a carga de trabalho prevista.Autoscaling can be used to start and stop service instances to match the anticipated workload. Essa abordagem permite que um sistema processe várias mensagens simultaneamente para otimizar o resultado, melhorar a escalabilidade e disponibilidade e equilibrar a carga de trabalho.This approach enables a system to process multiple messages concurrently to optimize throughput, improve scalability and availability, and balance the workload.

  • Monitoramento e diagnósticos.Monitoring and diagnostics. Instrumentação e telemetria são essenciais para reunir as informações que podem orientar o processo de dimensionamento automático.Instrumentation and telemetry are vital for gathering the information that can drive the autoscaling process.