Microsoft Expériences 2016 : mon retour

Quel plaisir de se retrouver à nouveaux aux techdays Microsoft Expériences, je n'y étais pas retourné depuis 2011, date de notre départ à Montpellier.
Objectif de la journée sentir les tendances Microsoft, se mettre à niveau sur ce qu'Azure propose, prendre des idées, se faire plaisir.
Une fois de plus c'est avec mon papa Dominique Verrière que je me rends à cet événement, ça fait plus de 10 ans qu'on y va ensemble, il a suivi les sessions Sql server. Nicolas de chez Eureka Technology m'accompagné également, en tant product owner il s'est surtout concentré sur les sessions agiles, session qui m'aurait également intéressées mais on ne peut pas tout faire.

La plénière entre bullshit et choses intéressantes

Microsoft reste une entreprise et doit donc faire plaisir à ses clients/partenaire, on a donc eu le droit de voir un projet déployé par le groupe Accor hotel. On a vraiment pas compris ce que cela faisait la, rien de technique, cette présentation avait plus sa place la veille pour les décideurs.

Ensuite la partie technique a pu commencer avec une présentation de Microsoft Bot Framework. Comme son nom l'indique il s'agit d'un framework de développement de bot, bot dans le sens programme qui va répondre aux demandes d'un humain. On peut utiliser ce framework en nodeJs et en c#.
ça ouvre des perspectives dans l'assistance de l'utilisateur mais évidemment ça demande de bien remplir les scénarios. Il y a de nombreux connecteurs pouvant interfacer votre bot à un service existant avec entre autre Skype/Slack.

C'était ensuite le tour d'une petite présentation des évolutions de la dernière mise à jour windows 10 sur la sécurité. Un mode par exemple permet d'alerter un salarié quand il copie du contenue d'un mail d'entreprise dans sa boite mail perso, ça aurait pu être utile à une certaine Hicallary C.

Ensuite nous avons eu le droit à un petit tour sur Xamarin.

Entre alors Scott Guttrie, oui oui le monsieur responsable de la plateforme ASP.net depuis des années et qui s'occupe maintenant d'Azure. Nous avons eu le droit à quelques annonces comme l'ouverture d'un data center Azure dans le sud de la France, pour le reste c'était un bon résumé sur le plateforme Azure qui semble maintenant bien mature, cela me conforte dans le choix de mes conférences du jour.

Vient ensuite Scott Hanselman un des grands speaker américain de Microsoft.
Quelques démos sur le déploiement continue avec Azure.

Ce qui a rassuré sur l'avenir de Microsoft est l'ouverture en grand des vannes sur l'open source, on ne devrait plus trop avoir le problème de techno abandonnée comme se fut le cas pour Silverglight et bientôt windows phone voir WPF dont l'avenir semble incertains étant donné le peu d'évolution de ce dernier.

Suivit par un speach de Dassault System, on sentait qu'il y avait des choses bien velues derrières, mais la encore c'était de la mise en avant de partenaire.

Ensuite une démo sur des apis cognitive, avec les reconnaissances faciale.

Enfin la plénière s'est terminée par une conférence en accélérée sur Docker, cela faisait redondance avec la speach Azure et c'était bien dommage.

Pour voir ou revoir la plénière c'est ici :

Déploiement continue d'application mobile

Je devais au départ voir une conférence sur dotnet core et Azure mais la conférence était pleine. Je me rabats en vitesse sur la conférence de mes potes de promo d'Epitech sur le déploiement continue.

Une conférence très intéressante sur la gestion du déploiement d'application Cordova/xamarin.

Adrien Sifferman, Philippe Santenac, Nicolas Humann nous replonge dans notre quotidien de développeur mobile à savoir un environnement hétéroclite surtout sur Android. Faire de la qualité dans ces conditions est très compliqué si on a pas de test automatisé. Il est également très important d'avoir des retours, des remontés de crash ou bug, c'est ce qu'introduit la première démo.

Adrien nous montre comment déployer une application à une population d'utilisateur désignés pour tester l'application via Hockey App. Tout semble très simple et bien industrialisé. L'application est volontairement bugguée pour nous montrer un crash et le log d'erreur qui remonte automatiquement dans Visual Studio Team Services.

Philippe introduit ensuite la difficulté de tester son application sur un nombre important de périphérique différent, on est tous d'accord que c'est chiant et non exaustif. Il présente alors Xamarin Test Cloud, cette plateforme permet de test à distance sur des mobile physique son application, car on le sait tous les tests sur émulateur ne sont pas de vrais tests. Xamarin Test cloud permet donc de tester son application sur plus de 2000 types de terminaux différent, c'est de loin le plus gros environnement de test, loin devant Amazon et Google.

L'application est déployée sur le téléphone distant et les tests unitaires que vous avez écrit sont lancés, des captures d'écrans sont prises aux endroits que vous avez choisit, en combinant test unitaire fonctionnel, test unitaire UI et capture d'écran du rendu graphique, vous avez une très bonne idée de si votre application est compatible avec le terminal ou non. Le gain de temps est monstrueux.
Ce gain de temps se paye par contre,exemple pour avoir accès à 3 tests de périphérique en simultané 5h de test par jour cela coûte 380$/mois. Comparé au salaire d'une personne dédiée à ces tests qui sont très chiante à réaliser ça reste rentable si on souhaite faire de la qualité.

La partie qui m'a le plus intéressée/impressionnée a été la génération de test unitaire d'interface graphique. En exécutant l'application cordova dans un émulateur, Adrien clique sur les différents boutons de son application, ce qui déclenche la génération de code C# en live, on peut ainsi facilement et rapidement générer une procédure de test que l'on exécutera avant chaque déploiement ou push de branche. Je pense que je vais très rapidement tester ça et faire un retour sur le blog.

Pour aller plus loin un article ici

un autre retour bien poussé sur cette conf http://blog.soat.fr/2016/10/microsoft-experiences16-tester-monitorer-et-deployer-son-application-mobile/

dotnet core cross plateforme

Ma conférence préférée sur cette journée, je suis Scott depuis des années, les articles sur son blog sont toujours de très grande qualité.

Dans cette conférence Scott a expliqué le framework dotnet core et son intégration dans l'environnement dotnet.
Chose intéressante on peut maintenant cibler la version du framework nécessaire à son application et la déployer avec, très pratique quand on connait les bugs que l'on peut rencontrer quand on met à jour le framework .net sur un environnement de prod.
Un article de Scott sur le sujet

Nous avons ensuite pu voir une web application asp.net core sur Linux ubuntu.
Scott a expliqué en quoi IIS et les autres serveur web type Nginx avait encore un rôle alors que aspnet core peut tourner en stand alone avec son propre serveur web embarqué :
Les gros serveurs web sont toujours la pour gérer :
- les autorisations - les proxy - l'url rewritting - autres joyeusetés nécessaires

J'ai beaucoup aimé cette approche, au travail nous sommes sur un archi ASP.Net + IIS et cela nous donne des perspectives et obtenir une meilleur qualité de service.

La conférence s'est terminée sur les différentes librairies dotnet et leur niveau de compatibilité avec les plateformes :

La conférence de ScottHanselman visible ici

Quelles architectures pour application cloud, de la VM au conteneur : ça PaaS ou ça CaaS

Encore une conférence très intéressante permettant d'avoir une bonne vision d'ensemble sur Azure et quelles architectures déployer.

la conférence a commencé d'abord sur une architecture cloud classique, c'est vraiment l’avènement du Micro Service :
L'idée est donc de voir comment on peut héberger ses différents services.
Plusieurs possibilités :

1) Les App services
Les services sont regroupés au sein d' application plan, on peut assigner de la ressources serveur à chacun des application plan.

Les services sont regroupés au sein d' application plan, on peut assigner de la ressources serveur à chacun des application plan

2) Service Fabric
Les services sont regroupés au sein d' application plan, on peut assigner de la ressources serveur à chacun des application plan

3)Déploiement de conteneur docker
Ici on crée des conteneurs pour chacun des services, on les regroupes avec docker compose et on déploie l'ensemble sur un serveur Azure capable d'héberger du docker.
On peut toujours affecter de la ressources pour chacun des conteneurs comme dans l'exemple 2 et 3.

L'approche conteneur me semble la plus sympathique pour les développeurs étant donné qu'on est vraiment capable de se retrouver dans les mêmes conditions que l'environnement de prod en développement.

Pour les 3 scénarios on a eu le droit à de chouette démos avec intégration du code dans github et déploiement automatique sur des environnements de test et de prod.

On a également pu voir comment on pouvait gérer la montée en charge en affectant de la ressources depuis azure.

Azure semble vraiment mature, la question reste encore le coût face à des architectures plus classique

La conférence visible ici :

VR

J'avais choisi cette conférence pour le fun et parce que je m'intéresse à la VR en perso avec mes copains de zooomez. mais je dois dire que j'ai été un peu déçu, peut être que j'attendais trop de cette conférence.
Les speakers ont fait un tour d'horizon de ce qui faisait en VR et RA. On a eu le droit à une petite présentation de l'hololens de Microsoft. Les différentes problématique de la VR et vers quoi on va tendre dans les prochaines années ont été évoqués.
Mais voila pas de démo wahou, juste des choses connus quand on regarde un peu la VR sans être expert.

Les nouveautés C# 7

Sur cette conférence aucun risque d'être déçu et pour cause le speaker est un habitué des techdays : Mitsuru Furuta.

Dans une ambiance très loin du bullshit, ici on est entre dev, pas de slide commercial, juste un visual studio et un terminal :).

Mitsu nous a présenté et expliqué les nouveautés qui apparaitrons dans la prochaine version du langage à savoir la version 7.

Au menu
la possibilité de déclarer un variable out directement dans l'argument de l'appelant :

//avant en C# 6 et inférieur
int x, y;  
p.GetCoordinates(out x, out y);

//en c# 7
p.GetCoordinates(out int x, out int y);  

on gagne une ligne et c'est plus clair => validé

Pattern matching

    if (o is null) return;     // constant pattern "null"
//on test le type de o, si o est un int alors on déclare la variable i de type int
    if (!(o is int i)) return; // type pattern "int i"
// i utilisable dans le scope où elle a été créé
    WriteLine(new string('*', i));

on simplifie l'écriture => validé

Les Tuples

En c# 5 nous avions eu le droit aux Tuples, c'était déjà assez pratique et ça permettait d'éviter de déclarer un type pour qu'une méthode renvoie plusieurs valeurs. Seul point génant lorsque l'on voulait utiliser les propriétés du tuple il fallait les appelé comme cela monTuple.Item1, monTuple.Item2 ce qui au final obligé à aller voir la code qui avait créé le tuple pour savoir ce qu'il y avait à l'intérieur.

Maintenant c'est finit, et on retrouve ce que l'on est capable de faire en javascript ES6 :

//La méthode GetAddress retourne un tuple avec des membres nommés
(string street, string city, string zipCode) GetAddress()
{
 return (street:"place du petit scell", city:"Montpellier", zipCode:"34000");
}

...

var address= this.GetAddress();  
Writline($"Rue : {address.street} Ville : {address.city} Code postal : {address.zipCode}" );  
...

On gagne beaucoup de code, c'est plus clair que les tuples, on ne crée pas de type inutile => validé 2 fois.

la deconstruction

Dans chaque class il va être possiblé d'ajouté une ou plusieurs surcharge de deconstruction. Pas la peine de rajouter une interface à votre class Deconstruct devient un nom de méthode réservé.

class Point  
{
    public int X { get; }
    public int Y { get; }

    public Point(int x, int y) { X = x; Y = y; }
    public void Deconstruct(out int x, out int y) { x = X; y = Y; }
}

(var myX, var myY) = GetPoint(); la méthode Deconstruct est appelé et les deux variables locales myX et myY prène les valeurs tu points X et Y

Je ne sais pas si pour le coup je m'en servirais beaucoup, en javascript je peux le faire et je ne l'utilise que dans de très rare cas.

Nous avons également eu le droit aux fonctions locales : la possibilité de déclarer une fonction dans une méthode, une des intérêts est par exemple de lors de récursion on doit souvent écrire une fonction qui initialise la récursion et une autre qui l’exécute.
Un petit exemple ici avec une suite de fibonacci

Amélioration sur les littéraux il est maintenant possible d'écrire les grands nombres avec des séparateurs :

var d = 123_456;  
var x = 0xAB_CD_EF;  

il est également possible d'écrire ses nombres en binaire

var b = 0b1010_1011_1100_1101_1110_1111;  

Conclusion

Ces Microsoft Expérience sont un excellent cru, Microsoft part vraiment la bonne direction. Dommage par contre que le client lourd (WPF/Winform) commence à vraiment sentir le sapin (je n'ai pas vu de conf dessus), il faut donc évoluer et suivre l'industrie.
Chaque conférence mériterait un article mais le temps me manque :)

A l'année prochaine les Microsoft Expérience c'était top