# Dimensionamento do App Service

## Noções básicas

O SCEPman depende principalmente dos recursos de CPU. A memória e o disco são muito menos importantes.

Uma instância do SCEPman (versão 3.0 e mais recente) em um plano de serviço Azure App Service P0V3 (195 ACUs) pode atender cerca de 4000 pedidos por minuto em condições normais. Os pedidos são

* pedidos de emissão SCEP e
* pedidos OCSP.

Isso significa que o SCEPman pode atender cerca de 20 pedidos por minuto por ACU.

Como um certificado é registado uma vez, mas a sua validade é verificada muitas vezes, haverá muito mais pedidos OCSP do que pedidos SCEP no total. Portanto, deve dimensionar a sua instância do SCEPman com base nos seus pedidos OCSP.

## Dependências

A carga do seu serviço SCEPman tem várias dependências e varia nos diferentes ambientes. As dependências importantes são:

1. Distribuição dos pedidos
2. Frequência de iniciações de sessão em recursos de rede
3. Frequência de pedidos/renovações de certificados

Especialmente a distribuição dos pedidos tem grande importância. Se todos os clientes fizerem pedidos ao mesmo tempo, as suas instâncias do SCEPman ficarão sob forte carga. Deve procurar fazer com que o SCEPman responda aos pedidos SCEP em menos de um minuto em todos os casos.

{% hint style="warning" %}
Por favor, não atribua perfis SCEP a um grande número de utilizadores/dispositivos ao mesmo tempo, uma vez que isso pode resultar num pico de pedidos nas suas instâncias do SCEPman.
{% endhint %}

## Recomendação

Recomendamos o seguinte dimensionamento em Unidades de Computação Azure (ACU) para os Planos de Serviço Azure App Service como ponto de partida:

| Quantidade de utilizadores/clientes |                  Design singular                 |                   Design georreduntante                  |
| :---------------------------------: | :----------------------------------------------: | :------------------------------------------------------: |
|           < 5000 clientes           |    <p>\~100 ACUs<br>(por exemplo, 1 x S1)</p>    |     <p>2 x \~100 ACUs</p><p>(por exemplo, 2 x S1)</p>    |
|          < 10.000 clientes          |  <p>\~200 ACUs</p><p>(por exemplo, 1 x P0V3)</p> |    <p>2 x \~200 ACUs</p><p>(por exemplo, 2 x P0V3)</p>   |
|          < 25.000 clientes          |  <p>\~400 ACUs</p><p>(por exemplo, 2 x P0V3)</p> |     <p>2 x \~400 ACUs<br>(por exemplo, 4 x P0V3)</p>     |
|          < 50.000 clientes          |  <p>\~800 ACUs</p><p>(por exemplo, 4 x P0V3)</p> |     <p>2 x \~800 ACUs<br>(por exemplo, 8 x P0V3)</p>     |
|          < 100.000 clientes         | <p>\~1600 ACUs</p><p>(por exemplo, 4 x P1V3)</p> |   <p>2 x \~1600 ACUs</p><p>(por exemplo, 8 x P1V3)</p>   |
|          > 100.000 clientes         | <p>\~3200 ACUs</p><p>(por exemplo, 4 x P2V3)</p> | <p>2 x \~3200 ACUs</p><p>(por exemplo, 2 x 4 x P2V3)</p> |

Com base nestas recomendações, pode monitorizar o seu tráfego e ver se consegue reduzir a escala, conforme descrito na secção [Ajuste fino](#fine-tuning) abaixo.

## Prognóstico de custos do Azure

Os principais custos do Azure serão para os Planos de Serviço Azure App Service. Pode derivar o seu custo a partir dos requisitos na tabela acima e [a sua lista de preços do Azure](https://azure.microsoft.com/en-us/pricing/calculator/) ou a visão geral genérica sem descontos do [preço do App Service](https://azure.microsoft.com/en-us/pricing/details/app-service/windows/) .

Os recursos adicionais do Azure (Key Vault, Storage Account, Log Analytics, recursos de rede para endpoints privados) têm um papel menor no custo. Dependendo dos casos de utilização no seu ambiente, deve esperar um adicional de 5% a 25% sobre o custo do Plano de Serviço App Service para estes recursos adicionais do Azure.

{% hint style="info" %}
Esta projeção de custos é apenas uma regra prática para o ajudar a estimar o custo do Azure. Pode variar significativamente em diferentes ambientes.
{% endhint %}

## Ajuste fino

Cada ambiente tem a sua própria distribuição de carga ao longo do dia. Em muitos ambientes, a manhã (início do trabalho) gera um pico em termos de carga no seu SCEPman.

### Dimensionamento manual

Pode adaptar a capacidade de computação do seu App Service à sua distribuição diária individual de carga com as funcionalidades de escala horizontal do Azure App Service. Por exemplo, poderia definir 2 x S1 de manhã das 08:00 às 10:00 para cobrir o pico da manhã, enquanto reduz para 1 x S1 durante o resto do dia.

### Dimensionamento automático

Em alternativa, pode usar a funcionalidade de autoscaling do Azure App para se adaptar aos recursos necessários. Saiba mais sobre isso em [Autoscaling](https://docs.scepman.com/pt/configuracao-do-azure/azure-sizing/autoscaling).

### Dimensionamento manual vs. automático

Se conseguir prever bem a sua carga (por exemplo, com base no histórico de carga), recomendamos o Dimensionamento manual em vez do Dimensionamento automático, uma vez que o Dimensionamento automático tem de agir de forma lenta (histerese) para evitar oscilações entre escalas.
