Comme je vous l’ai présenté il y a quelques jours, le GDG Nantes organise son traditionnel DevFest. Cet événement qui connait une reconnaissance dans tout l’hexagone vient d’officiellement ouvrir ses portes !
Attendu à la Cité des Congrès de Nantes du 9 et 10 novembre, le DevFest Nantes 2016 va permettre de mettre en avant de nombreuses technologies, et des sujets d’actualité qui gravitent autour de l’écosystème de Google, mais pas que…
Pour cette 5e édition, l’accent sera mis sur les nouvelles technologies et l’innovation, où le cloud, le Web, le mobile et l’IoT seront au cœur des conférences. Labellisé « NantesTech », et soutenu par Google, Mozilla, GitHub, et plus d’une vingtaine de partenaires locaux, les conférences vont s’enchaîner dans les salles de la Cité des Congrès.
Un programme très alléchant
Cet article a pour vocation de faire suivre ces deux jours avec mes différentes notes prises lors des conférences que je vais suivre, mais également les codelabs.
Mercredi 9 novembre
Keynote d’ouverture / Opening keynote
EZRA (Vincent CHTAÏBI), directeur artistique d’Organic Orchestra, et reconnu du beatbox international, est monté sur la scène pour la keynote d’ouverture pour présenter une petite prouesse artistique musicale à l’aide d’un gant « connecté » doté de multiples interrupteurs pour contrôler des pistes, piloter le son, etc. Il a montré comment il est possible d’utiliser ce gant pour contrôler autre chose que la musique, comme les dispositifs de la domotique, ou encore la vidéo ! Le code source sera ouvert au grand public !
EZRA présente son « organic orchestra » avec un gant de cuir électronique capable de faire des effets dans la musique ! #DevFest16 pic.twitter.com/AbImFxSOSU
— BlogNT ?⌚️️??? (@BlogNT) 9 novembre 2016
GraphQL vs Falcor
- REST / GraphQL / Falcor
- REST : GET sur une URL (données reçues en JSON)
- GraphQL : « on passe les clés en JSON, ça retourne les données en JSON »
- un langage pour écrire des requêtes
- un interpréteur côté serveur
- Falcor
- Netflix
- Un dialecte JSON pour écrire des requêtes
- une lib client/serveur
- GraphQL est un nouveau langage contrairement à JSON, typage statique, pas de cache en natif, bonne adoption
- Bilan
- REST & RPC : impact du serveur
- Flacor & GraphQL : sélection des champs, join naturel
- Écosystème
- RPC : simple et familier
- REST : tri à faire
- GraphQL : en ébullition
- Falcor : l’avenir nous le dira
Découverte de #GraphQL et #Falcor #DevFest16 #dev pic.twitter.com/f0w80tiAWk
— BlogNT ?⌚️️??? (@BlogNT) 9 novembre 2016
Cloud patterns
- Les services « managés » sont en vogue : on va se concentrer sur le développement de notre application
- Aujourd’hui, il faudrait que toute application soit dans un container
- IaaS : OS imposé (choisi dans un catalogue)
- CaaS : Container imposé (docker / rocket)
- PaaS : Code runtime imposé (un peu moins de liberté)
- FaaS : Request dispatcher imposé. Amazon et Google proposent ça : exécution d’une fonction (petite portion de code) sur un serveur
- Go est un langage promis à un bel avenir, et correspond à la philosophie du cloud
- L’idéal du CaaS est de déployer un container lors de la réception d’une requête, puis de supprimer le container à la fin de celle-ci
- Pour l’autocalling :
- IaaS : complexe à mettre en œuvre
- CaaS / PaaS / FaaS : plus simple à réaliser
Cloud patterns ou comment créer une application moderne ‘Cloud ready’ ! #devfestNantes #DevFest16 #dev pic.twitter.com/GHwRQKbIwX
— BlogNT ?⌚️️??? (@BlogNT) 9 novembre 2016
Le déploiement d’un container #docker avec Kubernetes sur Container Engine de #Google est impressionnant ! #devfestNantes#DevFest16pic.twitter.com/YQj6YiPtto
— BlogNT ?⌚️️??? (@BlogNT) 9 novembre 2016
Le Web de demaintenant
- De multiples API sont très utiles dans le web d’aujourd’hui et de demain
- Payment Request : si vous voulez améliorer le processus d’achat de votre application Web
- Web Speech : reconnaissance vocale
- Web Bluetooth : une API toujours très utile pour contrôler vos dispositifs Bluetooth (uniquement accessible en HTTPS)
- Physical Web : une notification est envoyée à tous les dispositifs contenant l’URL de l’application cible
- WebNFC : vous pourrez facilement lire / écrire simplement par une URL
- WebUSB : vous allez être en mesure d’accéder au périphérique nativement sans passer par un driver
Le Web demaintenant évoqué par François Beaufort et Jean-François Garreau 🙂 #devfestNantes #DevFest16 pic.twitter.com/pZq63aozOB
— BlogNT ?⌚️️??? (@BlogNT) 9 novembre 2016
L’API Web Bluetooth est toujours aussi impressionnante mais elle a du mal à éclore ! Bien dommage … #devfestNantes #DevFest16 #api pic.twitter.com/8WLn0upD2c
— BlogNT ?⌚️️??? (@BlogNT) 9 novembre 2016
Depuis #Chrome on peut contrôler de multiples objets Bluetooth comme un capteur de fréquence cardiaque ! #devfestNantes #DevFest16 pic.twitter.com/G50Cs1PMsd
— BlogNT ?⌚️️??? (@BlogNT) 9 novembre 2016
Le Web Bluetooth et le Physical Web ! Par une simple notification vous allez contrôler tout dispositif Bluetooth ici #Mbot #devfestNantes pic.twitter.com/E46XU7x04d
— BlogNT ?⌚️️??? (@BlogNT) 9 novembre 2016
Containers’ Jungle. Docker, Rocket, RunC, LXD … WTF ?
- Standard pour la « containeurisation » : Open Container Initiative
- Attention ! accès Docker = accès root
- Docker
- RunC : runtime
- « process » container(s) : « architecture micro-service »
- Docker dans docker : « side cars » : mode privilégié
- Introspection « future docker »
- LXD : lancer un daemon docker dans son container (uniquement disponible dans Ubuntu)
Parlons des containers ! #docker #rocket et d’autres ! #devfestNantes #DevFest16 pic.twitter.com/6FEksbPIro
— BlogNT ?⌚️️??? (@BlogNT) 9 novembre 2016
Voici la slide qui résume comment faire pour mettre du docker dans un container #devfestNantes #DevFest16 pic.twitter.com/Q8sbDAOsUX
— BlogNT ?⌚️️??? (@BlogNT) 9 novembre 2016
Coder ses applications iOS et Android en Go
- Go Mobile : développer des applications mobiles Android et iOS en Go
- gomobile build : Go + OpenGL (2 binaires)
- parfait pour les jeux => OpenGL
- mutualiser du code
- limitations : collections (mais JSON, FlatBuffers, …)
- gomobile bind : une partie de l’application codée en Go
- accès à une fonction définie en Go, et accessible en Java, Objective-C ou Swift
- gomobile build : Go + OpenGL (2 binaires)
Comment coder une application Android et iOS en #Go #devfestNantes #DevFest16 pic.twitter.com/5RKCfB67zG
— BlogNT ?⌚️️??? (@BlogNT) 9 novembre 2016
Un PaaS pour votre équipe en 20 min
- Dokku
- une seule machine
- nginx => envoi la requête au container
- pleins de plugins
- Gère Buildpacks et Dockerfile
- Possibilité de lier les applications entre elles
Comment faire un PaaS pour votre équipe en 20 mn #devfestNantes #DevFest16 pic.twitter.com/6GbLARnmHE
— BlogNT ?⌚️️??? (@BlogNT) 9 novembre 2016
Fin de la première journée, rendez-vous demain !
Jeudi 10 novembre
Angular2 et les standards du web
- Angular2 est avant tout une plate-forme composée multiples modules
- Plusieurs fonctionnalités se basent sur des standards
- Les pipes d’Angular2 permet d’effectuer des transformations directement dans le template
- Angular2 Translate permet de traduire des chaînes de caractères
- Décorateurs permettent d’ajouter des métadonnées à des objets
- Chrome a 2 stacks : une principale pour toutes les tâches synchrones, et l’autre pour toutes les tâches asynchrones
- La « stack asynchrone » est uniquement exécutée à la fin de la « stack principale »
Un sujet très intéressant 🙂 #Angular2 et les standards du Web par @EmmanuelDemey#dev#devfestNantes#DevFest16pic.twitter.com/Qi0lDmAR5i
— BlogNT ?⌚️️??? (@BlogNT) 10 novembre 2016
Firebase et Google Cloud Functions : vos applis sans serveurs / « serverless »
- Pyramide des *aaS chez Google
- IaaS : Compute Engine
- PaaS : App Engine
- BaaS : Firebase : suite d’outils pour les développeurs
- FaaS : Cloud Functions : idéale pour les microservices
- SaaS : G Suite
- Primitives Firebase : voici les fonctionnalités de base
- base de données temps réel
- authentification
- stockage
- hébergement
- notifications
- Firebase Authentication
- thème personnalisable
- administrable
- plusieurs comptes supportés : Facebook, Google, Email, etc.
- Firebase Storage
- enregistrer dans Google Cloud Storage de façon authentifiée / sécurisée
- friendly-pix : un « Instagram Like » pour montrer les services de Firebase
Attaquons nous à #Firebase et Google Cloud Functions ! Le développement d’apps entièrement « Severless » par @nivco #devfestNantes #DevFest16 pic.twitter.com/P9dPWp2k8W
— BlogNT ?⌚️️??? (@BlogNT) 10 novembre 2016
Voici l’architecture « serverless » selon @Nivco et selon les services de #Google ! #devfestNantes #DevFest16 pic.twitter.com/fN55kra2Ce
— BlogNT ?⌚️️??? (@BlogNT) 10 novembre 2016
Exclu ? ! Voici le #instagram de #google ! Si si @Nivco l’a présenté en poussant #Firebase et sa puissance ! #devfestNantes #DevFest16 pic.twitter.com/5JswROV7q7
— BlogNT ?⌚️️??? (@BlogNT) 10 novembre 2016
Jenkins & continuous delivery pipeline : ce n’est pas toujours un long fleuve tranquille
- Les pipelines Jenkins sont l’avenir des déploiements
- Possibilité de paralléliser les tâches
- Jenkins sait mettre les jobs en attente
- Gestion de la concurrence des stages Pipeline
- La Concurrency Rule saute les builds
- Blue Ocean UI => nouvelle interface additionnelle très centrée « pipeline »
- développée en REACT
- release en stable en mars 2017
- Pipeliene : très orienté Git
Les pipelines #Jenkins par @jpbriend de @cloudbees #devfestNantes #DevFest16 pic.twitter.com/w3bXIXZLp7
— BlogNT ?⌚️️??? (@BlogNT) 10 novembre 2016
La nouvelle interface de #Jenkins nommée Blue Ocean est très orientée pipeline (se rapproche de Git) #DevFestNantes#DevFest16pic.twitter.com/4BdrW02XlU
— BlogNT ?⌚️️??? (@BlogNT) 10 novembre 2016
Mixité dans le monde des webcomponents
- Web Components
- 4 spécifications : apprendre au navigateur les nouvelles balises
- Custom Element plus important : création d’un nouvel élément HTML
- Shadow DOM : encapsuler la DOM dans le composant, sans que l’utilisation ne la voit
- HTML Imports :
<link re="import" ... >
: ‘notion de package » - Template
- la force est de créer des composants
- 4 spécifications : apprendre au navigateur les nouvelles balises
Après cette conférence les Web components n’auront plus de secret pour nous ! #devfestNantes #DevFest16 #webcomponents #dev pic.twitter.com/jrsQL4kQTb
— BlogNT ?⌚️️??? (@BlogNT) 10 novembre 2016
La grande force des Web components est de créer des composants ! #devfestNantes #DevFest16 #webcomponents #dev pic.twitter.com/fM2wIu6KaX
— BlogNT ?⌚️️??? (@BlogNT) 10 novembre 2016
Ingest node : (ré)indexer et enrichir des documents dans Elasticsearch
- Elastic Stack
- Elasticsearch : indexation et la recherche des données
- Kibana : restitution et l’analyse de données en temps réel
- X-Pack : partie propriétaire (modules sécurité, alertes, monitoring, reporting, graph)
- Elastic Cloud
- Elasticsearch 5.0.0 sortie en octobre
- Ingest Node
- enrichir la donnée avant de l’envoyer dans Elasticsearch
- utilisable dans :
- API Bulk : pour envoyer massivement des fichiers
- API Reindex
- le projet BANO couplé à Elasticsearch permet de rechercher précisément des adresses en fonction de critères de recherche
- Bano ingest plugin
Découverte de Ingest node de Elasticsearch 5 #elasticsearch#devfestNantes#DevFest16#devpic.twitter.com/wmBk93Jd0Q
— BlogNT ?⌚️️??? (@BlogNT) 10 novembre 2016
Construire une station météo en NodeJS avec un Raspberry PI et un Arduino
- Firmata pour Arduino : protocole pour des communications avec des logiciels sur l’ordinateur hôte
- Johnny-five : lib Node.js s’interfaçant avec Firmata
- Pour l’affichage
- Influxdb
- Grafana
- ils sont déployés sous forme de conteneurs Docker
Construire une station météo en NodeJS avec un Raspberry PI et un Arduino #devfestNantes #DevFest16 #NodeJS #raspberrypi #arduino pic.twitter.com/Mq0IFKQ0gC
— BlogNT ?⌚️️??? (@BlogNT) 10 novembre 2016
C’est simple une station météo en fait 🙂 #DIY#RaspberryPi#Arduino#NodeJS#devfestNantespic.twitter.com/LFfsl39MyL
— BlogNT ?⌚️️??? (@BlogNT) 10 novembre 2016