# Estratégia de Atualização

## Abordagem Evergreen

Recomendamos uma abordagem Evergreen para as atualizações do SCEPman. Esta é a abordagem padrão se o SCEPman tiver sido implantado usando o canal de produção. O SCEPman usa ZIP-Deployment ao apontar diretamente para o [SCEPman GitHub](https://github.com/scepman) e carregar a versão mais recente lançada pela equipe de desenvolvimento.

O canal de produção, juntamente com os outros canais disponíveis, é mencionado no guia a seguir:

{% content-ref url="../configuracao-do-scepman/application-artifacts" %}
[application-artifacts](https://docs.scepman.com/pt/configuracao-do-scepman/application-artifacts)
{% endcontent-ref %}

Com esta abordagem, você sempre obtém os recursos mais recentes e as atualizações de segurança.

{% hint style="info" %}
Tenha em mente que **uma atualização só ocorre quando o App Service é parado e iniciado novamente**. Este é o evento em que o ZIP-Deployment é acionado. Embora o App Service não pare e inicie automaticamente, ele é reiniciado externamente em determinados eventos. Um desses eventos é a [manutenção e aplicação de patches da infraestrutura subjacente](https://learn.microsoft.com/en-us/azure/app-service/routine-maintenance-downtime). Essas ocorrem **regularmente e mantêm o seu serviço atualizado**.
{% endhint %}

Em um ambiente empresarial de produção, se você quiser ter mais controle sobre o processo de atualização, pode usar o recurso da Microsoft **Deployment Slots**.

## Configuração do Deployment Slot

Caso queira ter controle total sobre o processo de atualização do SCEPman, você pode usar o **Deployment Slots** dentro do Azure App Service.

{% hint style="success" %}
Para obter mais detalhes sobre o **Deployment Slots** você pode consultar a documentação da Microsoft:\
<https://docs.microsoft.com/en-us/azure/app-service/deploy-staging-slots>
{% endhint %}

Os passos a seguir fornecem a configuração recomendada por nós para um gerenciamento de pré-lançamento

{% hint style="info" %}
Tenha em mente que cada Deployment Slot está executando no mesmo App Service Plan do seu aplicativo de produção e usa os mesmos recursos.
{% endhint %}

### Slot de pré-lançamento

A ideia por trás do slot de pré-lançamento é fazer com que seu App Service de produção seja executado com artefatos armazenados na sua própria conta de Storage e criar um novo Deployment Slot apontando para os nossos artefatos do GitHub. Você pode encontrar os passos para configurar o local dos seus artefatos personalizados no artigo a seguir:

{% content-ref url="../configuracao-do-scepman/application-artifacts" %}
[application-artifacts](https://docs.scepman.com/pt/configuracao-do-scepman/application-artifacts)
{% endcontent-ref %}

Agora o seu App Service de produção está sendo executado com um local de artefatos personalizado e prosseguimos com a configuração do novo Deployment Slot.

{% hint style="info" %}
Requisitos do Deployment Slot \*\*\*\* (via módulo PS. SCEPman):

* SCEPman **2.2** ou superior
* Módulo SCEPman do PowerShell **1.5.1.0** ou superior
  {% endhint %}

O seguinte comando CMDlet criará um Deployment Slot e configurará todas as permissões necessárias para você.

```
New-SCEPmanDeploymentSlot -SCEPmanAppServiceName <Seu Nome de App Service do SCEPman> -DeploymentSlotName <Nome Para O Deployment Slot> 6>&1
```

**Exemplo**

![](https://3802289327-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2Fgit-blob-e6d6f6705ddea62ace2056be7939000667f1be20%2F2022-06-13%2017_36_44-DeploymentSlotCommand.png?alt=media)

Depois que a implantação for concluída com sucesso, você pode verificar o deployment slot no seu SCEPman App Service -> **Deployment slots**

![](https://3802289327-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2Fgit-blob-dc8370a42c97d7d629bf570e79136d689eb64fa9%2F2022-06-13%2011_53_59-DeploymentSlot.png?alt=media)

Agora certifique-se de que o seu deployment slot aponta para o canal de Produção do SCEPman no GitHub:

Navegue até o **Deployment Slot** -> **Environment variables** e procure a configuração **WEBSITE\_RUN\_FROM\_PACKAGE** e cole os [artefatos do canal de produção](https://docs.scepman.com/pt/configuracao-do-scepman/application-artifacts#production) no valor.

<figure><img src="https://3802289327-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2FhWunHIoJy8uhT2T5S6Mq%2Fimage.png?alt=media&#x26;token=4430a03c-7728-4ed5-9207-e711a279996e" alt=""><figcaption></figcaption></figure>

Se você voltar para o seu **App Service** principal e navegar para **Deployment Slots e**você pode ver os seus dois slots e pode gerenciar o **% de tráfego** para direcionar a quantidade definida de solicitações para o novo **pré-lançamento** slot.\
Importante: essa divisão de tráfego é completamente transparente para a aplicação e é tratada pelo App Service. Recomendamos definir o **% de tráfego** para **20**. Depois disso, você pode comparar os dois slots em **Application Insights**. Caso publiquemos uma versão atualizada no nosso GitHub, você só precisará reiniciar o **pré-lançamento** slot e, depois disso, poderá comparar as duas versões diferentes em **Application Insights**. Após uma semana ou o tempo que você escolher, você pode carregar os novos artefatos do GitHub para o local dos seus artefatos personalizados e ter atualizado a solução SCEPman.
