Debrief’ du Dev Fest organisé à Nantes les 19 & 20 Octobre

Cette année A5sys était présente en force au DevFest !

 

Le DevFest c’est 2 jours de conférences techniques sur le développement et les dernières technos, outils, etc.

Cette année 1600 participants étaient venus écouter les quelques 100 speakers.

 

Les grands sujets de cette édition :

 

1/ La sécurité avec la GPDR qui arrive en mai

2/ La blockchain en pleine expansion

3/ Le machine learning pour faire des applis « intelligentes »

4/ Le design et les performances de nos applis web

5/ Docker qui continue de faire ses preuves pour le devops mais aussi pour de nouveaux usages

 

Toutes les conférences étaient filmées, les vidéos devraient bientôt être dispos sur la chaîne Youtube du GDG.

Les photos sont quant à elles en ligne sur Flickr (saurez-vous nous retrouver ?).

Voici un résumé conf par conf de ce que nous avons vu:

 

Conf 1 : DDD & Event Sourcing à la rescousse pour implémenter la GDPR?

Intérêt : ★★★★★

Le GDPR ou RGPD en français pour Règlement Général sur la Protection des Données, c’est le nouveau dispositif pour la protection des données en Europe.

L’entrée en vigueur est prévue pour le 25 mai 2018, avec 2 ans pour mettre en conformité les applis existantes.

Ce que cela change pour nous :

  • Consentement : Il faudra informer précisément les utilisateurs des données personnelles dont on se sert, et comment on s’en sert. L’utilisateur devra consentir à cette utilisation, et les aplications ne devront pas collecter plus de données que nécessaire.
  • Vie de la donnée : Il faudra tracer et maîtriser le cycle de vie de la donnée utilisateur (création, modification, etc.).
  • Accès à la donnée : Il faudra logguer tous les accès aux données utilisateurs, savoir qui quand et pourquoi. Il faut également pouvoir restituer à un utilisateur qui en fait la demande toutes ses données sous la forme d’une archive.
  • Anonymisation/pseudonymisation : L’utilisateur peut à tout moment demander à ce que ses données soient supprimées. Cela implique la mise en place de processus d’anonymisation dès le départ. Par ailleurs la pseudonymisation (action réversible) sera nécessaire si on souhaite par exemple mettre à disposition un jeu de données de test.

Pour les entreprises, création d’un nouveau poste : le DPO (Data Privacy Officer).

Concernant le DDD (Domain Driver Design) il consiste à mettre le domaine métier au centre de l’architecture. L’avantage étant de mieux cerner la donnée et ainsi mieux la protéger, la monitorer, etc.

Plusieurs concepts ont été évoqués :

  • Event Storming : Identifier le vocabulaire avec les experts métier, les enchaînements, et donc les impacts GDPR.
  • CQRS (Command Query Responsibility Segregation) : Séparation des services/modèles pour lire les données VS les services/modèle pour écrire les données.
  • Event Sourcing : Persistance immutable de l’historique des événements, permet de tracer les actions successives sur les données.

En conclusion, conférence très intéressante qui résume bien les points clés du GDPR et les solutions DDD associées, qui peuvent être mises en place de manière incrémentale.

 

Conf 2 : Past, Present, and Future of Web Assembly

Intérêt : ★★★★☆

Aujourd’hui seul JS tourne nativement dans tous les navigateurs, mais il n’est pas toujours au top côté performance. Partant de ce constat, le WebAssembly (wasm pour les intimes) a été créé.

Il s’agit d’un format binaire (compilé) pouvant être exécuté de manière très rapide par tous les navigateurs du marché.

Ainsi, un site web pourra charger en JS un fichier « .wasm » depuis le serveur, instancier le code et l’exécuter. C’est un peu comme les extensions PHP qui sont écrites en C, compilées et ensuite appelées depuis PHP.

A partir de quel(s) langage(s) pourrai-je générer du wasm ? Pour l’instant depuis le C uniquement. À terme il est prévu de supporter Rust, Swift, Go, mais pas… JavaScript. Les langages scriptés étant difficilement compilables, le choix se comprend.

A noter qu’il y a néanmoins le projet AssemblyScript qui a été créé pour compiler du TypeScript en wasm. A surveiller.

En somme, la technologie est très prometteuse pour les traitements coûteux tels que la manipulation d’images, les codecs vidéo, les DRMs, la réalité virtuelle, le machine learning, etc. Même si on ne développera par forcément du Web Assembly, on en utilisera très certainement bientôt !

 

Conf 2 bis : Développeur et protection de la vie privée

Intérêt : ★★★★★

Dans cette conférence un développeur de chez Le Phare présente la notion de vie privée au travers de l’arrivée de la GDPR (General Data Protection Regulation).

La vie privée c’est l’intimité (tout ce que vous ne partagez pas volontairement avec le monde). Aujourd’hui cette intimité n’est pas respectée sur internet (exploitations de vos préférences, mail, IP et autres, souvent à des fins publicitaires).

Seulement 10% des internautes estiment contrôler leurs données (et on comprend pourquoi quand on voit tous les outils de tracking (#google) qui existent sur le web).

En tant que dev, vous êtes donc la dernière défense pour faire respecter l’intimité des utilisateurs. Qu’est-ce que ça veut dire, eh bien ça consiste déjà à :

  • Choisir les outils que l’on utilise (PIWIK, alternative à google analytics qui rend anonyme la donnée collectée. Mapbox alternative opensource à google map)
  • Faire une collecte raisonnée des données

La GDPR dans tout ça, elle intervient pour encadrer la collecte et le traitement des données. Elle apporte notamment la notion importante de consentement.

Il va donc être impératif d’expliquer certains éléments en ce qui concerne les données

  • Lesquelles sont collectées
  • Pourquoi ces données sont collectées
  • Qui aura accès à ces données
  • Combien de temps seront stockées ces données

L’utilisateur va donc être amené à donner son consentement sur chacune des données / traitement effectués (l’internet de demain c’est des pop-up d’accord d’exploitation des données).

L’idée derrière c’est que l’application n’utilise que les données qui sont légitimes à son utilisation.

Pour terminer quelques points sur la GDPR

  • Doit être mise en pratique en mai 2018
  • Doit conserver les opérations effectuées sur les données (notamment les copies)
  • Doit pouvoir exporter les données client (droit à la portabilité)
  • Devoir de prévenir les utilisateurs d’une faille de sécurité sous 72H
  • Désignation de DPO (délégué à la protection des données personnelles) chargé de faire respecter la GDPR au sein de l’entreprise
  • La GDPR est rétroactive

Conférence intéressante qui sensibilise sur des problématiques qui arrivent plus vite qu’on ne le pense.

 

Conf 3 : An Android Retrospective

Intérêt : ★★★★☆

Durant cette conférence, nous avons eu le droit à un historique du projet Android, de ses débuts à aujourd’hui avec 2 ingénieurs Google.

Etant donné que le DevFest est organisé par le GDG (Google Developer Group), la conférence a été très bien accueillie.

Les anecdotes sur les coulisses du développement d’Android apportent un autre regard. Les enjeux techniques, les choix du moment sont bien illustrés. Les erreurs aussi, et ça fait du bien car on se rend compte que ce sont aussi des développeur(se)s qui sont derrière ce projet.

En bref, conférence amusante et intéressante.

 

Conf 3 bis : On the path to WebAR

Intérêt : ★★★★☆

AR.js est un framework Javascript de réalité augmentée fonctionnant dans un browser et donc utilisable depuis n’importe quel smartphone pas trop vieux (les créateurs parlent de 60fps sur un smartphone de deux ans), indépendamment de l’OS.

Il s’implémente rapidement et simplement (voir CodePen dans la sections ressources) dans une simple page web.

AR.js fonctionne avec un système de marqueurs contrairement à des technos comme ARkit d’Apple ou ARCore de Google mais il s’affranchit de l’OS pour être exploitable sur n’importe quelle plateforme mobile.

Quelques ressources :

Slides / Démo

 

 

Conf 3 ter : Les API gateway avec Kong

Intérêt : ★★★★☆

Cette conférence était plutôt une présentation du fonctionnement de Kong, qui est une API Gateway qui trouve son intérêt dans une architecture micro-services. En effet, il s’agit d’un outil se situant entre internet et l’ensemble des services à mettre à disposition des utilisateurs. Il permet d’absorber un nombre très important de requêtes, et a comme objectif de ne pas réinventer la roue, mettant à disposition des fonctionnalités transverses telles que le log, la sécurité (JWT, Auth, …), le versionning, …

Grâce à son fonctionnement en plugins, fournis sur étagère ou à développer (en Lua https://www.lua.org/), il offre une flexibilité permettant de s’adapter à tous les projets. Il peut être monté en clusters, permettant ainsi une montée en charge, et une gestion du risque de plantage.

L’avantage principal, outre le fait de pouvoir s’abstraire de redévelopper des fonctionnalités présentes sur toutes les API, c’est de permettre d’uniformiser tous les services d’une entreprise, qu’ils soient en REST, SOAP, …, en ne fournissant qu’un seul format (REST par exemple), et d’offrir une unique URL pour les appeler tous. Ainsi, on peut envisager plus sereinement une refonte complète de services obsolètes, les remplaçant petit à petit, en toute transparence pour les utilisateurs.

Il existe des alternatives à Kong, comme KrakenD (http://www.krakend.io/) ou apiman (http://www.apiman.io/)

Pour plus d’informations : https://getkong.org/

En résumé, intéressant pour la découverte et les possibilités qu’il propose. Après, il faudrait le comparer avec d’autres solutions existantes. Il ne semble pas, pour le moment, utilisable chez A5sys, mais peut-être qu’un jour un client viendra avec une flopée d’API à maintenir / uniformiser / refaire…

 

Conf 4 : Créer une application Vue avec Apollo GraphQL

Intérêt : ★★★★★

GraphQL a été créé par Facebook dans le but de remplacer REST.

Ses avantages sont :

  • Conçu par des ingénieurs back et front pour faciliter/optimiser le workflow
  • Récupération de données sous forme hiérarchique
  • Elimination des requêtes « waterfall » (à la suite) et donc amélioration des perfs
  • Amélioration de la DX (Developer eXperience) avec l’introspection
  • Typage des champs
  • Génération automatique de la documentation

Concernant Vue, le speaker n’en a quasiment pas parlé par manque de temps.

En résumé, super intéressant pour l’aspect GraphQL qui semble venir combler les lacunes de REST. A tester d’urgence !

 

Conf 4 bis : Linuxkit : le linux façon ikea

Intérêt : ★★★☆☆

Pourquoi « linux façon ikea » ? Simplement car c’est l’analogie d’un meuble ikea qui est utilisée pour expliquer Linuxkit.

Présentation de Linuxkit, une solution proposée par Docker permettant de construire des OS Linux minimalistes à base de containers Docker, pour y déployer des containers Docker. A noter que la version stable devrait sortir dans les semaines qui viennent.

L’objectif est, par exemple, de créer des VM tels que Docker Toolbox (la VM permettant de faire tourner des containers Docker sous Windows ou Mac). On peut également y trouver un intérêt lorsqu’on utilise un Raspberry Pi 3, car on peut utiliser Linuxkit pour créer son OS sur mesure.

Il faudrait tester Linuxkit pour vraiment pouvoir mesurer l’intérêt qu’il peut apporter pour une utilisation chez A5sys. Cependant, sur le papier, cela semble une solution alternative intéressante aux VM telles que nous les connaissons aujourd’hui, car il est possible d’en scripter la création, et de les jeter et recréer à la demande, et ce rapidement.

Slides

 

 

Conf 5 : Ethdroid, le nouveau super pouvoir du mobile !

Intérêt : ★★☆☆☆

Présentation par son créateur de la bibliothèque Ethdroid qui permet d’interagir avec la blockchain Ethereum.

Conférence pouvant être intéressante pour les afficionados des différentes blockchains, et notamment d’Ethereum qui est une version plus évoluée de Bitcoin avec possibilité d’exécuter du code et donc des applications décentralisée (leur devise : code is law).

L’outil semble intéressant, mais A5sys n’en a pas vraiment d’usage. Par ailleurs, c’est dommage que cette conférence n’ait pas eu lieu après celle sur la présentation plus généraliste de la blockchain. Ça aurait permis de mieux suivre.

Conf 6 : Prettier – ou comment s’assurer un code bien formaté

Intérêt : ★☆☆☆☆

Présentation assez mal préparée de l’outil Prettier qui vient formatter votre code.

Par rapport à un outil comme ESLint, il est plutôt limité car il n’est pas configurable mais « opinionated » (= les règles sont choisies pour vous en fonction des tendances).

Depuis l’ajout de l’option « –fix » à ESLint, l’intérêt de passer sur un autre outil moins puissant semble faible.

 

Conf 7 : La blockchain du crétacé à l’an 3000

Intérêt : ★★★★☆

Présentation générale de la blockchain, son histoire et son évolution.

On devrait plutôt parler des blockchains au pluriel, puisque Bitcoin a vite été rejoint (voire surpassé) par d’autres.

Le principe d’une blockchain est de répartir les données sur un réseau p2p, de cette manière tout le monde possède et voit les données de tout le monde, ce qui garantit la transparence et l’intégrité. Les données sont scindées en bloc, et chaque bloc contient une référence au bloc précédent, ce qui permet le chaînage = blockchain.

Pour valider un bloc et l’ajouter à la blockchain, il y a deux consensus :

  • PoW (Proof of Work) = Ce sont les mineurs, ils doivent résoudre des problèmes mathématiques complexes afin de créer les blocs.
  • PoS (Proof of Stake) = Ce sont les transactions (cryptomonnaie), où le solde de l’utilisateur est vérifié par rapport au solde total en circulation.

Le coût en énergie de la PoW est plus élevé que la PoS, mais est plus sûr.

L’intérêt des blockchains est de se passer des « tiers de confiance », à savoir les banques, les assurances, les nations, etc. C’est le système lui-même qui assure l’intégritél’immutabilité et l’incorruptibilité des transactions.

Comme exemples de projets utilisant la blockchain, on peut citer Teambrella (assurance participative), FollowMyVote (élection), Civic (identité numérique), Storj.io (stockage de fichiers décentralisé), Steemit (réseau social).

Ces écosystèmes parallèles suscitent un grand engouement chez les techos, mais pas que. Le marché global représentait 12 milliards en 2016, et est passé à 170 milliards en 2017.

Les banques commencent à s’y intéresser sérieusement et travaillent à créer leurs propres blockchains.

En résumé, conférence intéressante, même si les applications ne sont pas encore bien définies pour une entreprise comme A5sys, la technologie est très prometteuse.

Slides

Conf 8 : Faites chauffer les neurones de votre smartphone avec du deep learning on-device

Intérêt : ★★★☆☆

Présentation donnée par un trio de développeurs (dont une développeuse) qui ont créé une application Android embarquant un réseau de neurones pour reconnaître les aliments.

Ils ont utilisé la bibliothèque TensorFlow qui permet de développer et d’entraîner des modèles de réseaux.

La difficulté est de trouver le bon compromis entre la taille du modèle, sa vitesse d’exécution et sa précision. Plus un modèle est petit, plus il est rapide à entraîner et à exécuter mais sa fiabilité est moindre.

L’application réalisée est encore en développement, mais le résultat est déjà probant et le trio a plein d’idées pour l’améliorer, notamment le fait de mettre en commun les connaissances de toutes les applications installées pour faire progresser globalement le réseau de neurones. Cela peut se faire sans atteinte à la vie privée, puisqu’il n’y a pas besoin de remonter les photos des utilisateurs, mais seulement les poids du réseau de chaque application.

En bref, conférence plutôt intéressante, ça fait longtemps que les réseaux de neurones existent, mais ça fait plaisir de les voir arriver sur mobile.

 

Conf 9 : Angular et performances

Intérêt : ★★★★★

Dans cette conférence, les 2 speakers nous ont parlé de 3 leviers d’amélioration des perfs Angular : build, load, run

Build :

  • Utiliser le typage afin de profiter des optimisations de transpilation
  • Préférer l’AOT vs JIT, même si au niveau taille générée cela se vaut, la vitesse d’exécution est environ 2x plus rapide en AOT (à condition de typer)
  • Avec angular-cli, mettre l’option « –build-optimizer » et ne pas oublier « enableProdMode() » dans l’appli

Load :

  • Utiliser Angular Universal pour booster le chargement initial
  • Faire du lazy loading par module au niveau du routing

Run :

  • C’est la détection du changement qui peut être longue (requêtes Ajax, événements utilisateur, timeouts)
  • Par défaut, Angular met à jour tout l’arbre des composants du haut vers le bas lors d’un changement
  • Possibilité de changer la stratégie de propagation, mais en faisant attention car on désactive alors la propagation pour certains sous-arbres
  • Astuce pour les observables, dans le subscribe appeler markForCheck()
  • Possibilité avec zone.js d’appeler du code en dehors du giron Angular et ensuite de déclencher un changement

En conclusion, conférence très intéressante et directement applicable chez A5sys.

Conf 10 : Fluent Design : designer pour le futur

Intérêt : ★★☆☆☆

Le fluent design c’est la nouvelle identité visuelle de Microsoft permettant de s’adapter à tous les supports, y compris les Hololens.

Adaptation à différentes tailles d’écran, et à différents input (doigt, stylet, manette, clavier).

Les 5 grands concepts sont : Light, Depth, Motion, Material et Scale.

Pour les développeurs Microsoft, les SDK va leur permettre de faire des trucs jolis. Pour les autres, les concepts ne sont pas vraiment nouveaux donc moyennement intéressants.

 

Conf 10 bis : NodeJS Future

Intérêt : ★★★★★

Au-delà de NodeJS, cette conférence faisait un tour d’horizon de l’écosystème Javascript, avec ES6, ES7 et la future version ES8, mais également avec une présentation de TypeScript 2, permettant, à partir d’une syntaxe unique, de compiler son code pour n’importe quelle version ES (ECMASCRIPT), ou encore Chakracore, le Javascript engine de Microsoft Edge.

Mêlant théorie et cas pratiques, c’était une conférence riche et de qualité dont les slides seront bientôt en ligne. On serait bien resté plus longtemps que les 50mn !

 

Conf 11 : Web Components: It’s all rainbows and unicorns! Is it?

Intérêt : ★★★☆☆

Conférence donnée par une développeuse qui fait un bilan de l’état des Web Components.

Le support navigateur de ceux-ci est globalement ok grâce aux polyfills du projet polymer 2.

Les Web Components c’est :

  • Custom elements (ex : <my-great-spinner></my-great-spinner>)
  • Shadow DOM (isolated DOM + scoped CSS)
  • Custom ES6 avec callbacks liés au cycle de vie de l’élément
  • HTML imports et ES include pour charger ses composants
  • Communication entre les composants via events

Le binding du modèle vers le template est à gérer manuellement.

En résumé, état des lieux intéressant mais ça semble assez artisanal à mettre en place. Un framework comme Angular s’appuie sur les Web Components mais apporte tous les outils nécessaires en plus (binding, imports, etc.)

Slides 

 

Conf 11 bis : Docker for developers and ops: what’s new and what’s next

Intérêt : ★★★★☆

Présentation des nouveautés de Docker annoncées à la DockerCon EU 2017 ayant eu lieu quelques jours avant le DevFest.

Parmi les annonces, intégration de Kubernetes en parallèle de Swarm pour permettre de tester l’orchestration des containers directement sur le poste de développement, un partenariat avec IBM. Une présentation de Docker Enterprise Edition a également été faite.

Une présentation globale de Docker et de son écosystème par un speaker de qualité (une tête !)

Slides

 

Conf 12 : Faire du Machine Learning sans Data Scientist

Intérêt : ★★★★☆

Le machine learning implique habituellement de définir un modèle, une chaîne de déploiement et de test de celui-ci. Ça c’est le rôle des Data Scientists.

Selon les cas d’utilisation, on peut très bien réutiliser des modèles existants et gagner beaucoup de temps.

Des APIs existent pour plusieurs types de problèmes. Par exemple chez Google :

  • Reconnaissance d’image : Google Cloud Vision API
  • Reconnaissance vocale : Google Cloud Speech API
  • Reconnaissance de texte : Google Natural Language API

En combinant ces APIs on peut déjà faire des analyses intéressantes, comme par exemple mesurer les perceptions / sentiments des utilisateurs via leurs tweets.

En conclusion, conférence intéressante qui montre que l’on peut déjà profiter du machine learning sans avoir à développer ses propres modèles.

Conf 13 : Vos webapps ont-elles du style ?

Intérêt : ★★★★☆

Présentation par un designer de la façon de gérer le style de nos applications.

Plusieurs concepts évoqués :

  • Identité visuelle : permet de reconnaître une marque tout de suite (couleur, form factor distinctif)
  • Référentiel graphique (= guidelines = charte graphique) : donne des détails graphiques, des consignes, permet d’échanger entre équipes UI/UX pour la faisabilité
  • Pondération CSS : ordre de définition des styles
    1. Style global : layout et styling des <element> html
    2. Composants : définition du style des composants réutilisables (on écrit le HTML, puis le CSS, puis le JS)
    3. Application : les styles spécifiques
  • Intégration continue avec git : utiliser un outil qui génère automatique une image illustrant le CSS afin d’identifier lors des MR s’il y a eu régression visuelle ou non

En résumé, conférence intéressante surtout la partie intégration continue qui est à creuser. Les autres concepts aussi bien sûr, mais ce n’est pas nouveau et ça concerne surtout les designers.

Partager l'article sur

Autres publications

Lancement a5 en 4

Lancement « A5en4 »

La semaine de 4 jours au travail ça vous parle et ça vous fait rêver ? C’est une pratique qui se développe en ce moment grâce à des expérimentations effectuées dans quelques entreprises pionnières.

Lire l'article