# Estrategia de actualización

## Enfoque Evergreen

Recomendamos un enfoque Evergreen para las actualizaciones de SCEPman. Este es el enfoque predeterminado si SCEPman se ha implementado usando el canal de producción. SCEPman utiliza ZIP-Deployment apuntando directamente al [SCEPman GitHub](https://github.com/scepman) y cargar la versión más reciente que el equipo de desarrollo haya publicado.

El canal de producción, junto con los otros canales disponibles, se mencionan en la siguiente guía:

{% content-ref url="../configuracion-de-scepman/application-artifacts" %}
[application-artifacts](https://docs.scepman.com/es/configuracion-de-scepman/application-artifacts)
{% endcontent-ref %}

Con este enfoque siempre obtiene las funciones más nuevas y las actualizaciones de seguridad.

{% hint style="info" %}
Tenga en cuenta que **una actualización solo ocurre cuando el App Service se detiene y se inicia de nuevo**. Este es el evento cuando se activa el ZIP-Deployment. Mientras el App Service no se detenga y reinicie automáticamente, se reinicia externamente en ciertos eventos. Uno de esos eventos es el [mantenimiento y parcheo de la infraestructura subyacente](https://learn.microsoft.com/en-us/azure/app-service/routine-maintenance-downtime). Esos ocurren **regularmente y mantienen su servicio actualizado**.
{% endhint %}

En un entorno empresarial de producción, si desea tener más control sobre el proceso de actualización puede usar la característica de Microsoft **Deployment Slots**.

## Configuración de Deployment Slot

En caso de que desee tener control total sobre el proceso de actualización de SCEPman puede usar el **Deployment Slots** dentro del Azure App Service.

{% hint style="success" %}
Para obtener más detalles sobre el **Deployment Slots** puede visitar la documentación de Microsoft:\
<https://docs.microsoft.com/en-us/azure/app-service/deploy-staging-slots>
{% endhint %}

Los siguientes pasos le dan nuestra configuración recomendada para una gestión de pre-lanzamiento

{% hint style="info" %}
Tenga en cuenta que cada Deployment Slot se ejecuta en el mismo App Service Plan de su App de producción y usa los mismos recursos.
{% endhint %}

### Slot de pre-lanzamiento

La idea detrás del slot de pre-lanzamiento es tener su App Service de producción ejecutándose con artefactos almacenados en su propia cuenta de Storage y crear un nuevo Deployment Slot apuntando a nuestros artefactos en GitHub. Puede encontrar los pasos para configurar su ubicación de artefactos personalizada en el siguiente artículo:

{% content-ref url="../configuracion-de-scepman/application-artifacts" %}
[application-artifacts](https://docs.scepman.com/es/configuracion-de-scepman/application-artifacts)
{% endcontent-ref %}

Ahora su App Service de producción se está ejecutando con una ubicación de artefactos personalizada y procedemos con la configuración del nuevo Deployment Slot.

{% hint style="info" %}
Requisitos del Deployment Slot \*\*\*\* (vía PS. Módulo SCEPman):

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

El siguiente comando CMDlet creará un Deployment Slot y configurará todos los permisos necesarios por usted.

```
New-SCEPmanDeploymentSlot -SCEPmanAppServiceName <Nombre de su App Service SCEPman> -DeploymentSlotName <Nombre para el DeploymentSlot> 6>&1
```

**Ejemplo**

![](https://4115997120-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)

Después de que la implementación se complete con éxito, puede comprobar el deployment slot en su App Service SCEPman -> **Deployment slots**

![](https://4115997120-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)

Ahora asegúrese de que su deployment slot apunte al canal de producción de SCEPman en GitHub:

Navegue a la **Deployment Slot** -> **Variables de entorno** y busque la configuración **WEBSITE\_RUN\_FROM\_PACKAGE** y pegue el [artefactos del canal de producción](https://docs.scepman.com/es/configuracion-de-scepman/application-artifacts#production) en el valor.

<figure><img src="https://4115997120-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>

Si vuelve a su **App Service** y navega a **Deployment Slots y**puede ver sus dos slots y puede administrar el **Porcentaje de tráfico** para dirigir la cantidad definida de solicitudes al nuevo **pre-lanzamiento** slot.\
Importante que este enrutamiento de tráfico es completamente transparente para la aplicación y gestionado por el App Service. Recomendamos establecer el **Porcentaje de tráfico** a **20**. Después de eso, puede comparar los dos slots en **Application Insights**. En caso de que lancemos una versión actualizada en nuestro GitHub, solo debe reiniciar el **pre-lanzamiento** slot y después de eso, puede comparar las dos versiones diferentes en **Application Insights**. Después de una semana o el tiempo que usted elija, puede subir los nuevos artefactos de GitHub a su ubicación de artefactos personalizada y haber actualizado la solución SCEPman.
