CérénIT

Le blog tech de Nicolas Steinmetz (Time Series, IoT, Web, Ops, Data)

Voxxeddays Microservices Paris

microservice voxxeddays cloud distributed systems ddd bounded context

J’ai participé à la première édition de Voxxeddays Microservices Paris qui a eu lieu du 29 au 31 oct, sous la forme de deux jours de conférences et un jour de workshop. Je ne suis allé qu’aux deux jours de conférences.

Globalement :

  • Je crois que c’est la première conférence tech où je vois autant de femmes témoigner - après recomptage, il n’y en avait que 8 sur 45 speakers, mais 2 des 3 keynoters étaient des femmes. 1/6 c’est encore peu mais c’est mieux que d’habitude. L’assistance m’a aussi paru plus féminine que d’habitude. Le mardi, la majorité des conférences auxquelles j’ai assisté étaient assurées par des femmes.
  • Deux journées denses avec des formats de conférences variées (15/25/45 minutes) et des sujets variés également (Techno, Retours d’exéprience, Architecture, Problématiques, etc).

Sur les keynotes qui devaient articuler le passé, le présent et le futur des microservices :

Distant past of microservices - Ken Finnigén (Red Hat)

  • Tout n’est que système distribué au final - les microservices n’en sont qu’une variante, après SOA, après le client/serveur, etc.
  • Il y a un cycle des systèmes distribués : gestion toute imbriquée (“embedded”), passage par des librairies, puis des middlewares et enfin par de la gestion d’environnement (et de ses variables). Il est donc probable que l’on revienne vers du tout en un prochainement. Même s’il y a des améliorations incrémentables d’un cycle à l’autre, on reste sur la même boucle.
  • “Old is the new new” - il faudrait cesser de réinventer la roue pour la simple raison que nous pouvons le faire. il faudrait plutôt chercher à résoudre des problèmes qui n’ont pas encore été résolu. Cela me fait penser aux nouveaux langages ou frameworks qui se créent sans tenir (trop) compte des langages précédents : ils se retrouvent au final à devoir traiter les mêmes problèmes que leurs prédécesseurs et sans forcément trouver une réponse plus satisfaisante.
  • Réflexion autour de la notion de “quescient state” comme prochain but à atteindre.

The endless now : distributed systems and teams - Bridget Kromhout

  • C’est dommage que l’oratrice ait forcément voulu raccrocher des technologies et des outils à son propos car cela a nuit à son message. Je n’ai pas vu la raison ou l’intérêt de mentionner ces outils.
  • Le propos était d’appliquer les principes du CAP sur les équipes et les systèmes :
    • “Consistency” : les containers ont apporté cette reproductabilité des déploiements
    • “Avilability” : les outils d’orchestration répondent à ce besoin et à cette gestion de la disponibilité de nos applications
    • “Fault/Partition tolerance” : il faut travailler sur les effets du bus factor, la loi de Conway et la communication entre les équipes pour éviter la dépendance à une personne et développer la résilience de l’équipe et du système.

Preparing for a future microsdervices journey - Susanne Kaiser

Ma keynote préférée - l’oratrice reparcourt tout ce qui fait un micro-service et les bonnes pratiques associées :

  • Pour un simple/petit micro-service, il faut bien avoir en tête tout l’écosystème que l’on emmène avec soi (solutions et infrastructure cloud, CI/CD, etc)
  • Parcours des bonnes pratiques et des “cloud native citizen principles”
  • Elle prone le focus sur notre coeur d’activité et d’externaliser le reste en ayant recours à des services managés. Toutefois, elle fait une très belle remarque en rappelant qu’il ne faut pas négliger la charge cognitive liée à ces services managés. Ils résolvent des problèmes et font gagner du temps mais ne sont pas neutres pour autant (ex: les primitives de Kubernetes et d’un service mesh comme Istio)

Pour les conférences, celles que j’ai préféré :

Hexagonal at scale with DDD and microservices ! - Cyrille Martare (Arolla)

  • L’orateur rappelle que les microservices requiert une approche DDD puis les principes de DDD en eux même. Il rajoute que les architectures 3 tiers, par couche, par technologie ou encore que le découpage par entités ne vont pas créer de bons microservices et ne sont pas dans une approche DDD. Il faut donc définir avec le métier les fameux domaines et leurs frontières (“bounded context”). L’orateur a alors parcouru les différents heuristiques permettant de les définir.
  • Si nous avons été habitués à avoir une approche DRY (Don’t reapeat yourself"), dans une approche DDD et Microservices, cela perd son sens. Il vaut mieux accepter de la duplication de données afin d’avoir du code moins couplé et donc avoir une meilleure indépendance des microservices entre eux.

Microservices Lessons Learned - Susanne Kaiser

Dans la continuité de sa Keynote, Suzanne fait un bilan de ce qu’elle a pu faire et de comment il aurait fallu le faire. Je vous invite à voir son talk et récupérer les slides.

Coté Outils…

Quelques outils qui m’ont semblé intéressants :

  • Jenkins X : l’idée est de déployer sur un cluster Kubernetes un noeud maitre Jenkins et un Nexus (ou autre produit de stockage d’artefacts) et ensuite d’instancier les agents Jenkins à la volée pour vos besoins de CI/CD.
  • Teeid ou l’ancien site : solution permettant de définir une ou plusieurs bases virtuelles au dessus d’une base existante. Cela peut être pratique dans le cadre de la sortie d’un monolithe vers des microservices. L’idée est de permettre au micro-service d’avoir la nouvelle vue tout en conservant l’ancien système.
  • Micronaut se veut un framework java minimaliste pour être adapté aux microservices mais sans affecter la productivité des développeurs. Il est développé par l’équipe qui a réalisé Grails. Il se veut plus léger/performant que Microprofile qui est en gros la version microservice du framework JEE. Micronaut serait plus proche de Vertx.
  • Strimzi : Il s’agit d’un projet Red Hat pour fournir un Cluster Kafka à déployer sur Kubernetes ou Openshift
  • Debezium : Plateforme de Change Data Capture (CDC) - Elle est basée sur Kafka et Kafka Connect. Elle permet de récupérer les changements de vos bases MySQL/Postgres/MongoDB sous forme d’événements et de les communiquer à qui de droit en mode streaming.
  • gRPC : si vous n’avez pas besoin d’une API REST, que vous manipulez plutôt des RPC que des ressources (REST), que vous n’êtes pas dans un contexte CRUD, alors gRPC peut être fait pour vous.
  • Dependency Check et Dependency Track sont deux projets de l’OWASP permettant d’analyser vos dépendances et de surveiller les vulnérabilités de votre base de code. Ils s’intègrent notamment avec Jenkins.

Web, Ops & Data - Juillet 2018

grafana kubernetes service-mesh ansible brigade helm draft sql devops architecture microservice flux tick influxdb docker chronograf fluxlang

Architecture

  • Goodbye Microservices: From 100s of problem children to 1 superstar : L’article fait pas mal de “bruit” en ce moment mais je ne suis pas sur qu’ils arrivent à la bonne conclusion au final ; Partir de microservices et multiples dépots gits pour revenir à un monolithe/mono dépot git, j’ai l’impression que la réponse au travers des outils n’adresse pas le problème de fond à savoir la gouvernance de l’ensemble. En effet, si les versions différaient tant que cela, l’approche centralisé a peut être mis un terme en forçant tout le monde à se rencentrer sur une version donnée mais s’il n’y a pas de règles, le résultat sera le même prochainement mais ils auront moins de liberté.
  • Miniservices as a Realistic Alternative to Microservices : du coup, pour réduire les frictions, certains proposent de faire des micro-services plus gros avec le risque d’arriver à plein de moyens monolites…
  • Je mets donc pour rappel cet article que j’ai déjà mentionné : Enough with the microservices. Il rappelle que c’est surtout la modularité et une architecture propre du code qui donne de la flexibilité. Et puis tout le monde n’a ni le contexte, ni la maturité pour se lancer dans les micro-services.

Automatisation

  • Ansible 2.6: Your Time Has Come! : une version de consolidation avec des améliorations coté cloud et surtout sur l’utilisation de la mémoire lordque l’on utilise les “Dynamic Includes”.

Container et Orchestration

  • Blog: Kubernetes 1.11: In-Cluster Load Balancing and CoreDNS Plugin Graduate to General Availability : Kubernetes continue son travail de consolidation et de stabilisation.
  • Service Mesh: Promise or Peril? : si les service mesh peuvent paraitre attrayant, leur intégration n’est pas forcément évidente et il faut aussi prévoir cette couche intermédiaire dans le développement de votre application. Leur utilisation n’est donc pas toujours recommmandée/souhaitable - l’article propose de faire le point sur le sujet.
  • Container Native Development with Ralph Squillace : cet épisode de podcast petmet d’avoir une présentation d’Helm (package manager), Bridage (gestion de workflow kubernetes) et Draft (aide à la conteneurisation d’une app). D’autres outils sont mentionnés en fin d’épisode pour agrémenter son quotidien (extension vscode, etc).
  • Extending Support Cycle for Docker Community Edition : A l’occasion de la sortie de Docker CE 18.06, quelques ajustements : les versions stables sortiront tous les 6 mois maintenant (et plus tous les 3 mois) et avec une période de maintenance de 7 mois, le canal edge (monthly release) est arrêté au profit d’un canal nightly, docker for Windows/Mac gardent une release mensuelle (pour le canal edge), plus de packaging par distribution pour mieux coller à l’actualité de la distribution.

Dataviz

DevOps

  • Une décennie DevOps, quels enseignements tirer ? : synthèse globale et assez factuelle sur 10 ans de DevOps qui a le mérite de signaler les points où ce n’est pas encore ça. Courage, la transformation/l’adoption est en cours malgré tout.

(No)SQL

Timeseries

Web, Ops & Data - Septembre 2017

docker elasticsearch bash kafka stream grafana postgres mysql architecture cli aws vpc multi-cloud serverless documentation ksql licence microservice redis cassandra elassandra hsts immutable

Architecture

CLI

  • Use .bashrc.d directory instead of bloated .bashrc : Une bonne astuce pour gérer tout ce que l’on veut mettre dans .bashrc sans que cela devienne une pagaille monstre : mettre tout dans un dossier et “sourcer” l’ensemble des fichiers s’y trouvant. Du coup, ça peut se versionner plus facilement/atomiquement ;-)

Cloud

Dashboard

  • Graphana 4.5 Released : des améliorations concernant surtout Elasticseach, Prometheus, MySQL, la capacité de rendre des valeurs cliquables pour investiguer une donnée, ainsi qu’un inspecteur de requêtes.

Docker

  • Preview: Linux Containers on Windows : annoncés à la DockerCon en Mai/Juin dernier, cela va arriver avec la version 17.09 de Docker : le support des conteneurs Linux depuis un hôte Windows. Jusqu’à présent, un hôte Windows ne pouvait faire tourner que des conteneurs Windows. A priori, on peut maintenant faire les 2 simultanément.
  • Docker Official Images are now Multi-platform : enfin ! Plus besoin de construire des images spécifiques pour ARM vs 64 bits, les images officielles de Docker savent le gérer nativement et de façon transparente. Avoir le même Dockerfile que l’on soit sur un serveur 64 bits ou un raspberry, cela va faciliter les chaines de développement et déploiement.
  • DockerHub Official Images Go Multi-platform! : un retour plus complet sur la gestion du passage au multi-platform des images Docker.

Documentation

Elastiscearch

  • A Full Stack in One Command : Elastic, pour appréhender les capacités de la stack Elastic, propose de mettre à dispositon des examples permettant de tester cette stack en 1 seule commande (et via l’utilisation de Docker Compose). Un premier cas est décrit, d’autres devraient suivre…
  • Elastic Stack 5.6.0 Released : Cette version de la stack Elastic prépare la migration vers Elasticsearch 6.0 et apporte quelques nouveautés, dont notamment un client REST Java de haut niveau pour Elasticsearch.

Kafka

  • Kafka 0.11.0 == ♥ : petit tour des améliorations de la version 0.11 de Kafka apportant les headers dans les messages, le support du “exactly once” via des notions d’idempotence et de transactions.
  • Exactly-once Support in Apache Kafka : le co-fondateur de Confluent revient sur la signification de “Exactly-once support” dans Kafka et sur son implémentation.
  • Exactly-once Semantics are Possible: Here’s How Kafka Does it : la même expliquée par la CTO de Confluent.
  • Introducing KSQL: Open Source Streaming SQL for Apache Kafka : Kafka se dote d’une interface SQL permettant de faire des requêtes de façon continue (continuous queries) et de requêter des topics kafka sous forme de stream et/ou de table et de mener quelques opérations dessus. Cela est basé sur l’API de Kafka Streams, il y aura un KSQL Server qui exécutera les requêtes KSQL à l’encontre d’un cluster Kafka. C’est encore en developer preview mais cela peut être intéressant à terme.
  • Mais c’est quoi Kafka : une présentation synthétique de Kafka et son écosystème pour bien appréhender cette plateforme.
  • BigData Hebdo - Ep 47 : Kafka, SQL, Beam & co : un excellent épisode du podcast BigData Hebdo faisant un point très clair sur les annonces Kafka (mais aussi sur Beam)
  • It’s Okay To Store Data In Apache Kafka : la question abordée dans l’épisode de BigData Hebdo trouve du coup un peu sa réponse dans ce billet où le co-fondateur de Kafka indique qu’il est possible de stocker ses données dans Kafka. Après, faut-il le faire, c’est un autre débat :-)
  • Kafka Wakes Up And Is Metamorphosed Into A Database : opinion sur la “métamorphone” de Kafka en base de données avec une opinion rigolote : “It would have been far funnier, of course, if Kafka woke up one morning and had been turned into CockroachDB”.
  • Crossing the Streams – Joins in Apache Kafka : le billet explique les capacités de jointure qu’il est possible de réaliser dans un contexte Kafka Streams. En fonction de si vous manipulez des KStreams ou des KTables, vous pourrez faire différents types de jointure (inner join, left join ou outer join).

Licences et Open Source

Microservices

  • Monolith First : Martin Fowler constate que les migrations réussies vers des micro-services se sont faites à partir de monolithes. A contrario, démarrer un projet en micro-services se solde souvent par des échecs. Il “recommande” donc de démarrer par un monolithe et de le modulariser puis de l’éclater en micro-services.

NoSQL

  • Redis 4.0.0 released : la version 4.x de la base Redis est sortie cet été et apporte son lot de nouvelles fonctionalités (réplication améliorée, appararition des modules, amélioration du cache, amélioration du monitoring, etc).
  • BigData Hebdo - Ep 46: Elassandra : Vous vouliez le meilleur des mondes entre Cassandra et Elasticsearch - c’est désormais possible avec Elassandra. Durant cet épisode, le créateur d’Elassandra explique comment il s’y est pris pour créer ce projet et atteindre cette promesse de combiner le meilleur des deux mondes via une intégration la plus légère possible et sans réduire les fonctionnalités de chaque outil.

SQL

Streaming

Vie du développeur

Web

Web, Ops & Data - Avril 2017

kafka stream container kubernetes rest python terraform rancher mysql postgres microservice angularjs test css grid

Container & Orchestration

  • Kubernetes 1.6: Multi-user, Multi-workloads at Scale : à l’occasion de KubeCon à Berlin, sortie d’une nouvelle version de Kubernetes avec son lot de nouveautés, de nouvelles fonctionnalités et de fonctionnalités qui évolue de alpha > beta > stable en fonction de leurs maturités respectives. 4 grands axes d’amélioration : scaling avec le support jusqu’à 5.000 noeuds / 150.000 pods est supporté via la fédération de clusters, sécurité avec la mise en place de RBAC (Role Based Access Control) et amélioration de kubeadm pour initialiser votre cluster, scheduling amélioré pour mieux gérer la distribution des workloads sur votre cluster et enfin le provisionning dynamique du stockage pour simplifier la vie et la gestion du stockage par une allocation à la demande.

DevOps

HTML5

  • Practical CSS Grid: Adding Grid to an Existing Design : la dernière nouveauté CSS, c’est la grille. Une fois cette grille définie, on peut y positionner les éléments de son choix. L’article permet de voir un cas pratique de mise en place de cette grille dans le cadre de la refonte d’un blog. On y voit aussi les quelques limitations et soucis que l’on peut actuellement rencontrer avec ce nouveau système disponible dans tous les navigateurs ou presque depuis Mars 2017.

Javascript

Kafka

  • Kafka Streams 101 : un article simple et pédagogique sur Kafka Streams, la librairie Java qui permet de consommer ou de produire des messages dans un topic kafka.

MySQL

Postgres

Python

DevoxxFR 2016

kafka docker devoxx hadoop code société loi travail kubernetes microservice reverse-proxy frontend javascript rancher rsyslog scale documentation médecine unikernel jwt akka electron desktop vue.js continous-delivery

J’ai pu assister aux 3 jours de Devoxx FR 2016 ; voici les conférences qui ont retenu mon attention en repnant une approche thématique plutôt que chronologique.

Code et société

Travail & Société

  • De l’utopie de la fin du travail au digital labour :
    • La fin du travail pourrait-elle être un objectif ? Le lien entre travail et progrès technique était de diminuer la quantité de travail tout en améliorant sa qualité. Du coup, à terme, on pourrait imaginer que le travail de l’homme ne soit plus nécessaire.
    • L’auteur fait ensuite le panorama des théories de l’utopie, le travail ne disparait pas totalement mais est limité au juste nécessaire.
    • Passage d’une période où on travaillait par nécessité mais dégoût plutôt que par plaisir ou participer à la réalisation de soi, contrairement à maintenant.
    • Si l’ère numérique permet de faire apparaitre des formes plus intéressantes / agréables de travail, il a aussi ses à coté négatifs : ex de la précarité de certains emplois créées par l’uberisation des services (livreur ou chauffeur indépendant à la solde de qqs startups)
    • La période que l’on vie est-elle réellement la fin du travail ou bien une transformation historique et qu’il faut garder les utopies énoncées comme une boussole vers un avenir possible ? ie que nous n’en sommes qu’à une mutuation de la forme de travail mais que la fin du travail aura lieu bien plus tard ; si elle a lieu ?
  • L’entrepreunariat au féminin : retour sur 10+ ans de combat pour une meilleure prise en compte des femmes dans le monde du numérique. On y parle notamment du mouvememnt #JamaisSansElles et du fait que le numérique est une opportunité pour une meilleure mixité dans le travail. Etant déjà convaincu, je n’en dirais pas plus.
  • // TODO Implémenter le modèle de l’entreprise [de service] de demain. Retour d’expérience du patron de la société de services Zenika dans l’adoption d’une nouvelle forme d’entreprise.
    • Plutôt que d’entreprise libérée pour laquelle il y a plein de fanstasmes, il partle plutôt d’une entreprise reponsabilisante s’appuyant sur 3 piliers. Le premier est d’abaisser le centre de gravité de la décision le plus bas possible mais que cette décision se fait toujours dans l’intérêt de l’entreprise. Ensuite, les décisions sont prises par les personnes compétentes sur le sujet donné. Enfin, pour prendre de bonnes décisions, il est nécessaire d’avoir de la transparence.
    • Le micro-management est remplacé par du feedback immédiat (structure plate) d’une part et par des KPI et la transparence. Les KPI ont pour but d’illustrer le contexte de l’entreprise.
    • Le CEO doit être un Chief Enabler Officer ou facilitateur en bon français.
    • Les 5 axes à prendre en compte sont : donner du sens, le plaisir, l’humain, KISS et la transparence.

Ops, Docker & Microservices

  • Déployer vos applications sur un cluster kubernetes avec Ansible : le format Hands-on labs est compliqué à mener et c’est surement ce qui a miné cette présentation. Cela m’a néanmoins permis d’avoir une meilleure appréhension de Kubernetes. L’atelier fut l’occasion de découvrir Kargo (et kargo-cli), une surcouche à Ansible pour déployer un cluster Kubernetes ; ainsi que kpm pour déployer et gérer des applications sur un cluster kubernetes.
  • Traefik, a modern reverse-proxy : j’en ai parlé dans un précédent billet ; la présentation confirme l’intérêt d’un reverse-proxy adapté aux infrastructures micro-services et sachant s’interfacer avec des systèmes comme docker, etcd, consul, etc. J’ai bien prévu de l’utiliser pour mes prochains projets, une fois que j’aurais fini de tout transformer en container docker.
  • Building a unikernel java application : un unikernel est en gros un kernel qui ne contient que le minimum nécessaire pour lancer votre application et qui ne contient rien d’autre. Ce quickie a permis d’introduire le concept et de montrer le déploiement d’une application tomcat dans un format unikernel sur Google Cloud Platform. Si le concept est intéressant en soi, se repose un peu comme docker il y a quelques mois, la question de la maturité et de son écosystème. Même si la technologie unikernel existe depuis des années, on retrouve les problématiques de monitoring, sécurité, orchestration à adresser.
  • A la découverte du service discovery ; on manipule parfois etcd, consul ou encore zookeeper sans trop savoir ce qu’il se passe en leur sein. Cette présentation a été l’occasion de revenir aux basiques sur le concept de service discovery (un annuaire de services) et l’implémentation d’un cluster consul et son utilisation. Ce fut l’occasion de voir le mécanisme des health checks et comment des applications peuvent dynamiquement être informées de l’existence ou non d’un composant applicatif et de gérer des rechargements de configuration à la volée via consul-replicate.
  • Rancher, le (petit) orchestrateur docker qui vous veut du bien ; une introduction assez complète puisqu’elle décrit la configuration de rancher pour le déploiement d’une application 3-tiers et la mise en place d’une stratégie de mise à jour via rolling upgrade et en déploiement blue/green. A voir si Rancher peut aller jusqu’à gérer des environnements de production ou bien si cela reste un outil pour des expérimentatiosns / du dev / des labs et que l’on rebascule sur Kubernetes pour des (grosses) productions ?
  • Microservices IRL: ça fonctionne chez un client, on vous dit comment! ; un retour d’expérience sur le déploieemnt d’une architecture microservices et les problèmes rencontrés. Je suis peut être trop ce sujet en ce moment pour apprendre quelque chose de nouveau, si ce n’est l’éventuel remplacement d’Ansible par Spinnaker pour gérer les déploiements.
  • Dockerized system testing, with a dash of chaos : Arquillian est un framework (java) de test qui permet notamment de tester une application dans un container et de lui appliquer des containtes réseaux (timeout, latence, etc) avec les extensions Arquillian Cube & Arquillian Cube Q.

Coté Back

  • Stream processing avec les acteurs Akka : où comment via des composants simples que l’on peut combiner pour traiter des piles de messages de façon concurrente et distribuée (potentiellement). Cela peut éviter de déployer des clusters Spark/Storm/Flink qui ont un coût d’infrastructure non négligeable. Akka fonctionne sur la JVM aussi sur la plateforme .net. Si le pattern des actors vous intéresse, vous pouvez regarder ce qu’il existe pour votre langage favori.
  • 100% Stateless avec JWT (JSON Web Tokens : les JSON Web Tokens peuvent être vu comme les remplaçants des ID de sessions. Au travers des cookies, ils peuvent porter des informations qui sont signées et avec une date d’expiration mais en aucun cas chiffrées. Dans le cas d’une architecture distribuée et contrairement aux id de sessions, n’importe quel frontaux de votre application est en mesure de valider le token, contrairement aux id de sessions, qui, sauf à avoir un système de cache distribué, sont spécifiques à un frontal. Des articles complémentaires sur le sujet chez Stormpath et Auth0.
  • Hadoop à grand échelle : comment croitre sur le long terme ? : un retour d’expérience des équipes de Criteo sur l’exploitation et l’évolution de leur plateforme Hadoop avec des points d’attention sur
    • HDFS et la problématique de la gestion des espaces disques (taille), du nombre d’inodes (HDFS n’aime pas les petits fichiers). Mais aussi les aléas de ma JVM (152 Go) des Name Nodes avec la gestion de la RAM, du Garbage Collector, qui peuvent créer des surprises.
    • La gestion des jobs (1.3 millions lancés sur 15 jours) où il faut gérer les arbres de dépendances des jobs et la dépendance aux données pour bien les faire tourner ; un outil interne “langoustine” permet de visualiser cela.
    • La gestion des utilisateurs pour savoir qui (a) fait quoi et accompagner les utilisateurs du cluster
    • La nécessité de tout automatiser ! Avec 2000+ noeuds, pas le choix. Idem pour les utilisateurs !
    • Le choix de gérer leur infrastructure en interne ; Historiquement, Criteo a démarré avant que le cloud ne soit assez mature pour accueillir leur contacte. le cloud peut être vue comme trop lent (latence, etc) et vu que la charge est assez linéaire, l’elasticité du cloud n’est pas un argument. Ils estiment au final que leur infrastructure leur coûte 12 fois moins cher que si elle était hébergé chez un fournisseur de cloud.
    • Passage de 200 à 2600 serveurs en 2 ans.
    • Gestion des backups : définir la quantité strictement nécessaire de donénes vitales (entre 3 et 8 Po) ; snapshoté dans un 3ème datacenter.
  • Systèmes distribués, scotch, bouts de ficelle et doigts croisés : une histoire du streaming à Criteo - (Duct-tape streaming at scale (slides)). Récit du passage de la centralisation des logs d’une base MySQL à RSyslog puis à Kafka avec de nombreuses annecdotes et un retour humble puisque c’est toujours en cours (en tous cas, le sujet n’est pas encore fini, il reste des améliorations à porter). Sur Kafka, je retiendrais que si Kafka coté serveur est très performant, il faut par contre prendre le temps de comprendre comment fonctionne le client pour ne pas avoir des comportements “étranges”. Coté serveur, il est important de borner les queues dans la logique qu’il vaut mieux perdre des données que de ne plus avoir de système.

Coté Front

  • Conquérir le desktop avec Electron : Electron permet de développer des applications desktop avec des technologies Web. Pour cela, il embarque une instance de Chrome, V8 et Node.JS. La présentation s’attachera à démontrer comment il est simple de développer un petit logiciel de prise de note.
  • Vue.js, une alternative plus simple que React.js et Angular2 : Vue.js se veut un framework très orienté frontend ; Si la syntaxe est assez proche/similaire à celle d’Angular, vue.js se concentre vraiment sur la partie “Vue”. Contrairement à Angular par ex, il n’y a pas d’équivalent du module $http dans le coeur de vue.js. Pour autant, il peut être très complet et embarqué de quoi faire des tests e2e. Un framework a étudier si vous n’avez pas besoin de toute les fonctionnalités d’Angular mais plus des besoins de restituions uniquement (?).
  • Modulariser votre JavaScript avec JSPM et SystemJs ; SystemJS est un “module loader” pour ES6 et le reste par extension. JSPM est un gestionnaire de paquet qui s’appuie sur SystemJS. s’il n’y avait pas le fait que SystemJS était intégré à Angular2, je dirais bien que ce n’est qu’un n-ième système de gestion de packages javascript/css.

Côté Bonnes pratiques

  • L’odyssée du Continuous Delivery ; un retour très complet sur le passage de la Société Générale d’une application monolithique avec du code historique et l’équipe associée vers du continous delivery. Cela couvre aussi bien les thèmes humains (passage component teams > feature teams, gestion de la montée en compétence et du changement de culture de l’équipe, etc) que les thèmes techniques (mise en place d’un release train, feature toggling, etc).
  • Living Documentation : vous allez aimer la documentation ! :
    • Après avoir rappelé que la documentation sert à partager un savoir, le rendre accessible et à transmettre pour plus tard, le présentateur indique aussi que certaines documents sont inutiles : shameful comments (le commentaire qui sert à rien et dont on peut se passer avec un code plus lisible, mieux nommé) ou parfois qu’il vaut mieux une bonne conversation plutôt qu’une (mauvaise) documentation pour former quelqu’un qui rejoint une équipe par ex.
    • Lire la documentation doit permettre de comprendre le métier.
    • Plutôt qu’une documentation, il est aussi possible de coller sur un mur (investigation wall) tous les éléments qui permettent d’appréhender le métier, sans parler de stage terrains, etc. Cela peut être plus efficace/performant qu’une documentation classique.
    • Nécessité de séparer la documentation stable (evergreen documentation) de la documentation instable. Pour cette documentation instable, possibilité d’utiliser le BDD (Behaviour Driven Development) qui, au travers d’un scénario, formalise une intention, des exemples concrets et les exceptions le cas échéant.
    • La documentation peut être au milieu du code (commentaires, annotations, etc) et elle est générable par automatisation.
    • Au final, l’auteur cherche à montrer qu’une bonne documentation permet d’améliorer le design de son application et réciproquement.
    • Côté outil et BDD, on parlera surtout de Cucumber et Pickles.

Côté Nouveaux horizons

  • La blockchain en détail : une présentation progressive sur les principes, la technologie et les enjeux de la blockchain au travers notamment du bitcoin et d’ethereum. A regarder absolument pour mieux comprendre ce nouvel écosystème, en plus de consulter le site Blockchain France.

En synthèse, une belle première expérience à Devoxx, même pour un non-javaiste comme moi ; des retours d’expérience qui font réfléchir et instructifs dans l’immédiat ou bien à plus long terme à titre pro ou perso. Il se pourrait bien que j’y retourne l’année prochaine !