YounitedTech
Dec 21, 2018 · 4 min read

Azure App Services propose une fonctionnalité qui peut vous rendre service : les Deployment Slots, ou Emplacements de Déploiement en français (uniquement accessible aux plans Standard et Premium).

Cette fonctionnalité répond à plusieurs besoins :

  • Tester une nouvelle version de votre application sur l’environnement de production avant sa mise en service.
  • Déployer sans interruption de service ni ralentissement une nouvelle version d’application.
  • Comparer 2 versions d’application.
  • Faire un rollback d’une livraison par un simple clic.

Création

La création d’un slot de déploiement s’effectue depuis le menu « Deployment Slots » d’une WebApp :

Vous avez la possibilité de cloner la configuration de votre application de production ou d’un autre slot de déploiement :

  • Paramètres généraux
  • Paramètres d’application (App Settings, chaines de connexion, Handler mappings

Concrètement, un slot de déploiement est une nouvelle WebApp (avec sa propre URL http://{Nom WebApp}-{Nom du Slot}.azurewebsites.net) qui est hébergée dans le même « Service Plan » que l’application principale.

Déploiement d’une application sur un slot

Lorsqu’un slot de déploiement est disponible dans une application, il est proposé dans les différents outils de déploiement, comme Octopus Deploy ou Visual Studio :

Octopus Deploy :

Echange (Swap) des slots de déploiement

Lorsque vous échangez un slot de déploiement, le slot devient la production et la production devient le slot. Il existe 2 méthodes pour échanger les slots de déploiements.

Echange manuel

Echange Automatique

Après un déploiement, l’échange sera automatiquement effectué une fois l’application chargée

L’activation de cette option se fait depuis le menu « Application settings » de votre slot :

Test en production (« Testing in production »)

Cette fonction permet de rediriger, de manière transparente, un pourcentage du trafic entrant vers un ou plusieurs slots de déploiement.
Dans l’exemple ci-dessous, on choisit de ne rediriger que 20% du trafic vers l’application déployée sur le slot, ce qui permet par exemple d’éprouver une nouvelle fonctionnalité sur un échantillon réduit d’utilisateurs et prendre ainsi un risque mesuré.

Warmup

Après le déploiement d’une application, il y a toujours un temps d’attente (de quelques secondes à quelques minutes) avant qu’elle soit opérationnelle (Chargement de l’application, initialisation des configurations, alimentation des caches, etc.)

L’utilisation d’un slot vous permet de ne pas impacter la production pendant ce chargement :

  • Déploiement de la nouvelle version de l’application sur un slot
  • Vérification que l’application est entièrement chargée et fonctionnelle en utilisant l’adresse du slot
  • Mise en production en effectuant un échange

NB : il faut bien entendu que la nouvelle version de votre application soit rétrocompatible avec les dépendances et le modèle de données de l’ancienne version.

Rollback

Avec cette fonctionnalité d’échange, le rollback est un jeu d’enfant lorsque vous avez utilisé un slot pour livrer votre application. Il suffit d’à nouveau faire un échange pour revenir à la version précédente.

Automatisation

La manipulation des slots peut également se faire via des commandes Powershell, ce qui permet d’industrialiser des processus de déploiement spécifiques.

Voici quelques exemples :

Création d’un slot

New-AzureRmWebAppSlot -ResourceGroupName [Resource Group Name] -Name [WebApp ame] -Slot [Slot name] -AppServicePlan [app service plan name]

Echange d’un slot avec la production

Switch-AzureRmWebAppSlot -ResourceGroupName [Resource Group Name] -Name [WebApp Name] -SourceSlotName [Slot Name] -DestinationSlotName production

Conclusion

Avec cette fonctionnalité, vous n’avez plus d’excuses :

  • Plus d’interruption de service ni de ralentissement lors des livraisons.
  • Plus de mise en production d’applications non validées dans les conditions réelles.
  • Vos rollbacks en cas de problème sont extrêmement simples et rapides.
  • Vous avez la possibilité d’exposer progressivement vos nouvelles fonctionnalités à vos utilisateurs en minimisant les risques.

Originally published at blog-tech.younited-credit.com.

YounitedTech

Le blog Tech de Younited, où l’on parle de développement, d’architecture, de microservices, de cloud, de data… Et de comment on s’organise pour faire tout ça. Ah, et on recrute aussi, on vous a dit ?

YounitedTech

Written by

We build cool software

YounitedTech

Le blog Tech de Younited, où l’on parle de développement, d’architecture, de microservices, de cloud, de data… Et de comment on s’organise pour faire tout ça. Ah, et on recrute aussi, on vous a dit ?

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade