//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 – Building event-driven Serverless Apps with Azure Functions and Azure Cosmos DB

Building event-driven Serverless Apps with Azure Functions and Azure Cosmos DB
Rafat Sarosh

In this session, Rafat Sarosh explained how to make a completely serverless backend with only Azure Functions and Azure Cosmos DB (with its ChangeFeed feature).

Despite being a very trendy subject, I found this session to be a little boring.
Not enough demos, not really explaining why use Azure Cosmos DB, and the speaker was not dynamic enough.

Azure Functions is part of the new FaaS offering of Azure that help make truly serverless development.
20180508_173113225_iOS.jpg

Azure Functions has 2 runtimes available. Version 1.x which is already GA (General Availability) and 2.x which is currently in preview.

Rafat demoed the tooling in the func CLI, Visual Studio and the Azure Portal to create new functions from templates. Those have been around for quite some time now.

Despite Azure Functions being serverless, you still have the choice to host them on your own App Service in Azure. This has the advantage to control a few scaling/performance options like AlwaysOn. By default, the Hosting Plan (no App Service) will put your functions to sleep if not used for 5 min.

20180508_175144928_iOS.jpg

Azure Functions has a trigger for Azure Cosmos DB that allows it to monitor for changes with the ChangeFeed functionality of Azure Cosmos DB and call a function when new content is available.
That allows to create automated workflows.

20180508_182239971_iOS.jpg

At the end of the session, 2 companies (Johnson Controls and Asos) explained their usage of both Azure Functions and Azure Cosmos DB.

20180508_182643760_iOS.jpg

//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 – .NET Overview and Roadmap

.NET Overview and Roadmap
Scott Hunter, Scott Hanselman

Announcements:

  • Visual Studio 2017 15.7
  • Visual Studio for Mac 7.5
  • .NET Core 2.1 RC (https://aka.ms/DotNetCore21)
  • .NET Core 3 (Preview later this year)
    • WPF/WinForms can now uses .NET Core instead of .NET FX
    • .NET Core App Bundler (make a single exe containing all dlls)
  • .NET Conf 2018 (September 12-14)
  • Azure SignalR Services (as a Service)
  • New debugging option for WebAPI (http cli)
  • Functional tests with WebApplicationFactory
  • Navigate to source of a NuGet package or decompile sources from a DLL
  • Better support for Editorconfig
  • Blazor (with C# dlls into a browser)

For this session full in announcements and demos, the Scotts started with the new .NET Core 2.1 which is available in Release Candidate today.

20180507_215622057_iOS.jpg

This new version features better performance, both at compile and run time.

20180507_215443781_iOS.jpg

20180507_215526797_iOS.jpg

Next was the Azure SignalR as a Service. This is a new service to allow provision a SignalR server that benefits from the scaling and resilient features of Azure.
This was demoed with a Trivia app that the session attendees could play live while the speakers were managing the app from their localhost. All messages going through the Azure SignalR service.

20180507_215816886_iOS.jpg

We were shown a currently in development new option for debugging WebAPIs.
It’s a command line with commands to list all endpoints, query the API, and debug it.

20180507_220848228_iOS.jpg

Next was the announcement of .NET Core 3.020180507_221753313_iOS.jpg

.NET Core 3.0 can now be chosen as the runtime for Win32 apps (like WinForms) and WPF.

20180507_222021049_iOS.jpg

Then we were shown the new versions of Visual Studio and Visual Studio for Mac

20180507_223246026_iOS.jpg

20180507_223343639_iOS.jpg

One feature that is currently experimental is the ability to navigate to sources of a NuGet Package, or to decompile an existing DLL (like Jetbrains already does)

20180507_224208579_iOS.jpg

To end this session, the Scotts showed us the new features for Web Development, like Blazor (and mono.js/web assembly which can run C# DLL right into the browser)20180507_224208579_iOS.jpg

20180507_230122619_iOS.jpg

//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:

//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… 😦

 

//Build 2018 – Keynote Day 1

La //Build 2018 est lancée.

Et pour commencer on a rapidement eu le droit de voir Satya Nadella sur scène pour nous parler encore et toujours d’Azure qu’il présente comme l’ordinateur mondial 🙂 ! Un ordinateur qui offre toujours plus de services, et qui se veut respectueux de la vie privée. Au vu de la keynote et du catalogue des sessions, le maitre mot est Intelligence Artificielle, que ce soit dans Azure, sur un PC ou embarqué sur un objet connecté !!

Parmi les démos et présentations :

  • Des nouveaux devices supportant de l’IA embarquée avec IoT Edge : une caméra ou un drone
  • L’annonce de l’app Your Phone pour Windows 10 pour interagir avec son téléphone depuis son PC (partage de fichier, notification, SMS…)
  • L’association de l’assistance d’Amazon Alexa avec Cortana
  • Le projet Kinect for Azure
  • Le projet Brainwave pour de l’IA en temps réel
  • 2 nouvelles app de réalité mixte sur Hololens pour les utilisateurs sur le terrain : 1 pour faire de l’assistance à distance et 1 autre pour de la modélisation d’espace en usine par exemple
  • Et la salle de réunion du futur boostée avec de l’IA : reconnaissance vocale, transcription automatique avec son champ lexical personnalisé, traduction en temps réel, des suggestions de Cortana pour compléter son compte-rendu dans Word…

 

Après Satya, c’est au tour de Scott Guthrie de mener la suite de la Keynote. Au menu : Dev Tools, DevOps, IoT, Container, Serverless, Data, et AI. Des démos intéressantes :

  • Du pair programming impressionnant avec Visual Studio Live Share
  • Du debug sur son container dédié avec Azure Dev Spaces
  • De l’écriture sur plusieurs nœuds CosmosDB avec le multi-master
  • Une appli IoT Edge complète développée en 5 minutes !

 

Finalement, pas de grosse annonce faire lever la foule des développeurs réunis dans la salle. On aura vu plusieurs choses intéressantes dans la continuité des investissements de Microsoft, et on attend d’en voir plus de détails lors des sessions à venir !

A tout de suite.