Loupe

Azure AppService : créer une application scalable

Dans cette session Yochay Kiriaty (Program Manager) donne les bonnes pratiques pour créer une application web évolutive avec Azure AppService.

Tout d'abord, l'évolutivité désigne la capacité d'un produit à s'adapter à un changement d'ordre de grandeur de la demande (montée en charge), en particulier sa capacité à maintenir ses fonctionnalités et ses performances en cas de forte demande (source Wikipédia).

Sur Azure vous avez deux possibilités d'augmenter votre infrastructure :

  • Scale up : augmenter la capacité matérielle de la machine
  • Scale out : augmenter le nombre de machine

     

Mais pour bénéficier de cette évolutivité, il faut que votre application suive un certain nombre de principes :

  • Fondamentaux
    • Etre sans état, surtout vis-à-vis de la persistance sur fichier car AppService utilise un stockage partagé.
    • Désactiver le cookie d'affinité (ARR-affinity) pour bénéficier d'une répartition de charge homogène
    • Activer l'option « Always-On » afin d'être sûr que votre application soit toujours chargée

     

  • Optimisation des ressources
    • Utiliser directement Azure Storage notamment pour les blobs au lieu de les faire « transiter » par votre application
    • Cache (.Net output, redis)
    • Azure CDN
    • Limiter les IO : les logs et traces ne doivent pas être mis sur le système de fichier mais plutôt sur Azure Storage

     

  • Optimisation applicative
    • Utiliser le connection pooling (ServicePointManager.DefaultConnectionLimit)
    • Utiliser App Init Module pour les applications ayant un temps de warmup long

     

  • Diviser pour mieux régner
    • Architecture micro-service avec un App Service Plan adapté à chaque type de charge
    • Utiliser Azure Functions afin de gérer les opérations stateless asynchrone

     

  • Ressources dédiées avec App Service Environment qui fournit un environnement complètement isolé et dédié avec des possibilités de scale out plus important

     

  • Géo-distribution avec traffic manager

 

Nombre d'entre elles sont déjà connues (un petit rappel est toujours bon) sauf celle bien sûr concernant Azure Functions qui a été annoncé lors de cette conférence Build.

Voilà.

Ces billets pourraient aussi vous intéresser

Vous nous direz ?!

Commentaires

comments powered by Disqus