Compartilhar via


Configurar a colocação em escala

Defina as configurações de dimensionamento para gerenciar o desempenho e o custo do Pool de DevOps Gerenciado. Para obter informações sobre preços e desempenho, consulte Gerenciar custo e desempenho.

Estado do agente

Os pools de DevOps gerenciados podem ser configurados como sem estado ou com estado.

  • Pools sem estado - Forneça um novo agente para cada trabalho.
  • Pools com estado - Permitem o compartilhamento de agentes entre vários trabalhos.

A configuração padrão para um pool de DevOps gerenciado é sem estado (sempre um novo agente), mas, em alguns casos, as equipes podem querer reutilizar agentes para reutilizar os pacotes ou arquivos criados durante a execução do pipeline anterior. A carga de trabalho de build é um cenário comum em que as equipes desejam preservar o estado e reutilizar agentes. Você pode obter pools com estado por meio de pools de DevOps gerenciados enquanto os equilibra com as práticas recomendadas de segurança. Por padrão, um agente pode ser reutilizado por no máximo 7 dias, mas você pode configurá-lo para ser reciclado mais cedo.

Observação

Pools sem estado ou uso da configuração de estado do agente Agente novo sempre são recomendados por especialistas em segurança como uma defesa contra ataques à cadeia de suprimentos.

Pools sem estado

Quando um agente sem estado é configurado, um novo agente é adquirido para cada trabalho e é descartado após a conclusão do trabalho.

Captura de tela de um agente sem estado.

Quando o estado do agente é definido como Novo agente todas as vezes, um novo agente é adquirido para cada trabalho e é descartado após a conclusão do trabalho.

Pools com estado

Captura de tela de um agente com estado.

Quando o mesmo agente pode ser usado por vários builds ("kind": "stateful" em modelos de recursos ou { "stateful": {...} } na CLI do Azure) está habilitado, os agentes no pool são considerados com estado. Os pools com estado são configurados usando as configurações a seguir.

  • Tempo máximo de vida útil para agentes em espera (maxAgentLifetime) configura a duração máxima que um agente em um pool com estado pode ser executado antes de ser desligado e descartado. O formato para o tempo máximo de vida dos agentes em espera é dd.hh:mm:ss. O valor padrão de Tempo máximo de vida útil para agentes em espera é definido como a duração máxima permitida de sete dias (7.00:00:00).

  • Período de carência (gracePeriodTimeSpan) configura a quantidade de tempo que um agente em um pool com estado aguarda novos trabalhos antes de desligar depois que todos os trabalhos atuais e enfileirados forem concluídos. O formato do Período de Carência é dd.hh:mm:ss e o padrão é sem período de carência.

Enquanto os agentes em pools stateless são desligados e descartados após cada trabalho, os agentes em pools stateful continuam em execução se qualquer uma das condições a seguir for atendida.

  • Se houver outro trabalho na fila quando o primeiro trabalho for concluído, os Pools de DevOps Gerenciados enviarão esse trabalho para o agente que executou o primeiro trabalho em vez de desligá-lo.
  • Se houver um período de carência configurado para o pool, os agentes aguardarão novos trabalhos pela duração especificada pelo período de carência antes de desligar.
  • Se os agentes em espera estiverem ativados e a imagem do agente atender aos critérios do período de provisionamento ativo, o agente continuará a ser executado e aguardará trabalhos.

Os agentes em execução em pools com estado serão desligados e descartados se forem executados continuamente pela duração especificada por Tempo máximo de vida útil para agentes em espera, mesmo que as condições anteriores sejam verdadeiras. Por exemplo, se o tempo máximo de vida útil dos agentes em espera estiver configurado para três dias e o modo de agente em espera estiver definido como Manual, esquema para todas as semanas (máquinas disponíveis 24 horas por dia, 7 dias por semana), os agentes serão reiniciados após três dias contínuos de tempo de atividade.

Importante

Os agentes em pools com estado ainda podem ser desligados e descartados após a conclusão de um trabalho se não houver período de carência, nenhum período de provisionamento ativo para agentes em espera e nenhum trabalho enfileirado correspondente ao agente. Depois que um agente é descartado, qualquer estado é perdido.

O período de carência permite a maneira mais econômica de executar pools com estado para pipelines com carga consistente e não requer o uso do modo de agente em espera para manter os agentes online e prontos para aceitar trabalhos.

Modo de agente em espera

Quando você cria um pool, o modo de agente em espera está desativado por padrão e não há agentes em espera para atribuir imediatamente aos pipelines, que podem ter que aguardar alguns instantes, até 15 minutos, para que um agente seja provisionado sob demanda. Para obter melhor desempenho, habilite o modo de agente em espera e configure um agendamento de agente em espera que forneça capacidade para sua carga de trabalho.

  • Desativado - O modo de agente em espera está desativado e os agentes são provisionados sob demanda quando os trabalhos são enfileirados.
  • Manual - Configure um agendamento de espera manual.
  • Automático - Use uma programação automática em espera com base no histórico de uso do agente e configurável para custo e desempenho.

Captura de tela da seleção do modo de agente em standby.

Manual

O modo manual é mais adequado para equipes que têm conhecimento de seus padrões de uso de pipelines de CI/CD. Se você selecionar a opção manual, precisará definir seu esquema de pré-provisionamento com base em sua compreensão de quando os agentes no pool têm maior probabilidade de serem usados e quantos agentes provavelmente serão usados, além de especificar uma contagem de provisionamento de agentes que atendem à demanda projetada.

Você pode criar sua própria programação de provisionamento ou escolher uma das agendas predefinidas e pode configurar o fuso horário a ser usado para especificar as agendas. O valor padrão para o fuso horário de pré-provisionamento é (UTC) Tempo Universal Coordenado.

Dica

A contagem de provisionamento em um esquema não pode ser maior que o Máximo de agentes configurados nas configurações do pool.

A cada poucos minutos, os Pools de DevOps Gerenciados verificam a contagem de agentes ativos em execução e agentes em espera aguardando trabalhos, para garantir que a contagem de provisionamento de agentes especificada pelo esquema de provisionamento atual esteja disponível. Se a contagem de provisionamento atual for 10 e houver cinco agentes executando trabalhos e dois agentes em espera, os Pools de DevOps Gerenciados iniciarão três agentes em espera adicionais para elevar a contagem total de agentes para 10.

A configuração manual do agente em espera pode ser configurada de uma das três maneiras a seguir.

Cada um dos inícios rápidos de pré-provisionamento tem as seguintes configurações comuns, além das configurações específicas para esse início rápido.

  • O TimeZone de pré-provisionamento permite que você configure o fuso horário para os horários em seu esquema de pré-provisionamento. O valor padrão para o fuso horário de pré-provisionamento é (UTC) Tempo Universal Coordenado.
  • A porcentagem do agente em espera configura a porcentagem de agentes em espera que você deseja para cada imagem. Você pode inserir * para garantir que todas as imagens sejam provisionadas igualmente ou pode especificar um número inteiro de 0 a 100 para representar uma porcentagem. Se você especificar uma porcentagem, o total de todas as imagens deverá ser igual a 100. Se você tiver uma única imagem, especifique * ou 100. A porcentagem do agente em espera é configurada na images seção ao usar modelos do ARM. Para obter mais informações, consulte Configurar imagens.

Captura de tela do modo de espera manual.

Comece do zero

Se você optar por começar do zero, poderá adicionar uma lista de períodos de provisionamento para servir como seu esquema de provisionamento. Cada período de provisionamento consiste em um dia de início, dia de término, fuso horário, hora de início, hora de término e uma contagem. Os períodos de provisionamento não podem se sobrepor.

Propriedade Descrição
Vários dias Quando marcada, você pode configurar um Dia de Início e um Dia de Término para seu esquema de provisionamento.
Até o próximo período Quando marcado, o período de provisionamento é executado a partir da Hora de Início até o início do próximo período de provisionamento.
Dia de início O dia em que o período de provisionamento começa.
Dia de Fim O dia em que termina o período de provisionamento. Obrigatório se a opção Multi-Day estiver marcada.
Horário de Início A hora em que o período de provisionamento começa.
Horário de Término A hora em que o período de provisionamento termina. Obrigatório, a menos que Até o próximo período seja marcado.
Count O número de agentes em espera a serem provisionados. Esse número deve ser maior que zero e não deve ser maior que o valor máximo de agentes configurado nas configurações do pool.

Depois de criar um período de provisionamento, você pode excluir ou editar o período da lista Esquema de pré-provisionamento.

O exemplo a seguir configura um esquema manual com 1 agente provisionado nas manhãs de segunda-feira, das 12:00 às 5:00 EST.

Captura de tela do esquema de dimensionamento manual.

Esquema de dias úteis

Se você escolher o esquema de dia da semana, poderá especificar uma hora de início e uma hora de término em que o número especificado de agentes em espera estará em espera a cada dia da semana.

Propriedade Descrição
Horário de Início A hora em que o período de provisionamento começa.
Horário de Término A hora em que o período de provisionamento termina.
Contagem de provisionamento O número de agentes em espera a serem provisionados. Esse número deve ser maior que zero e não deve ser maior que o valor máximo de agentes configurado nas configurações do pool.

O exemplo a seguir configura quatro agentes a serem usados durante o horário de trabalho com 0 agentes fora do horário de trabalho e fins de semana, usando o horário padrão do leste.

Captura de tela do esquema de dia da semana.

Esquema durante toda a semana

Se você escolher o esquema de semana inteira, poderá especificar um número de agentes que deseja disponibilizar 24 horas por dia, 7 dias por semana.

Captura de tela do esquema de toda a semana.

Automático

Se você não conhece seus padrões de uso e deseja confiar na previsão automática com base em dados anteriores, escolha Automático. Você pode equilibrar o custo e o desempenho do agente usando um controle deslizante com as cinco opções a seguir. Os pools de DevOps gerenciados executam uma consulta nas últimas três semanas de dados históricos (se disponíveis), organizando sessões enfileiradas do pool em períodos de cinco minutos e atribuem o percentil especificado (para evitar picos) a cada hora.

  • Mais custo-efetivo (MostCostEffective) - 10º percentil
  • Mais econômico (MoreCostEffective) - percentil 25
  • Balanceado (padrão) (Balanced) - 50º percentil
  • Mais desempenho (MorePerformance) - percentil 75
  • Melhor desempenho (BestPerformance) - percentil 90

Captura de tela da configuração de dimensionamento automático.

Confira também