# Autoscaling

{% hint style="warning" %}
Os recursos de autoscaling estão disponíveis apenas para realms que utilizam o modelo **Consumption-Based.** Se o seu realm utiliza esse modelo, é altamente recomendado ativar o autoscaling para aproveitar a elasticidade automática, o que pode reduzir custos de consumo.
{% endhint %}

## O que é Autoscaling

Autoscaling é o processo de ajuste de recursos computacionais de acordo com a carga de trabalho.\
Os pipelines são escaláveis horizontalmente, o que significa que réplicas podem ser **criadas ou removidas dinamicamente**, dependendo do número de mensagens (invocações) na fila.

A Digibee Integration Platform monitora continuamente a fila e ajusta o número de réplicas para garantir o **uso ideal dos recursos** e o **processamento eficiente**, independentemente do tipo de trigger que gerou as mensagens.

## Como Autoscaling funciona

<figure><img src="/files/c1Qthxy6E7xSPoLddWQJ" alt=""><figcaption></figcaption></figure>

Toda execução de pipeline começa com um **trigger**. Diferentes tipos de triggers, como [Scheduler](/documentation/connectors-and-triggers/pt-br/triggers/scheduling/scheduler.md), [Event](/documentation/connectors-and-triggers/triggers/messaging-and-events/event.md) ou [HTTP](/documentation/connectors-and-triggers/triggers/web-protocols/http.md), possuem comportamentos e critérios de ativação específicos. Esses triggers determinam se uma mensagem será enviada para a fila de execução para processamento ou se deve ser ignorada ou rejeitada.

### Algoritmo de Autoscaling

O algoritmo de autoscaling escala os pipelines **horizontalmente**. A cada **10 segundos**, a Plataforma monitora o sistema e pode executar os seguintes comandos:

#### Activation (de 0 para 1)

* Se o **número mínimo de réplicas estiver configurado como zero**, o pipeline pode receber mensagens, mas não terá nenhuma réplica em execução.
* A primeira réplica é implantada quando a **primeira mensagem é recebida**, o que pode **aumentar a latência**.
* O tempo mínimo de inicialização é de **20 segundos**.
* Uma vez inicializada, a réplica processa a primeira e as próximas mensagens.

{% hint style="info" %}
A quantidade e o tipo de conectores no pipeline podem impactar o tempo de inicialização.
{% endhint %}

#### Scale Up (de 1 para N)

Quando o número de mensagens na fila ultrapassa **70% do total de execuções concorrentes**, a Plataforma implanta **réplicas adicionais**.

#### Scale Down (de N para 1)

A Plataforma reduz as réplicas quando menos recursos são necessários. O sistema calcula o número de réplicas necessárias com a seguinte fórmula:

```
Réplicas = ((Taxa de mensagens por segundo * Tempo de resposta em segundos) / Total de execuções concorrentes)
```

#### Scale-to-Zero (Cooldown)

Se o mínimo de réplicas for zero e uma única réplica permanecer ociosa por mais de **60 segundos**, o pipeline **reduz para zero réplicas**. Novas réplicas só são implantadas quando chegam novas mensagens.

* **Cooldown Personalizado:** É possível configurar um tempo de cooldown entre 60 e 300 segundos nas Configurações Avançadas do pipeline. Esse tempo define quanto o sistema espera antes de reduzir para zero após ficar ocioso.

## Autoscaling na Digibee Integration Platform

O processo de autoscaling na Digibee Integration Platform segue as seguintes fases:

### Fase 1: Ativação da primeira réplica

1. O sistema executa um comando de **Ativação** para criar e iniciar a **primeira réplica**.
2. Esse comando aciona o processamento da **primeira mensagem da fila**.
3. Os componentes necessários para o processamento do pipeline só são inicializados quando a réplica é implantada, ou seja, quando chegam mensagens.

{% hint style="info" %}
Como essa etapa pode adicionar latência ao tempo de resposta da primeira mensagem, recomenda-se configurar **mínimo de réplicas ≥ 1** em pipelines sensíveis à latência.
{% endhint %}

### Fase 2: Processamento de mensagens

1. Após a implantação e inicialização da primeira réplica, a Plataforma processa as primeiras mensagens conforme as configurações de concorrência.
2. Quando novas mensagens chegam:
   * Se houver capacidade disponível, elas são processadas pelos consumidores ativos.
   * Caso contrário, um [comando Scale Up](#scale-up-de-1-para-n) inicia uma nova réplica.

{% hint style="info" %}
O impacto do Scale Up no tempo de resposta é menor, pois ele ocorre apenas quando a fila atinge 70% da capacidade de execução concorrente.
{% endhint %}

**Fórmula da capacidade total de processamento:**

```
Capacidade total = Replicas × Execuções simultâneas por réplica
```

#### Fase 3: Redução de réplicas

* Se houver apenas algumas mensagens na fila, a Plataforma reduz gradualmente o número de réplicas até restar apenas uma.
* Se essa réplica única permanecer ociosa por mais de **60 segundos**, um [comando de Cooldown ](#scale-to-zero-cooldown)reduz o pipeline para zero réplicas.
* Novas réplicas só são implantadas quando chegam novas mensagens.

## Estratégias de Autoscaling

Existem dois tipos de estratégias de implantação de autoscaling na Digibee Integration Platform: **Scale-to-Zero** e **Always On**.

### Scale-to-Zero

O pipeline é implantado com autoscaling habilitado e mínimo de **zero réplicas**. Ele pode receber novas requisições, mas funciona com “zero réplicas”, sem custo até que a primeira mensagem chegue.

#### Cenário de uso recomendado

Essa estratégia é ideal para workloads que **não exigem resposta imediata** para a primeira mensagem.\
Por exemplo, um pipeline que roda apenas uma vez ao dia pode permanecer inativo a maior parte do tempo.\
Veja outros cenários onde o Scale to zero é aplicável:

* Pipelines agendados usando [trigger Scheduler](/documentation/connectors-and-triggers/pt-br/triggers/scheduling/scheduler.md).
* Workloads de baixa criticidade, em que a primeira mensagem pode tolerar latência extra.
* Workloads que buscam maximizar economia de custos durante períodos ociosos.

### Always On

O pipeline é implantado com autoscaling habilitado e mínimo de **1 ou mais réplicas**. Pelo menos uma réplica está sempre ativa, pronta para processar as primeiras mensagens imediatamente.

#### Cenário de uso recomendado

Essa estratégia garante respostas rápidas de baixa latência, mesmo em períodos de baixo tráfego. Always On é aplicável nos seguintes cenários:

* [Pipelines acionados por API](/documentation/connectors-and-triggers/pt-br/triggers/web-protocols/api.md).
* Workloads críticos, em que não é aceitável adicionar tempo extra de resposta na primeira mensagem.

{% hint style="info" %}
Substitua um pipeline Large com 1 réplica sem autoscaling por um pipeline Small com autoscaling habilitado, configurado entre 1 e 4 réplicas.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.digibee.com/documentation/developer-guide/pt-br/development-cycle/overview/runtime/autoscaling.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
