Ce 23/01/2018 avait lieu la date parisienne du Red Shirt Dev Tour. « Red Shirt ? » me demanderez-vous – à raison. Le nom de cette tournée mondiale de conférences est en hommage à l’emblématique polo rouge particulièrement affectionné par le speaker principal, Scott Guthrie.

Ce dernier est aujourd’hui Executive Vice President of the Cloud and Enterprise group chez Microsoft. On le voit très régulièrement en keynote speaker dans un nombre assez impressionnant de conférences. Il est le patron de Microsoft Azure et est accessoirement un excellent développeur. La légende veut d’ailleurs qu’il ait écrit le socle technique d’ASP.NET Webforms en un week-end. On en pense ce qu’on veut – 15 ans plus tard… – mais ça reste une techno qui fait encore tourner un bon paquet de sites en production en 2018.

Donc le sieur Guthrie est venu avec une petite équipe de speakers nous présenter les nouveautés récentes d’Azure. Et on ne peut pas dire que les équipes de dev chez Microsoft chôment. Ce billet va tenter de faire un petit tour d’horizon.

IaaS

De nouvelles tailles de VMs sont très régulièrement ajoutées. Recemment, on a vu apparaître la série B dédiées aux scénarios dont le besoin en CPU est très volatile. Les séries DS et GS ont également été enrichies. La tendance est donc à offrir aux clients des solutions pour des scénarios IaaS moins coûteux.

Ont également été abordés les thèmes suivants :

  • Monitoring et troubleshooting : un effort important a été fait dans ce sens. On pense notamment aux évolutions constantes de OMS et AppInsights.
  • Disaster recovery : le portail inclue maintenant une fonctionnalité native (à l’heure actuelle en preview) permettant de redonder une machine sur plusieurs datacenters et de mettre en place immédiatement des procédures de bascule en cas d’anomalie. Le lien se trouve dans le menu de gauche de vos VMs.
  • CLI : une interface en ligne de commande (command line interface) est disponible depuis quelques temps et pourrait bien vous aider à automatiser certaines tâches. En effet, tout ce que vous exécutez au clic sur le portail Azure peut être effectué via l’API REST, des commandlets Powershell et donc la CLI. Jetez un oeil à la doc, ça mérite le coup d’oeil.
  • Data centers : deux nouvelles régions en France seront accessibles en general availability dans un futur très proche (le JDN parle de mars) : France Central et France South. Il est déjà possible de déployer des ressources dans ces nouvelles régions si vous avez rejoint la preview. Cela portera à 8 le nombre de régions Azure en Europe, là où nous n’en avions que 2 encore récemment. Particularité intéressante de France Central : la nouvelle notion d’Availability Zone sera disponible immédiatement à l’ouverture.

App Services

Après une rapide mais classique démo des fonctionnalités de base d’un App Service :

  • création en local d’une appli node.js
  • création d’une Web App
  • création du repo git local
  • commit
  • ajout du master de la Web App comme remote du master local
  • push

Ensuite, on a fait le tour des fonctionnalités standard de la Web App : monitoring basique, scaling manuel et autoscalling.

Puis on en est venu aux choses intéressantes. Une démo du log streaming, permettant de visualiser en temps réel les logs de vos App Services sans overhead. Ça peut être diablement pratique pour du diagnostique à chaud.

Nous avons également vu comment générer un script permettant de générer la ressource via la CLI. Puis, après avoir vu comment publier une application web depuis Visual Studio vers l’AppService (ne faites pas ça chez vous, s’il vous plait), nous avons abordé le sujet des slots de déploiement. Cette fonctionnalité extrêmement utile permet pour chaque App Service d’avoir N slots. Ces slots ont leur propre espace de stockage, hostname. Cela permet le type de scénario suivant :

  • déployer une nouvelle version de l’application
  • la valider
  • la pré-chauffer de façon à permettre un déploiement sans impact négatif sur la production
  • échanger le slot de déploiement avec le slot de production sans perdre de requête http (c’est Azure qui prend en charge cette responsabilité)
  • pouvoir revenir en arrière si besoin

Notons que cette fonctionnalité est entièrement gratuite et valable sur tous les sizings des App Services.

Mobile

Après des démonstrations de Visual Studio App Center, le nouveau portail de gestion des applications mobiles proposé par Microsoft et d’Intune App Management, le portail de gestion des périphériques mobiles d’une organisation, Scott Guthrie a enfin annoncé LE truc attendu par tous les (12) développeurs Xamarin / iOS : le design, debug et déploiement sans avoir besoin d’une machine MacOS sur le réseau. Ils avaient l’air contents.

DevOps

Pas de grosses surprises ici. On commence avec une démo classique du pipeline CI/CD de VSTS : intégration de git et des pull requests, build et déploiement automatisé avec Release Management. Parmi les ajouts intéressants plus ou moins récents, citons tout de même l’intégration native des tests de charge et des swaps de slots dans les pipelines de build et release VSTS.

Point intéressant : l’intégralité des équipes de dev Microsoft (y compris les mastodontes Windows et Office) sont maintenant sous VSTS et git.

Data

Il y a aujourd’hui beaucoup de services de bases de données en mode PaaS dans Azure :

  • Azure SQL : le SQL Server as a Service
  • CosmosDb : la base NoSQL multi-paradigme (document, clé-valeur, graphe, colonne)
  • MySQL
  • PostgreSQL
  • Redis
  • SQL Data Warehouse
  • etc.

On ne va évidemment pas faire un tour exhaustif ici, mais nous voyons que ce (très) large éventail offre une latitude extrêmement confortable pour nous développeurs quant à la façon dont nous gérons la persistance des données de nos applications.

Un des chantiers importants sur lesquels à travaillé Microsoft dernièrement a été la containerisation de SQL Server. Il est donc tout à fait possible de faire tourner SQL Server 2017 dans un container Docker. Quand on connait les difficultés qu’on a pu avoir dans le passé à industrialiser l’administration de machines SQL Server, c’est un gros pas en avant.

Parmi les fonctionnalités intéressantes de SQL Azure (la version PaaS de SQL Server, donc), les sujets suivants ont été abordés :

  • Les recommandations de performances : Azure analyse l’usage de la base de données et propose des actions d’améliorations des performances, comme l’ajout d’index. Pour cela, des propositions sont faites avec le gain attendu. On peut générer le script et l’appliquer manuellement ou l’appliquer directement depuis le portail. C’est pratique, mais attention à l’industrialisation. Il est également possible de laisser le moteur de recommandations les appliquer automatiquement.
  • Le portail permet de détecter automatiquement les tentatives d’injection SQL

  • Notez aussi la fonctionnalité « Vulnerability Assessment » qui permet d’auditer automatiquement une base selon les bonnes pratiques et de lister des actions de remédiation.
  • Le chiffrement des bases est possible avec Transparent Data Encryption. Ce service assure qu’en cas d’intrusion dans le système, les données sont protégées car chiffrées. Le déchiffrement peut être effectué par certificat ou grâce à une clé stockée dans Azure Vault.
  • Dynamic Data Masking permet (surprise) de masquer des informations critiques d’une base de données (des données personnelles, bancaires, de santé, etc.) via des fonctions natives d’anonymisation. Coucou GDPR !
  • Azure Database Migration Service permet de migrer facilement une base on premise vers Azure (SQL Azure, Azure SQL Managed Instance ou SQL Server dans une VM). Parmi les prérequils : une ExpressRoute ou un VPN reliant la source et la destination.
  • Azure SQL Managed Instance est une variante de Azure SQL, toujours en mode PaaS, exposant les quelques fonctionnalités de SQL Server absentes de Azure SQL (requêtes cross-database, l’agent SQL, l’isolations dans un VNET…). C’est encore preview à date, mais la GA ne devrait pas tarder maintenant.
  • CosmosDb fait l’objet d’énormément d’attention. C’est le service Azure qui croît le plus rapidement à l’heure actuelle. Pour rappel, CosmosDb est plus ou moins le successeur de DocumentDb, la base NoSQL document PaaS de Microsoft. CosmosDb vient avec un certain nombre de promesses :
    1. des requêtes extrêmement rapides du fait de l’indexation automatique de l’intégralité des données
    2. de la géo-réplication native
    3. plusieurs paradigmes supportés : clé-valeur avec Azure Table Storage, MongoDb, Cassandra, Gremlin pour les bases graph et enfin le bon vieux SQL.
    4. le sacro-saint tryptique consistance – faible latence – haute disponibilité. Rien que ça.
    5. La possibilité de choisir son niveau de consistance : de éventuelle à élevée

Containers

Les containers sont à la mode, et ce n’est pas peu dire. Pour faire simple, voici ce que nous dit Docker à leur sujet :

A container image is a lightweight, stand-alone, executable package of a piece of software that includes everything needed to run it: code, runtime, system tools, system libraries, settings. Available for both Linux and Windows based apps, containerized software will always run the same, regardless of the environment. Containers isolate software from its surroundings, for example differences between development and staging environments and help reduce conflicts between teams running different software on the same infrastructure.

Ce vieux ronchon de Hadi Hariri dit à leur sujet que : « Depuis des décennies, les développeurs nous disent que ça marche sur leur poste. On a enfin trouvé une solution pour envoyer leur poste en production. ». C’est drôle, mais c’est aussi vrai. Et l’écosystème des containers et de leur orchestration bouillonne. Tout le monde aura entendu parler de Docker, mais d’autres initiatives ont aussi vu le jour : Mesos ou Kubernetes.

Microsoft devait évidemment proposer une offre liée à ces problématiques, et c’est ainsi qu’est né Azure Container Service (ACS). Cette première initiative avait pour promesse de supporter plusieurs moteurs orchestrateurs (Kubernetes, Mesos DC/OS ou Docker Swarm). Kubernetes devenant un standard de facto, l’éditeur a changé son fusil d’épaule et ACS est devenu AKS. AKS est donc un orchestrateur de containers managé basé vous l’aurez compris sur Kubernetes. Vous avez donc accès à la CLI kubectl et avez donc accès à l’intégralité des possibilités offertes par Kubernetes sans vous soucier de l’infrastructure sur laquelle elle repose.

On peut déployer un container Docker en une ligne de commande depuis son image. Et toute application .NET peut tourner dans un container Docker. On recommandera de déployer des applications .NET Core, car elles peuvent tourner sous Linux ou Windows et peuvent être totalement autoportantes, mais on peut également se baser sur des images Docker avec Windows Server et .NET 3.5 et 4.6.2 préinstallées. Ces images sont développées et maintenues par les équipes .NET.

Serverless

Derrière un nom pas tout à fait honnête se cache un réel mouvement. Le serverless a pour but de pousser un cran plus loin l’abstraction de l’infrastructure. Dans le monde IaaS, vous gérez des machines virtuelles de toutes sortes sans vous souciez de l’infrastructure physique. Dans le monde PaaS, vous gérez des resources (Web Apps, bases SQL, etc.) sans vous soucier des VM sur lesquelles elles sont exécutées. Dans le monde serverless, vous gérez des fonctions sans vous soucier des resources qui les exécutent. Sur Azure, l’imprémentation s’appelle Azure Function.

Une fonction est concrètement une méthode rendant un service. Ces méthodes réagissent à des événements :

  • un appel http
  • un message dans une Storage Queue
  • un timer
  • un événement dans une base CosmosDb
  • un webhook
  • etc.

La liste complète est ici.  La panoplie est donc plutôt intéressante. Et le mode de facturation également. Par défaut, on est facturé à la consommation et à l’exécution : chaque exécution d’une fonction a un coût, ainsi que la consommation de resources mesurée en Go/s. Globalement, les fonctions sont peu coûteuses à l’usage. Et on peut également les lier à un Service Plan existant, auquel cas elles rentrent dans la tarification standard du plan.

Le développement sur les premières versions des Azure Functions était un peu rudimentaire : du script ou rien. Ce script pouvait être en C# CSX, F# ou Javascript. Et le développement et le déploiement se faisait directement depuis le portail. Les choses sont plus sérieuses aujourd’hui, et on peut maintenant déployer du vrai C# compilé, tester en local et déployer depuis VSTS ou autre.

Intelligence artificielle

La démo a été très classique ici, mais elle fait toujours son effet sur ceux qui la voient la première fois. Nous avons vu en action les Cognitive Services avec FaceAPI et la détection de sentiments dans du texte.

Les modèles AzureML sont maintenant déployés sous forme d’images Docker. Une démonstration du flux création de modèle – entraînement du système – déploiement du service a été faite et on voit que tout ceci s’industrialise très vite. Le Workbench intègre maintenant les Jupyter Notebooks et le résultat est plutôt sexy.

Azure Stack

Après une première tentative très laborieuse avec Azure Pack, Microsoft a revu sa copie et propose maintenant Azure Stack, une solution complète pour avoir son propre Azure on premise et permettre des scénarios poussés d’infrastructures hybrides cloud public et cloud privé.

Tips and tricks

Pour finir, Scott Guthrie a simplement listé une série de trucs et astuces allant de pratique à sauveur de vie :

  • Azure Advisor : de l’audit automatique sur les sujets de disponibilité, sécurité, performance et coût.
  • Security Center : des recommandations personnalisées basées sur les bonnes pratiques de sécurité. On peut également appliquer certaines recommandations directement depuis cet espace.
  • Azure Policy : un outil de gouvernance des ressources
  • Les tableaux de bord custom
  • La possibilité de réutiliser ses licences Windows on premise pour des machines IaaS dans Azure et tirer leur coût vers le bas
  • Les instances réservées : diminuez le coût de vos VM en donnant à l’avance la région Azure, le type de VM et leur durée de vie. En contrepartie de cette prévisibilité, Microsoft diminue leur prix.
  • Azure Cost Management : optimisez vos coûts à l’aide des recommandations personnalisées.
  • Azure App Service Diagnose and Troubleshoot : c’est encore en preview, mais cette fonctionnalité promet d’aider à identifier et résoudre les incidents en distinguant les problèmes d’infra des problèmes applicatifs.

Vous l’aurez compris, la journée a été dense et qu’on connaisse Azure ou pas, il y avait un tas d’infos intéressantes à glaner.

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *