//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 !).