Une fois n’est pas coutume, nous allons vous parler de Go, le langage qui monte, qui monte… Le 10 octobre dernier se tenait la troisième édition de la Dot Go Europe. SFEIR était présent à cet évènement majeur au théâtre de Paris et voici le récit de cette dense journée.
Tout commence dans la file d’attente. Gage de qualité, les #DockerCaptain sont dans la place, on ne devrait pas s’ennuyer.
Après la récupération des badges, un petit tour au bar à goodies et un petit déjeuner en bonne et due forme, nous voilà parés pour les premières conférences de la journée.
Les sujets de la conférence étaient des plus variés : architecture, trans-compilation, tooling, best practices, retours d’expérience, le langage attire de plus en plus de monde et visiblement les idées ne manquent pas.
Hello, I’m “Le Gopher”
Focus langage
Le premier à prendre la parole, n’est autre que le grand évangéliste du Go, j’ai nommé, Dave Cheney. Depuis 2010, Dave entretient une mine d’information très utile pour tous les développeurs avec son blog éponyme. Il ouvre ici le bal pour nous parler des fonctions as first-class citizen. Comprenez, ne vous contentez pas de passer de simples données à vos méthodes, mais allez plus loin en utilisant des fonctions en tant que paramètres comme vous le permet le langage. Ce sujet n’est pas nouveau, mais pour les développeurs venant de Java par exemple, il est bon de rappeler que cet outil fait partie des features à disposition. L’exemple de la calculatrice reposant directement sur les fonctions de la bibliothèque Math de Go, est un exemple de l’intérêt des patterns construit avec des fonctions. Vous les avez surement déjà rencontrées au détour d’une configuration d’objet dans votre bibliothèque favorite.
Le second talk orienté langage a été présenté sous forme de retour d’expérience. Le réseau Ethereum a fait l’objet d’une attaque par DDoS au mois de septembre dernier. Ce ne sont pas moins de 70% des noeuds de la crypto-monnaie qui ont été malmenés. Péter Szilágyi nous a présenté le fruit de ses recherches en matière d’immutabilité en Go, principe qu’il a eu l’occasion de creuser pour lever les faiblesses du client Go d’Ethereum.
Focus bibliothèques
La compilation du Go impose des contraintes fortes sur la disponibilité de l’ensemble des sources de votre application. Cette contrainte est un grand frein au développement de plug-ins pour les applications Go. Brad Rydzewski de chez Drone.io nous a présenté les solutions qu’il est possible de mettre en place pour créer un bon système de plug-in, qui respecte les contraintes suivantes :
- performance
- isolation par rapport au coeur de l’application
- support de l’internationalisation
Les solutions apportées vont de la plus simple à la plus complexe :
- Inclure les sources du plug-in dans le code de l’application (isolation faible)
- Plug-in via RPC comme l’implémente Hashicorp dans ses produits
- Pour aller plus loin, plug-in via stream RPC depuis un container docker comme implémenté dans Drone.io
Les solutions avec un faible couplage au niveau des sources des plug-ins passant toutes par de l’appel RPC avec un serveur de plug-in et un registry dans l’application hôte et des plug-ins qui s’y enregistrent au lancement de l’application.
Let’s Encrypt fait sa révolution dans le monde des certificats SSL/TLS depuis quelques mois. Avec tous les efforts faits autour des services Web dans son API, il serait dommage que Go soit en reste concernant le renouvellement de certificat automatique.
C’est le créateur du serveur web static Caddy, Matthew HOLT, qui nous a présenté les bibliothèques disponibles actuellement pour l’automatisation de renouvellement de certificats à la Certbot. En voici la liste avec chacun leurs petites spécificités :
- rsc.io/letsencrypt
- golang.org/x/crypto/acme/autocert
- github.com/dkumor/acmewrapper
- github.com/xenolf/lego/acme
- bientôt une intégration dans Go 1.8 ?
- Déjà disponible dans Caddy ;-)
Tools in action
Nous avons également eu le droit à une démonstration live de la toute-puissance du Cloud Google et de Kubernetes couplé à leurs API pour permettre à des applications de se déployer elles-mêmes. La présentation à débuté avec la citation de Luiz Andre Barroso : “We must treat the datacenter world itself as one massive global-scale computer”, comprenez le Datacenter as a Computer (DaaC). Avec une petite bibliothèque de son cru, Kelsey Hightower, developer advocate pour la Google Cloud Platform, nous a montré comment une application pouvait se construire, s’uploader dans le cloud, se lancer dans un container et se déployer à travers plusieurs régions du Cloud Google. Bienvenue dans le 21e siècle, Skynet n’est plus très loin.
Je ne sais pas si vous avez déjà eu à faire aux outils de debug de Go, mais ils sont assez redoutables, à l’instar de ce que l’on peut trouver dans un JDK. Mais comme toujours, il faut savoir lire les petites lignes pour tomber sur les pépites et apprendre à les apprivoiser. C’est ce que nous a montré Rhys Hiltner avec le traceur d’exécution de programme Go. Vous conviendrez que la documentation de cet outil est assez succincte, en revanche il permet d’analyser très finement ce qui se passe lors de l’exécution de vos programmes. Rhys vous promet des heures d’amusement à la découverte de cet outil. Son conseil est de vous entraîner et de maîtriser les outils avant la tempête, à l’instar des médecins, qui répètent les mêmes gestes encore et encore afin d’avoir le référentiel d’une application opérationnelle pour mieux identifier les dysfonctionnements le moment venu.
Cross compilation
Go ne cesse de se populariser, de plus en plus de curieux de tous horizons viennent à Go avec leurs expériences et leurs savoir-faire. Certains, désireux de combiner plusieurs passions, se sont mis en tête de créer des ponts entre JavaScript et Go, ou le développement mobile (iOS ou Android) et Go. Les résultats sont assez surprenants et encourageants. Lors de sa démonstration, Dmitri Shuralyov est allé jusqu’à montrer le résultat d’un petit jeu WebGL cross compilé en Go et disponible dans tout browser WebGL compatible. Une belle performance.
Les formats quicky n’ont pas été en reste, les retours d’expériences non plus. On retiendra la méthode Noop-Noop-Noop-Interface de Katrina Owen pour refactorer (chut on ne l’a pas dit) votre code et l’excellentissime John Cinnamond et son humour universel.
La journée a été clôturée par un des pères fondateurs, Robert Griesemer, dont le message est qu’à l’heure de l’agilité, il était important de prototyper ses designs et que Go ne fait pas exception à la règle.
En résumé, cette troisième édition de la DotGo était très riche à l’instar de l’écosystème Go. Des talks de qualité qui répondent aux problématiques du quotidien des développeurs ou tout du moins qui leur permettent d’approfondir de nouveaux sujets qui pourraient les concerner dans un avenir très proche.
Vous trouverez l’ensemble des talks filmés sur le site des conférences Dot. N’hésitez pas, les vidéos sont accompagnées des présentations de chaque speaker. Et pour les photos, c’est sur le flickr Dot que ça se passe.
The post Débrief dotGo 2016 appeared first on SFEIR Mag.