//Build 2018 – Build intelligent analytics app with MS Graph and Azure

Cette dernière session montrait comment il va être possible de construire et vendre des solutions d’analyse des données disponibles depuis le Graph Microsoft 365 (documents, mails, meetings…). Le service est en preview sur invitation (http://aka.ms/o365analyticspreview).

Ce type de solution va combiner plusieurs modules existants ou à venir :

  • Azure Data Factory (https://azure.microsoft.com/en-us/services/data-factory) pour extraire et préparer les données à analyser
  • O365 Privilege Access Management pour gérer les accès au Graph depuis le portail d’administration
  • Azure Managed Application pour packager sa solution et la publier sur le Market Place de telle sorte qu’elle s’installe de manière sécurisée sur le tenant du client sans avoir besoin d’y accéder en tant qu’éditeur

Et tous les services Azures pour stocker, transformer, analyser, extrapoler, afficher la données.

Les exemples de scénarios sont très variés : identifier les sujets majeurs dans l’entreprise et les documents liés, analyser les modes de collaboration, améliorer son organisation…

 

 

//Build 2018 – SmartUI with Adaptive Card and MS Graph

Ce talk au format court montrait essentiellement des démos de différents scénarios d’intégration de l’API Microsoft Graph :

//Build 2018 – Pair programming made awesome with Visual Studio Live Share

C’est une évidence, mais il est important de rappeler que la collaboration entre développeurs est de plus en plus importante pour plusieurs raisons :

  • On cherche à augmenter la fréquence des releases
  • Les équipes sont de plus en plus distribuées
  • Et on a toujours besoin de feedback à temps

Aujourd’hui on peut déjà collaborer via du partage d’écran, du contrôle de sources ou des messageries instantanées, mais globalement ça peut manquer d’interactivité ou prendre du temps en mise en œuvre. C’est là le but de VS Live Share : fournir une solution de collaboration en temps réels directement depuis son IDE !

Pour lancer une session il suffit de cliquer sur le bouton Share pour obtenir une URL à partager avec son collègue qui a juste besoin d’avoir installé l’extension sur son Visual Studio. Sans rien avoir téléchargé ni installé (ni les sources, ni le dépendances, ni les frameworks), on peut démarrer une session de pair programming :

  • On peut soit suivre exactement ce que fait le développeur Host ou suivre sa propre exploration des sources
  • Chacun peut éditer le code de son côté
  • On partage la même session de debug
  • Le Host peut aussi partager son serveur local ou sa base locale (ça ne partage pas l’écran, chacun peut par exemple ouvrir le site dans un navigateur différent)

VS Live Share fonctionne sur de nombreux langages et types d’application.

Une session Live Share est sécurisée : les invités sont authentifiés, la connexion est encryptée et le host ne partage que ce qu’il souhaite. Les fichiers du .gitignore sont masquées dans le Live Share, plus ceux listées dans un fichier .vsls.json.

Pour télécharger les extensions http://aka.ms/vsls.

Ne reste plus qu’à tester sur un projet !

//Build 2018 – Adaptive Cards in Bot, Windows, Outlook and your own application

L’objectif d’une Card est de publier du contenu au sein d’une autre application, il y a donc 2 acteurs : l’auteur du contenu et le conteneur en charge du rendu. Il existe déjà des formats de Card (Twitter, Open Graph, Messenger…) mais qui sont relativement rigides, et le problème d’intégrer un HTML Canvas donnerait trop de liberté, d’où l’idée des Adaptive Cards !

On démarre par une belle démo des différentes expériences utilisateurs dans un Bot, dans Teams, dans le Notification Center de Windows, dans une app UWP, dans Outlook et même Cortana ! Les sources de la démo sont sur https://github.com/matthidinger/ContosoScubaBot.

Au passage, on apprend que le support des Adaptive Cards est déjà sur la version Web d’Outlook Web, et arrivera à la fin du mois sur Outlook Desktop.

Une Adaptive Card a donc un rendu natif et adapté à son conteneur, peut être créer à faible cout, et uniquement via une déclaration JSON décrivant le contenu, les actions, les champs de saisie, de la voix…

La seconde démo nous montre comment créer son Adaptive Card sur http://adaptivecards.io/visualizer . Ils travaillent aussi sur un designer http://acdesignerbeta.azurewebsites.net/ pour créer son fichier JSON plus simplement.

Pour la troisième démo, on voit la construction de bout en bout d’une Adaptive Card « Hello Word » pour Outlook :

  1. Création du modèle dans le designer en ligne
  2. Utilisation d’une Azure Function
  3. Test d’envoi depuis https://messagecardplayground.azurewebsites.net/
  4. Affichage dans Outlook O365
  5. Puis dans Outlook Deskop où le contenu a été mis à jour

Pour construire ses Cards dans son back-end, on peut utiliser les objets C#, parser des templates JSON, utiliser des vues Razor pour générer le JSON ou des composants .acx en NodeJS.

On continue par le rendu d’une Adaptive Card dans son application via les SDK disponibles pour JS/HTML, WPF, UWP, iOS ou Android (Xamarin et ReactNative à venir). Là aussi, on a un fichier host.config pour déclarer comment le rendu doit se faire dans l’application. Ensuite on doit brancher les évènements si la Card contient des actions.

On finit par Adaptive Card V2 (en construction)

  • Inclure simplement des sous Cards juste par une URL vers du contenu décrits via des schémas comme ceux de schema.org (exemple restaurant)
  • Utiliser une bibliothèque de templates
  • Transformer côté client un contenu pour le binder sur son template
  • Gérer un état de la Card en rappelant le fournisseur du contenu

 

Une super session à revoir pour ceux qui veulent se lancer sur le sujet !

//Build 2018 – Continuous Monitoring for DevOps with Azure Application Insights & Log Analytics

La session commence par un courte introduction sur l’importance du monitoring dans le cycle DevOps, et avant tout pourquoi monitorer son application :

  1. Pour rendre visible l’état général de son application
  2. Pour trouver et résoudre les problèmes
  3. Pour l’optimiser en apprenant

azure-monitoring

Et pour monitorer son application, Azure propose des outils out-of-the-box analysant à la fois des données opérationnelles et des données applicatives. Tous outils peuvent être personnalisés pour surveiller des scénarios spécifiques.

La suite était une longue série d’exemples d’usage des outils sur le portail :

  • L’écran Health d’un nœud Kubernetes avec un drill-down vers Log Analytics pour regarder en détail les évènements liés
  • La configuration d’alertes sur des métriques avec en preview le choix de seuils dynamiques (déterminés par du ML sur les données historiques) plutôt qu’un seuil statique unique
  • Les différents choix d’action sur les alertes : email, sms, déclenchement d’un Logic App, lien vers son ITSM…
  • L’écran Application Map d’un site Web pour suivre les différentes ressources Azure liées et leurs interactions
  • L’écran Failures pour analyser les exceptions, voir le détail d’un transaction de bout en bout, ouvrir un snapshot de debug dans Visual Studio avec les données captées en production, ouvrir un ticket dans VSTS…
  • Le Live Metrics Stream
  • L’ajout de tâches de monitoring dans une release VSTS : ajout d’AppInsights, configuration d’alerte, ajout d’un tag de version dans AppInsights
  • L’écran Users pour analyser l’usage du site
  • L’enregistrement de chemin d’analyse dans un Workbook partageable
  • Et plein d’exemples de requête sur les données AppInsights (un cours Pluralsight devrait sortir sur le sujet !)

J’ajouterai le lien vers la vidéo parce que c’était vraiment riche !

//Build 2018 – Application modernization in Azure

L’objectif de la session est de montrer comment et pourquoi moderniser ses applications en les migrant dans Azure. Et pour cela on distingue 3 chemins :

  • Du IaaS avec du lift and shift de VM dans le cloud
  • Du lift and shift avec des containers PaaS cette fois
  • Ou un refactoring plus profond de son architecture applicative pour la rendre « cloud optimized »

Dans chaque cas on cherche à optimiser la valeur créée en simplifiant les déploiements ou la maintenance, en réduisant les coûts, en se rendant plus agile, etc. Et chaque cas a sa part d’avantages.

modernize-azure

 

# Lift & Shift de machines virtuelles

C’est simple et rapide, et même si on ne profite pas de toute la richesse du cloud, on peut quand même obtenir des gains notamment en simplifiant son infrastructure et sa maintenance.

# La containerisation

(je ne sais pas si c’est très français comme mot ??)

Ça reste du lift and shift, mais on ne se préoccupe plus de la gestion des serveurs. En plus de gagner en agilité sur le déploiement et son orchestration, on facilite la montée en charge, et l’isolation des services… Par contre il y a un effort supplémentaire à faire pour « packager » le container.

On présente ensuite plusieurs solutions de containers sur Azure :

  • ACI (Azure Container Instances)
  • AKS (Azure Kubernetes Services) qui peut être combiner à ACI
  • Service Fabric (peut s’utiliser OnPrem, sur des serveurs dédiés dans Azure ou désormais avec Service Fabric Mesh complètement géré par Azure)
  • Des solutions tierces comme Pivotal ou Docker

Pour démontrer tout ça, le speaker prend un site 3 tiers : WebForms + WCF + SQL Server DB. Les tiers Web et WCF sont passés dans un container Docker pour Service Fabric en utilisant le tooling intégré à VS2017 juste en quelques clics. La base de données est migrée en SQL Azure et le tout bascule dans Azure en peu de temps.

# La modernisation

Cette fois on cherche à profiter du cloud à 100%, mais ça a évidemment un impact fort sur le code existant. Le but final est d’arriver à une architecture Serverless et Event-Driven ! Et donc c’est là qu’arrive Azure Event Grid, les CloudEvents qui normalisent les échanges, Azure Functions, Logic Apps…, et CosmosDB pour le stockage distribué.

serverless-azure

Pour compléter on a aussi à notre disposition des services prêts à l’emploi comme tous les Cognitives Services personnalisables pour ajouter de la valeur à notre application.

On revient sur la démo de l’app WebForms pour y ajouter une Logic App qui capture des tweets dans une base CosmosDB avec de l’analyse de sentiments via Cognitive Services, et une ASP.NET Core Web API dans le même container que le site pour récupérer les derniers tweets analysées sur une nouvelle page du site.

La démo complète est disponible sur https://aka.ms/smarthotel360

 

//Build 2018 – Serverless in action

On commence par un rappel du concept « Serverless », qui est encore une fois présenté comme l’évolution qui suit le PaaS. Avec une approche Serverless, on oublie totalement la notion de hébergement, on ne paie plus que lorsque son code est exécuté, et donc on conçoit des applications « event-driven ». La platform Azure Serverless :

img_20180508_111438.jpg

La suite de la session sera un duel de Trip&Tricks entre les 2 speakers ! Voilà celles que j’ai retenues :

  1. La création d’une Azure Function en quelques clics à partir des templates à disposition depuis le portail Azure directement, VS ou VS Code
  2. L’utilisation d’un binding CosmosDB de sortie que l’on configure simplement via des attributs sur les paramètres de la fonction
  3. Utiliser des variables d’environnement en local avec le fichier local.settings.json
  4. Simplifier son API avec des Function Proxies pour proposer une API unifiée qui peut utiliser différentes API back-end (ou une réponse par défaut si on est en cours de développement)
  5. Partager proprement des ressources entre plusieurs exécutions (par exemple pour ne pas recréer un HttpClient à chaque fois, http://aka.ms/antipattern) juste en utilisant des variables statiques !
  6. Améliorer le temps de démarrage initial en réduisant les dépendances à charger, en utilisant un App Service Plan dédié, en déployant un ZIP (plutôt pour les fonctions en JS)
  7. Paramétrer le nombre d’exécution en parallèle sur une instance avec le fichier host.json

Une session orientée pratique, vraiment intéressante (et c’est le #5 qui a gagne le vote du public !).

//Build 2018 – Building Progressive Web Apps (PWA) for Windows devices

Dernière session de la journée.

On commence par un rappel sur ce qu’est une PWA, et l’intérêt de faire des PWA notamment parce qu’on peut continuer de construire avec les même outils et compétences que pour des Web Apps classiques.

what-is-a-pwa

oznor

Une PWA doit être cross-platform, mais pour Windows elle doit aussi être cross-devices (PC, Xbox, Hololens…). Le minimum vitale pour faire une PWA est de la publier en HTTPS, avec son manifest et un service worker.

Avec la première démo, on voit les nouveautés à venir dans la RS5 de Windows sur le manifest : un nouveau display mode (minimal UI) et les theme colors pour personnaliser la barre de fenêtre.

On enchaine sur le store. Une PWA est une app comme les autres dans le Microsoft Store. Soit on la publie soi-même, soit Microsoft peut l’indexer automatiquement via Bing (il faut tout de même respecter certaines règles comme le HTTPS, un manifest de qualité, l’offline…). A noter qu’il est possible de « marquer » son app pour qu’elle ne soit pas indexée automatiquement. Il existe un outil Sonarwhal pour valider sa PWA pour le store ou simplement avoir un rapport sur la qualité de l’app.

Microsoft a développé un second outil « PWA Builder » pour faciliter le passage de Web App à Progressive Web App : édition du manifest, choix du service worker, package en appx.

Quoi de plus pour une PWA sur Windows ?

  • Les fonctionnalités du Microsoft Store : analytics, achats in-app…
  • Pas de limite sur le storage local
  • Accès aux API Windows comme les Tiles, les notifications, les contacts, le calendrier ou le mode d’activation
  • F12 fonctionne sur les PWA comme pour les UWP en JavaScript

Un membre de l’équipe Twitter nous fait ensuite un retour d’expérience intéressant sur leur PWA publiée dans le Microsoft Store.

A venir dans la roadmap

  • Pouvoir appeler du code C# ou C++ depuis une PWA
  • Partager les cookies

 

La session était vraiment intéressante, et finalement on retrouve beaucoup de choses des apps UWP en JavaScript !

//Build 2018 – Demopalooza, Get started infusing AI into your applications today

Une session qui promet que des démos !

  1. Demo 1 : https://akas.ms/SampleSnipInsight ou comment enrichir le Snipping Tools de Windows avec de la reconnaissance d’image pour taguer l’image capturée, de l’OCR, de la recherche de produit avec Bing Product !
  2. Demo 2 : https://aka.ms/conferencebuddy, un modèle de bot qui stocke les questions dans un Azure Search et utilise le QnA Maker + l’API Bing Search
  3. Demo 3 : https://aka.ms/winexplorer, une app reconstruite en live en 8 minutes ! C’est donc un exemple d’une app de classification d’images utilisant Cognitive Service Custom Vision + Windows ML pour embarquer un modèle de Machine Learning (Onnx) directement dans son app UWP
  4. Demo 4 : http://drawingbot.azurewebsites.net, la démo (pas nouvelle) de l’IA de Microsoft Research qui sait générer des images à partir d’une description
  5. Demo 5 : une IA déployée sur un device IoT Edge via un conteneur Docker, et qui permet l’analyse d’images de radios de poumons pour tenter de détecter une maladie potentielle. Dans cette démo, on voit également le pipeline de déploiement continue qui republie un package d’application sur IoT Hub à chaque changement du modèle Onnx afin de remettre à jour les objets connectés au Hub

Promesse tenue ! Plusieurs démos qui montrent la relative simplicité d’enrichir une app avec de l’intelligence artificielle (sous réserve d’avoir un modèle entrainé à sa disposition).

//Build 2018 – PaaS and Container Innovation, What’s new with App Service

Première session de la journée.

On commence par un court retour d’expérience de Starbucks, qui se base sur Azure pour transformer son SI : lift an shift d’applications majoritairement écrites en Java, de l’Infrastructure as Code, simplification de la maintenance pour améliorer la productivité, et de l’auto-scaling.

On enchaine par les nouveautés d’App Service sur Linux, qui du coup m’intéresse moins…

Azure CLI a aussi été enrichi et simplifié de nouvelles fonctionnalités pour App Service. Pour rappel, Azure CLI permet de créer ou manager des ressources Azure en ligne de commande. Exemple : « az webapp up -n build2018test » depuis le répertoire de son app va créer le ressource group, l’app service plan, la webapp, etc., juste en analysant le code de l’app pour « deviner » quelles ressources créer.

Enfin on arrive sur la partie pour Windows, et donc l’apparition en preview des Windows Containers.

Première démo, un site legacy en WebForms est passé dans un container Docker, poussé dans un repository DockerHub, puis publié dans un Azure Web App Container. Un bon exemple de lift and shift en mode PaaS.

Seconde démo, un générateur de PDF qui utilise des composants GDI incompatibles avec App Service directement, mais qu’on peut donc publier dans un Windows Container.

 

Entre la grosse partie Linux et les démos qui plantent, pas sûr d’avoir choisi la meilleure session pour débuter… 😦