Dimensionamento automáticoAutoscaling

O dimensionamento automático é o processo de alocar dinamicamente recursos para satisfazer requisitos de desempenho.Autoscaling is the process of dynamically allocating resources to match performance requirements. À medida que o volume de trabalho cresce, as aplicações podem precisar de mais recursos para manter os níveis de desempenho pretendidos e satisfazer os 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). Quando a procura abranda e os recursos adicionais deixam de ser necessários, podem ser desalocados 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 tira partido da elasticidade dos ambientes alojados na cloud e alivia a gestão administrativa.Autoscaling takes advantage of the elasticity of cloud-hosted environments while easing management overhead. Reduz a necessidade de um operador monitorizar continuamente o desempenho de um sistema e tomar decisões quanto a 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.

As aplicações podem ser dimensionadas de duas formas principais:There are two main ways that an application can scale:

  • Dimensionamento vertical, também conhecido como aumentar e reduzir verticalmente, que significa alterar a capacidade de um recurso.Vertical scaling, also called scaling up and down, means changing the capacity of a resource. Por exemplo, pode mover uma aplicação para uma VM com um tamanho maior.For example, you could move an application to a larger VM size. Muitas vezes, o dimensionamento vertical requer tornar o sistema indisponível temporariamente enquanto está a ser reimplementado.Vertical scaling often requires making the system temporarily unavailable while it is being redeployed. Por conseguinte, é menos comum automatizar o dimensionamento vertical.Therefore, it's less common to automate vertical scaling.

  • Dimensionamento horizontal, também conhecido como aumentar ou reduzir horizontalmente, que significa adicionar ou remover instâncias de um recurso.Horizontal scaling, also called scaling out and in, means adding or removing instances of a resource. A aplicação continua a ser executada sem interrupção enquanto os recursos novos são aprovisionados.The application continues running without interruption as new resources are provisioned. Quando o processo de aprovisionamento estiver concluído, a solução é implementada nesses recursos adicionais.When the provisioning process is complete, the solution is deployed on these additional resources. Se a procura cair, os recursos adicionais podem ser encerrados facilmente e desalocados.If demand drops, the additional resources can be shut down cleanly and deallocated.

Muitos sistemas baseados na cloud, incluindo o Microsoft Azure, suportam o dimensionamento horizontal automático.Many cloud-based systems, including Microsoft Azure, support automatic horizontal scaling. O resto deste artigo aborda o dimensionamento horizontal.The rest of this article focuses on horizontal scaling.

Nota

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

Descrição geralOverview

Normalmente, as estratégias de dimensionamento automático envolvem as seguintes partes:An autoscaling strategy typically involves the following pieces:

  • Sistemas de instrumentação e monitorização ao nível da aplicação, do serviço e da infraestrutura.Instrumentation and monitoring systems at the application, service, and infrastructure levels. Estes sistemas capturam métricas-chave, como, por exemplo, tempos de resposta, comprimentos das filas, utilização da CPU e utilização da memória.These systems capture key metrics, such as response times, queue lengths, CPU utilization, and memory usage.
  • Lógica de tomada de decisões, que avalia estas métricas relativamente a limiares predefinidos ou agendas e decide se vai ocorrer o dimensionamento.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.
  • Testes, monitorização e otimização da estratégia de dimensionamento automático, para garantir que funciona conforme esperado.Testing, monitoring, and tuning of the autoscaling strategy to ensure that it functions as expected.

O Azure oferece mecanismos de dimensionamento automático incorporado que se aplicam a cenários comuns.Azure provides built-in autoscaling mechanisms that address common scenarios. Se um determinado serviço ou tecnologia não tiver a funcionalidade de dimensionamento automático incorporado ou se tiver requisitos de dimensionamento automático específicos para além das respetivas capacidades, pode 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 recolheria métricas operacionais e de sistema, analisá-las-ia e, em seguida, dimensionaria recursos em conformidade.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 oferece o dimensionamento automático incorporado para a maioria das opções de computação.Azure provides built-in autoscaling for most compute options.

Todas estas opções de computação utilizam o dimensionamento automático do Azure Monitor para proporcionar um conjunto comum de funcionalidades de dimensionamento automático.These compute options all use Azure Monitor autoscale to provide a common set of autoscaling functionality.

  • As Funções do Azure diferem das opções de computação anteriores, 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 Funções do Azure alocam automaticamente capacidade de computação quando o seu código está em execução, aumentando horizontalmente conforme necessário para processar 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, veja Choose the correct hosting plan for Azure Functions (Escolher o plano de alojamento certo para as Funções do Azure).For more information, see Choose the correct hosting plan for Azure Functions.

Por fim, em alguns casos, pode ser útil ter uma solução de dimensionamento automático personalizada.Finally, a custom autoscaling solution can sometimes be useful. Por exemplo, pode utilizar os diagnósticos e as métricas baseadas na aplicação do Azure, juntamente com código personalizado para monitorizar e exportar as métricas das aplicações.For example, you could use Azure diagnostics and application-based metrics, along with custom code to monitor and export the application metrics. Depois, pode definir regras personalizadas com base nessas métricas e utilizar APIs REST do Resource Manager 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, não é simples implementar uma solução personalizada e só deve ser considerada se nenhuma das abordagens anteriores satisfizer os 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.

Utilize as funcionalidades de dimensionamento automático incorporado da plataforma, se cumprirem os seus requisitos.Use the built-in autoscaling features of the platform, if they meet your requirements. Caso contrário, considere cuidadosamente se precisa realmente de funcionalidades de dimensionamento mais complexas.If not, carefully consider whether you really need more complex scaling features. Alguns exemplos de requisitos adicionais podem incluir um controlo mais granular, diferentes formas de detetar eventos de acionadores para dimensionamento, o dimensionamento ao nível de várias subscrições e o 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.

Utilizar o dimensionamento automático do Azure MonitorUse Azure Monitor autoscale

O dimensionamento automático do Azure Monitor disponibiliza um conjunto comum de funcionalidades de dimensionamento automático para conjuntos de dimensionamento de VMs, o Serviço de Aplicações do Azure e o Serviço Cloud do Azure.Azure Monitor autoscale provide a common set of autoscaling functionality for VM Scale Sets, Azure App Service, and Azure Cloud Service. O dimensionamento pode ser feito de acordo com uma agenda ou baseado numa métrica de runtime, como a utilização da CPU ou da memória.Scaling can be performed on a schedule, or based on a runtime metric, such as CPU or memory usage. Exemplos:Examples:

  • Aumentar horizontalmente para dez instâncias nos dias úteis e reduzir horizontalmente para quatro instâncias ao sábado e ao domingo.Scale out to 10 instances on weekdays, and scale in to 4 instances on Saturday and Sunday.
  • Aumentar horizontalmente em uma instância se a utilização média da CPU for superior a 70% e reduzir horizontalmente em uma instância se essa utilização for inferior a 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%.
  • Aumentar horizontalmente em uma instância se o número de mensagens numa fila exceder um determinado limiar.Scale out by one instance if the number of messages in a queue exceeds a certain threshold.

Para obter uma lista das métricas incorporadas, veja Azure Monitor autoscaling common metrics (Métricas comuns do dimensionamento automático do Azure Monitor).For a list of built-in metrics, see Azure Monitor autoscaling common metrics. Também pode implementar métricas personalizadas com o Application Insights.You can also implement custom metrics by using Application Insights.

Pode configurar o dimensionamento automático com 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 um controlo mais detalhado, utilize a API REST do Azure Resource Manager.For more detailed control, use the Azure Resource Manager REST API. A Biblioteca de Gestão do Azure Monitoring Service e a Biblioteca do Microsoft Insights (em pré-visualização) são SDKs que permitem recolher métricas de recursos diferentes e utilizar as APIs REST para realizar o dimensionamento automático.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. Em recursos nos quais não haja suporte para o Azure Resource Manager ou se estiver a utilizar os Serviços Cloud do Azure, a API REST da Gestão de Serviço pode ser utilizada para o 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. Em todos os outros casos, utilize o Azure Resource Manager.In all other cases, use Azure Resource Manager.

Tenha em conta os seguintes pontos quando utilizar o dimensionamento automático do Azure:Consider the following points when using Azure autoscale:

  • Considere se consegue prever suficientemente bem a carga na aplicação para utilizar o dimensionamento automático agendado, adicionando e removendo instâncias para satisfazer picos antecipados na procura.Consider whether you can predict the load on the application well enough to use scheduled autoscaling, adding and removing instances to meet anticipated peaks in demand. Se isto não for possível, utilize o dimensionamento automático reativo baseado em métricas, de modo a lidar com as alterações imprevisíveis na procura.If this isn't possible, use reactive autoscaling based on runtime metrics, in order to handle unpredictable changes in demand. Normalmente, pode combinar estas abordagens.Typically, you can combine these approaches. Por exemplo, crie uma estratégia que adiciona os recursos segundo uma agenda das horas em que sabe que a aplicação está mais ocupada.For example, create a strategy that adds resources based on a schedule of the times when you know the application is most busy. Isto ajuda a garantir que a capacidade está disponível sempre que necessário, sem atrasos provocados quando são iniciadas as instâncias novas.This helps to ensure that capacity is available when required, without any delay from starting new instances. Para cada regra agendada, defina métricas que permitem o dimensionamento automático reativo durante esse período, para se certificar de que a aplicação consegue processar picos constantes, mas imprevisíveis, na procura.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 compreender a relação entre métricas e requisitos de capacidade, especialmente durante a implementada inicial de uma aplicação.It's often difficult to understand the relationship between metrics and capacity requirements, especially when an application is initially deployed. Aprovisione um pouco de capacidade extra no início e, depois, monitorize e otimize as regras de dimensionamento automático, para que a capacidade se aproxime 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, em seguida, monitorize o desempenho da sua aplicação ao longo do tempo.Configure the autoscaling rules, and then monitor the performance of your application over time. Utilize os resultados desta monitorização para ajustar a forma através da qual o sistema se dimensiona, se necessário.Use the results of this monitoring to adjust the way in which the system scales if necessary. No entanto, tenha em atenção que o dimensionamento automático não é um processo instantâneo.However, keep in mind that autoscaling is not an instantaneous process. Demora algum tempo a reagir a uma métrica, como a utilização média da CPU que excede (ou fica aquém) um limiar 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 utilizam um mecanismo de deteção baseado num atributo de acionador medido (como a utilização da CPU ou o comprimento da fila) utilizam um valor agregado ao longo do tempo, em vez de valores instantâneos, para acionar uma ação de dimensionamento automático.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 predefinição, a agregação consiste numa média dos valores.By default, the aggregate is an average of the values. Isto impede o sistema de reagir de forma demasiado rápida ou de provocar oscilações rápidas.This prevents the system from reacting too quickly, or causing rapid oscillation. Também dá tempo para que as instâncias novas que são iniciadas automaticamente entrem no modo de execução, evitando que ocorram ações de dimensionamento automático adicionais enquanto aquelas instâncias são iniciadas.It also allows time for new instances that are auto-started to settle into running mode, preventing additional autoscaling actions from occurring while the new instances are starting up. Nos Serviços Cloud do Azure e nas Máquinas Virtuais do Azure, o período predefinido para a agregação são 45 minutos, pelo que a métrica pode demorar todo este tempo para acionar o dimensionamento automático em resposta a picos na procura.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. Pode alterar o período de agregação com o SDK, mas lembre-se de que os períodos de menos de 25 minutos podem causar resultados imprevisíveis.You can change the aggregation period by using the SDK, but be aware that periods of fewer than 25 minutes may cause unpredictable results. Nas aplicações Web, o período médio é muito mais pequeno, o que permite que as instâncias novas estejam disponíveis em cerca de cinco minutos após ser feita uma alteração à medida de acionador 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 com o SDK em vez do portal, pode 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. Também pode criar as suas próprias métricas e utilizá-las com ou sem qualquer uma das métricas existentes nas 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, pode querer utilizar contadores alternativos, tal como o número de pedidos por segundo ou a disponibilidade da memória média, ou utilizar contadores personalizados que medem processos empresariais 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 that measure specific business processes.

  • Ao dimensionar automaticamente o Service Fabric, os tipos de nós no seu cluster são compostos por conjuntos de dimensionamento de VMs no back-end, pelo que tem de configurar regras de dimensionamento automático para cada tipo de nó.When autoscaling Service Fabric, the node types in your cluster are made of VM scale sets at the backend, so you need to set up auto-scale rules for each node type. Antes de configurar o dimensionamento automático, tenha em conta o número de nós que tem de ter.Take into account the number of nodes that you must have before you set up auto-scaling. O número mínimo de nós que tem de ter para o tipo de nó principal é condicionado pelo nível de fiabilidade que escolheu.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, veja Scale a Service Fabric cluster in or out using auto-scale rules (Aumentar vertical ou horizontalmente um cluster do Service Fabric com regras de dimensionamento automático).For more info, see scale a Service Fabric cluster in or out using auto-scale rules.

  • Pode utilizar o portal para ligar recursos, como filas e instâncias da Base de Dados SQL, a uma instância dos Serviços Cloud.You can use the portal to link resources such as SQL Database instances and queues to a Cloud Service instance. Desta forma, pode aceder mais facilmente às opções separadas da configuração de dimensionamento manual e automático de cada um dos recursos ligados.This allows you to more easily access the separate manual and automatic scaling configuration options for each of the linked resources. Para obter mais informações, consulte como: Ligar um recurso a um serviço em nuvem.For more information, see How to: Link a resource to a cloud service.

  • A configuração de várias políticas e regras pode causar conflitos entre as mesmas.When you configure multiple policies and rules, they could conflict with each other. O dimensionamento automático utiliza as seguintes regras de resolução de conflitos para garantir que existe 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:

    • As operações de aumento horizontal têm sempre precedência sobre as operações de redução horizontal.Scale out operations always take precedence over scale in operations.
    • Se as operações de aumento horizontal entrarem em conflito, terá precedência a regra que provoca o maior aumento no número de instâncias.When scale out operations conflict, the rule that initiates the largest increase in the number of instances takes precedence.
    • Se as operações de redução horizontal entrarem em conflito, terá precedência a regra que provoca a menor diminuição no número de instâncias.When scale in operations conflict, the rule that initiates the smallest decrease in the number of instances takes precedence.
  • Num Ambiente de Serviço de Aplicações, pode ser utilizado qualquer conjunto de funções de trabalho ou métricas de front-end para definir as 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, veja Autoscaling and App Service Environment (O Dimensionamento Automático e o Ambiente de Serviço de Aplicações).For more information, see Autoscaling and App Service Environment.

Considerações de design de aplicaçõesApplication design considerations

O dimensionamento automático não é uma solução instantânea.Autoscaling isn't an instant solution. A simples adição de recursos a um sistema ou a execução de mais instâncias de um processo não garante a melhoria do desempenho desse sistema.Simply adding resources to a system or running more instances of a process doesn't guarantee that the performance of the system will improve. Ao desenhar uma estratégia de dimensionamento automático, considere os seguintes pontos:Consider the following points when designing an autoscaling strategy:

  • O sistema tem de ser desenhado para ser dimensionável horizontalmente.The system must be designed to be horizontally scalable. Evite faze suposições quanto à afinidade das instâncias; não desenhe soluções que requeiram que o código seja sempre executado numa 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. Quando dimensionar um serviço cloud ou um Web site horizontalmente, não parta do princípio de que uma série de pedidos da mesma origem será sempre encaminhada 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. Pelo mesmo motivo, desenhe os serviços de modo a que não tenham estado, para evitar que seja necessário encaminhar sempre uma série de pedidos de uma aplicação 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 desenhar um serviço que lê mensagens de uma fila e as processa, não faça suposições relativamente a que instância do serviço processa uma mensagem específica.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 à medida que 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 lidar com este cenário.The Competing Consumers pattern describes how to handle this scenario.

  • Se a solução implementar uma tarefa de execução longa, desenhe essa tarefa para suportar o aumento e a redução horizontal.If the solution implements a long-running task, design this task to support both scaling out and scaling in. Sem o devido cuidado, semelhante tarefa pode impedir o encerramento correto de uma instância de um processo quando o sistema é reduzido horizontalmente ou pode originar perda de dados, se o processo for terminado à força.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, reformule uma tarefa de execução longa e divida o processamento que a mesma realiza em segmentos mais pequenos e discretos.Ideally, refactor a long-running task and break up the processing that it performs into smaller, discrete chunks. O padrão de Pipes e filtros fornece um exemplo de como fazê-lo.The Pipes and Filters pattern provides an example of how you can achieve this.

  • Em alternativa, pode implementar um mecanismo de ponto de verificação que regista informações de estado da tarefa em intervalos regulares e guardar esse estado num armazenamento duradouro ao qual qualquer instância do processo que está a executar a tarefa pode aceder.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. Desta forma, se o processo for encerrado, o trabalho que estava a realizar pode ser retomado a partir do último ponto de verificação mediante a utilização de outra instância.In this way, if the process is shutdown, the work that it was performing can be resumed from the last checkpoint by using another instance.

  • Quando são executadas tarefas em segundo plano em instâncias de computação separadas, como em funções de trabalho de uma aplicação alojada de serviços cloud, poderá ter de dimensionar partes diferentes da aplicação com políticas de dimensionamento distintas.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, poderá ter de implementar instâncias de computação de interface de utilizador (IU) adicionais sem aumentar o número de instâncias de computação em segundo plano ou vice-versa.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 oferecer diferentes níveis de serviço (por exemplo, pacotes de serviço premium e básico), de modo a cumprir os SLAs, poderá ter de aumentar horizontalmente os recursos de computação para os pacotes de serviço premium de forma mais agressiva do que os dos pacotes de serviço básico.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 utilizar o comprimento da fila através da qual as instâncias de computação de interface de utilizador e em segundo plano comunicam como 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. Este é o melhor indicador de um desequilíbrio ou 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 basear a estratégia de dimensionamento automático em contadores que medem os processos empresariais, como o número de encomendas feitas por hora ou o tempo médio de execução de uma transação complexa, certifique-se de que compreende perfeitamente a relação entre os resultados desses tipos de contadores e os requisitos de capacidade de computação reais.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. Poderá ser necessário dimensionar mais de um componente ou unidade de computação como resposta a alterações nos contadores de processos empresariais.It may be necessary to scale more than one component or compute unit in response to changes in business process counters.

  • Para impedir que um sistema tente aumentar horizontalmente em excesso e para evitar os custos associados à execução de muitos milhares de instâncias, considere limitar o número máximo de instâncias que podem ser adicionadas de forma automática.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-lhe especificar o número 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 diminuir de forma adequada a funcionalidade que o sistema proporciona se tiver sido implementado o número máximo de instâncias e que o sistema continua 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.

  • Tenha em atenção que o dimensionamento automático pode não ser o mecanismo mais adequado para processar uma rajada repentina da carga de trabalho.Keep in mind that autoscaling might not be the most appropriate mechanism to handle a sudden burst in workload. O aprovisionamento e o início de instâncias novas de um serviço ou adicionar recursos a um sistema demora algum tempo e poderá dar-se o caso de o pico na procura já ter passado quando esses recursos adicionais estiverem disponíveis.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. Neste cenário, poderá ser melhor limitar o serviço.In this scenario, it may be better to throttle the service. Para obter mais informações, consulte a padrão de limitação.For more information, see the Throttling pattern.

  • Por outro lado, se precisar de capacidade para processar todos os pedidos quando o volume flutua rapidamente e o custo não é um obstáculo principal, considere utilizar uma estratégia de dimensionamento automático agressiva que inicie instâncias adicionais mais depressa.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. Também pode utilizar uma política agendada que inicia um número suficiente de instâncias para satisfazer a carga máxima antes de essa carga ser 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 deverá monitorizar o processo de dimensionamento automático e registar os detalhes de cada evento de dimensionamento automático (o que o acionou, os recursos que foram adicionados ou removidos e quando).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 criar um mecanismo de dimensionamento automático personalizado, confirme que o mesmo incorpora esta capacidade.If you create a custom autoscaling mechanism, ensure that it incorporates this capability. Analise as informações para ajudar a medir a eficácia da estratégia de dimensionamento automático e otimize-a, se necessário.Analyze the information to help measure the effectiveness of the autoscaling strategy, and tune it if necessary. Pode otimizar a curto prazo, à medida que os padrões de utilização se tornam mais evidentes, e a longo prazo, enquanto a empresa se expande ou os requisitos da aplicação 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 uma aplicação atingir o limite superior definido para o dimensionamento automático, o mecanismo poderá também alertar um operador, o qual poderá iniciar manualmente recursos adicionais, 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. Tenha em conta que, nestas circunstâncias, o operador também poderá ser responsável por remover à mão esses recursos quando a carga de trabalho baixar.Note that, under these circumstances, the operator may also be responsible for manually removing these resources after the workload eases.

Os padrões e as orientações que se seguem também podem ser relevantes para o seu cenário quando 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. Este padrão descreve de que forma é que uma aplicação pode continuar a funcionar e a cumprir os SLAs quando o aumento da procura provoca uma carga extrema nos 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. A limitação pode ser utilizada com o dimensionamento automático para impedir que um sistema fique assoberbado durante a operação de aumento horizontal.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. Este padrão descreve como implementar um conjunto de instâncias de serviços que podem processar mensagens a partir de qualquer instância da aplicação.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 utilizado para iniciar e parar instâncias de serviços, de modo a satisfazer a carga de trabalho antecipada.Autoscaling can be used to start and stop service instances to match the anticipated workload. Esta abordagem permite que um sistema processe várias mensagens em simultâneo para otimizar o débito, melhorar a escalabilidade e a disponibilidade e balancear 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.

  • Monitorização e diagnóstico.Monitoring and diagnostics. A instrumentação e a telemetria são essenciais para a recolha das 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.