//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 – 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 – Microsoft AI overview for developers

Microsoft AI overview for developers
Dr. Harry Shum, Brian Trager

20180507_200538708_iOS.jpg

This session was meant as a tour of all the AI services available in Azure today.

Announcements :

  • QnAMaker General Availability
  • Bot Services 3.0 (100+ new features in Bot Framework – new Bot Framework Emulator)
  • Luis / QnAMaker command line tools
  • az-cli includes Bot Services
  • Machine Learning for .NET (ML.NET)

To start, Harry reminded that Cognitive Services was launched 3 years ago at //Build 2015 and has already achieved 1+ million developers using it.

After that, we were shown videos and live demos that showcased the new services in Cognitive Services.

One of those was live translation with the Microsoft Translator app on smartphone. Brian Trager, which is deaf, talked in english with Harry Shum who responded in chinese.
Microsoft Translator uses a trained AI with Custom Speech, Custom Voice and Custom Translation for a near real-time and totally accurate translation between the 2 speakers (better and quicker than the live transcript used by Microsoft in all sessions at //Build).

20180507_202724009_iOS.jpg

Continuing the tour, we were shown several linked demos using Conversational AI with the Bot Services and lots of other Cognitive Services.

First was a chatbot on an e-commerce website.
The bot used Text Analytics to adapt to the user’s language on the fly.
It used Luis.ai to recognize intents like « I want to buy a new watch » and react accordingly (refreshing the displayed items on the website).
The bot then purposed to upload an image of a watch to analyze it with Custom Vision to find a similar model in the website.
QnAMaker (Generally Available as of today) was also used to answer questions. The new QnAMaker allows to find correct answers for implicit context based on the previous questions (through the use of metadata).
For example, « What is the return policy? » – « You can get a full refund up to 7 days after the purchase » – « What about after that? » – « You can get store credits for the next 30 days ».
This was not possible before.
To end with this demo, the bot was also capable of booking a visit to the nearest retail store by taking into account store hours, the user’s calendar, the road traffic, etc. And setting the visit into the user’s calendar.
The bot finally asked for a selfie of the user.

The second demo was another bot this time in a kiosk inside a mall.
The same user interacts with it and the bot recognizes the person using the previously taken selfie (using Face Recognition API)
The bot was using Text-To-Speech and Speech-To-Text to communicate with the user and was able to know that the user had a meeting inside one of the store in the mall, and displayed a personalized map to let the user know which way is the store.

The third and last demo was a website where the store clerk can view all previously aggregated info about the customer using Microsoft Dynamics.

Moving on the new features of the Bot Framework, Harry showcased the ability to load chat transcript directly into the emulator to avoid retyping everything to test a dialog.

The new Bot Framework Emulator is also capable of managing Luis/QnAMaker (through the use of the new command line tools) for a quicker develop-configure-test cycle.

Then we moved onto Machine Learning and the ONNX format (open source) created by Microsoft but now supported by 15 big companies.

A new toolkit to write Machine Learning in C# used by Microsoft is made available to all : ML.NET

20180507_204004362_iOS.jpg

To end this session, we were shown the integration of all the tooling into Visual Studio.
Like creating a whole project by just right clicking the Custom Vision resource in the Server Explorer tab of Visual Studio.

Useful links: