CérénIT - microserviceLe blog tech de Nicolas Steinmetz (Time Series, IoT, Web, Ops, Data)Zola2018-11-07T18:00:00+01:00https://cerenit.fr/tags/microservice/atom.xmlVoxxeddays Microservices Paris2018-11-07T18:00:00+01:002018-11-07T18:00:00+01:00
Unknown
https://cerenit.fr/blog/voxxedays-microservices/<p>J'ai participé à la première édition de <a rel="noopener" target="_blank" href="https://voxxeddays.com/microservices/">Voxxeddays Microservices Paris</a> 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.</p>
<p>Globalement :</p>
<ul>
<li>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.</li>
<li>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).</li>
</ul>
<p>Sur les keynotes qui devaient articuler le passé, le présent et le futur des microservices :</p>
<p><strong>Distant past of microservices - Ken Finnigén (Red Hat)</strong></p>
<ul>
<li>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.</li>
<li>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.</li>
<li>"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.</li>
<li>Réflexion autour de la notion de "quescient state" comme prochain but à atteindre.</li>
</ul>
<p><strong>The endless now : distributed systems and teams - Bridget Kromhout</strong></p>
<ul>
<li>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.</li>
<li>Le propos était d'appliquer les principes du CAP sur les équipes et les systèmes :
<ul>
<li>"Consistency" : les containers ont apporté cette reproductabilité des déploiements</li>
<li>"Avilability" : les outils d'orchestration répondent à ce besoin et à cette gestion de la disponibilité de nos applications</li>
<li>"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.</li>
</ul>
</li>
</ul>
<p><strong>Preparing for a future microsdervices journey - Susanne Kaiser</strong></p>
<p>Ma keynote préférée - l'oratrice reparcourt tout ce qui fait un micro-service et les bonnes pratiques associées :</p>
<ul>
<li>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)</li>
<li>Parcours des bonnes pratiques et des "cloud native citizen principles"</li>
<li>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)</li>
</ul>
<p>Pour les conférences, celles que j'ai préféré :</p>
<p><strong>Hexagonal at scale with DDD and microservices ! - Cyrille Martare (Arolla)</strong></p>
<ul>
<li>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.</li>
<li>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.</li>
</ul>
<p><strong>Microservices Lessons Learned - Susanne Kaiser</strong></p>
<p>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.</p>
<p><strong>Coté Outils...</strong></p>
<p>Quelques outils qui m'ont semblé intéressants :</p>
<ul>
<li><a rel="noopener" target="_blank" href="https://jenkins-x.io/">Jenkins X</a> : 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.</li>
<li><a rel="noopener" target="_blank" href="http://teiid.io/">Teeid</a> ou <a rel="noopener" target="_blank" href="http://teiid.jboss.org/">l'ancien site</a> : 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.</li>
<li><a rel="noopener" target="_blank" href="http://micronaut.io/">Micronaut</a> 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 <a rel="noopener" target="_blank" href="https://microprofile.io/">Microprofile</a> qui est en gros la version microservice du framework JEE. Micronaut serait plus proche de <a rel="noopener" target="_blank" href="https://vertx.io/">Vertx</a>.</li>
<li><a rel="noopener" target="_blank" href="http://strimzi.io/">Strimzi</a> : Il s'agit d'un projet Red Hat pour fournir un Cluster Kafka à déployer sur Kubernetes ou Openshift</li>
<li><a rel="noopener" target="_blank" href="https://debezium.io/">Debezium</a> : 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.</li>
<li><a rel="noopener" target="_blank" href="https://grpc.io/">gRPC</a> : 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.</li>
<li><a rel="noopener" target="_blank" href="https://www.owasp.org/index.php/OWASP_Dependency_Check">Dependency Check</a> et <a rel="noopener" target="_blank" href="https://www.owasp.org/index.php/OWASP_Dependency_Track_Project">Dependency Track</a> 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.</li>
</ul>
Web, Ops & Data - Juillet 20182018-07-25T09:30:00+02:002018-07-25T09:30:00+02:00
Unknown
https://cerenit.fr/blog/web-ops-and-data-juillet-2018/<h3 id="architecture">Architecture</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://segment.com/blog/goodbye-microservices/">Goodbye Microservices: From 100s of problem children to 1 superstar</a> : 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é.</li>
<li><a rel="noopener" target="_blank" href="https://thenewstack.io/miniservices-a-realistic-alternative-to-microservices/">Miniservices as a Realistic Alternative to Microservices</a> : 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... </li>
<li>Je mets donc pour rappel cet article que j'ai déjà mentionné : <a rel="noopener" target="_blank" href="https://adamdrake.com/enough-with-the-microservices.html">Enough with the microservices</a>. 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.</li>
</ul>
<h3 id="automatisation">Automatisation</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.ansible.com/blog/your-time-has-come-ansible-2-6">Ansible 2.6: Your Time Has Come!</a> : 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".</li>
</ul>
<h3 id="container-et-orchestration">Container et Orchestration</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://kubernetes.io/blog/2018/06/27/kubernetes-1.11-release-announcement/">Blog: Kubernetes 1.11: In-Cluster Load Balancing and CoreDNS Plugin Graduate to General Availability</a> : Kubernetes continue son travail de consolidation et de stabilisation.</li>
<li><a rel="noopener" target="_blank" href="https://www.infoq.com/articles/service-mesh-promise-peril">Service Mesh: Promise or Peril?</a> : 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.</li>
<li><a rel="noopener" target="_blank" href="https://softwareengineeringdaily.com/2018/05/30/container-native-development-with-ralph-squillace/">Container Native Development with Ralph Squillace</a> : 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).</li>
<li><a rel="noopener" target="_blank" href="https://blog.docker.com/2018/07/extending-support-cycle-docker-community-edition/">Extending Support Cycle for Docker Community Edition</a> : 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.</li>
</ul>
<h3 id="dataviz">Dataviz</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://grafana.com/blog/2018/06/27/grafana-v5.2-released/">Grafana v5.2 Released</a> : L'alerting est disponible sur ElasticSearch, Builds ARM officiels, amélioration de la sécurité (support des secrets docker, gestion des mots de passe admin), amélioration coté InfluxDB et Prometheus, etc.</li>
<li><a rel="noopener" target="_blank" href="https://medium.com/@LoicOrtola/mapocalypse-migrer-depuis-google-maps-maintenant-1-2-ed12ed3b5c21">Mapocalypse : Migrer depuis Google Maps, Maintenant 1/2</a> et <a rel="noopener" target="_blank" href="https://medium.com/@LoicOrtola/mapocalypse-migrer-depuis-google-maps-maintenant-2-2-e4359112e20a">Mapocalypse : Migrer depuis Google Maps, Maintenant 1/2</a> : si la partie 1 remet en contexte l'augmentation de tarifs de Google Maps, le second a pour intérêt de présenter et d'expliquer le fonctionnement des solutions alternatives.</li>
</ul>
<h3 id="devops">DevOps</h3>
<ul>
<li><a rel="noopener" target="_blank" href="http://blog.xebia.fr/2018/07/03/une-decennie-devops-quels-enseignements-tirer/">Une décennie DevOps, quels enseignements tirer ?</a> : 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.</li>
</ul>
<h3 id="no-sql">(No)SQL</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://stackoverflow.com/questions/9122/select-all-columns-except-one-in-mysql">Select all columns except one in MySQL?</a> : Cela peut toujours être utile de le savoir...</li>
</ul>
<h3 id="timeseries">Timeseries</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.influxdata.com/blog/release-announcement-influxdb-1-6-0-oss/">Release Announcement: InfluxDB 1.6.0 OSS</a> : InfluxData sort la version 1.6 de sa base de données temporelles avec comme améliorations significatives : fonctions supplémentaires sur InfluxQL, Accélération des backups via un meilleur parallélisme des tâches et l'arrive de la gestion du "back pressure" pour éviter la congestion lors des écritures.</li>
<li><a rel="noopener" target="_blank" href="https://speakerdeck.com/pauldix/flux-number-fluxlang-a-new-time-series-data-scripting-language">Flux (#fluxlang): a new (time series) data scripting language</a> : présentation à date du design et des fonctionnalités de Flux (ex IFQL)</li>
<li><a rel="noopener" target="_blank" href="https://www.influxdata.com/blog/why-were-building-flux-a-new-data-scripting-and-query-language/">Why We’re Building Flux, a New Data Scripting and Query Language</a> : Paul Dix, CTO d'InfluxData revient sur les raisons de la création du langage flux et pourquoi SQL n'a pas été retenu.</li>
<li><a rel="noopener" target="_blank" href="https://www.influxdata.com/blog/chronograf-1-6-released-introducing-log-viewer-and-additional-sharing-capabilities/">Chronograf 1.6 Released: Introducing Log Viewer and Additional Sharing Capabilities</a> : J'en parlais <a rel="noopener" target="_blank" href="https://www.cerenit.fr/blog/web-ops-and-data-juin-2018/">le mois dernier</a>, Chronograf se dote d'un visualiseur de log (<em>log viewer</em>) et semble aller plus loin que ce qui était annoncé dans la plateforme d'ingestion de logs. Les autres nouveautés tournent autour du partage des dashboards avec des tiers.</li>
</ul>
Web, Ops & Data - Septembre 20172017-09-27T09:30:00+02:002017-09-27T09:30:00+02:00
Unknown
https://cerenit.fr/blog/web-ops-and-data-septembre-2017/<h3 id="architecture">Architecture</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.octo.com/decouplage-decouplage-decouplage/">Découplage, découplage, découplage !</a> : revue de 3 méthodes de découplage (format, localisation, temporalité) pour vos programmes avec forces et faiblesses de chacun.</li>
</ul>
<h3 id="cli">CLI</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://medium.com/@waxzce/use-bashrc-d-directory-instead-of-bloated-bashrc-50204d5389ff">Use .bashrc.d directory instead of bloated .bashrc</a> : Une bonne astuce pour gérer tout ce que l'on veut mettre dans <code>.bashrc</code> 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 ;-)</li>
</ul>
<h3 id="cloud">Cloud</h3>
<ul>
<li><a rel="noopener" target="_blank" href="http://blog.xebia.fr/2017/05/03/aws-separer-la-production-du-developpement/">AWS – Séparer la production du développement</a> : article sur le séparation et la gestion des accès à une équipe de développement au sein d'AWS.</li>
<li><a rel="noopener" target="_blank" href="http://blog.xebia.fr/2017/08/29/aws-dois-je-creer-un-vpc/">AWS – Pourquoi devez-vous créer un VPC ? </a> : retour sur ce qu'est un réseau privé virtuel chez AWS et comment il fonctionne / ce qu'il contient. Je ne connaissais pas l'option HA, intéressante, même si potentiellement chère.</li>
<li><a rel="noopener" target="_blank" href="http://blog.wescale.fr/2017/08/21/saga-de-lete-e02-decouverte-de-service-et-repartition-de-charge-multi-cloud/">Saga de l'été : E01 Construction d’une infrastructure multi-cloud</a>, <a rel="noopener" target="_blank" href="http://blog.wescale.fr/2017/08/21/saga-de-lete-e02-decouverte-de-service-et-repartition-de-charge-multi-cloud/">Saga de l'été : E02 Découverte de service et répartition de charge multi-cloud</a> et <a rel="noopener" target="_blank" href="http://blog.wescale.fr/2017/09/06/saga-de-lete-e03-mon-orchestrateur-de-conteneurs-multi-cloud/">Saga de l'été : E03 Mon orchestrateur de conteneurs multi-cloud</a> : un retour complet et intéressant sur l'implémentation d'une infrastructure multi-cloud (AWS, GCP) au travers des outils hashicorp avec Terraform, Nomad et Consul.</li>
<li><a rel="noopener" target="_blank" href="https://blog.ippon.fr/2017/06/09/les-architectures-serverless/">Les architectures Serverless</a> : une présentation assez complète des architectures serverless (FaaS, BaaS), leurs avantages/inconvénients, leurs objectifs/intérêts, etc et en quoi ces architectures diffèrent du IaaS, PaaS, SaaS, Container, etc.</li>
</ul>
<h3 id="dashboard">Dashboard</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://grafana.com/blog/2017/09/13/grafana-4.5-released/">Graphana 4.5 Released</a> : 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.</li>
</ul>
<h3 id="docker">Docker</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.docker.com/2017/09/preview-linux-containers-on-windows/">Preview: Linux Containers on Windows</a> : 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.</li>
<li><a rel="noopener" target="_blank" href="https://blog.docker.com/2017/09/docker-official-images-now-multi-platform/">Docker Official Images are now Multi-platform</a> : 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 <code>Dockerfile</code> que l'on soit sur un serveur 64 bits ou un raspberry, cela va faciliter les chaines de développement et déploiement.</li>
<li><a rel="noopener" target="_blank" href="https://integratedcode.us/2017/09/13/dockerhub-official-images-go-multi-platform/">DockerHub Official Images Go Multi-platform!</a> : un retour plus complet sur la gestion du passage au multi-platform des images Docker.</li>
</ul>
<h3 id="documentation">Documentation</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://speakerdeck.com/hackebrot/hi-my-name-is-readme-writethedocs-2017">Hi, my name is README! - WriteTheDocs 2017</a> : bonnes (et mauvaises) pratiques sur la rédaction du fichier README qui est le point d'entrée sur votre projet.</li>
</ul>
<h3 id="elastiscearch">Elastiscearch</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.elastic.co/blog/a-full-stack-in-one-command">A Full Stack in One Command</a> : 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...</li>
<li><a rel="noopener" target="_blank" href="https://www.elastic.co/blog/elastic-stack-5-6-0-released">Elastic Stack 5.6.0 Released</a> : 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.</li>
</ul>
<h3 id="kafka">Kafka</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.ippon.fr/2017/07/11/kafka-0-11-0-%e2%99%a5/">Kafka 0.11.0 == ♥</a> : 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.</li>
<li><a rel="noopener" target="_blank" href="https://medium.com/@jaykreps/exactly-once-support-in-apache-kafka-55e1fdd0a35f">Exactly-once Support in Apache Kafka</a> : le co-fondateur de Confluent revient sur la signification de "Exactly-once support" dans Kafka et sur son implémentation.</li>
<li><a rel="noopener" target="_blank" href="https://www.confluent.io/blog/exactly-once-semantics-are-possible-heres-how-apache-kafka-does-it/">Exactly-once Semantics are Possible: Here’s How Kafka Does it</a> : la même expliquée par la CTO de Confluent.</li>
<li><a rel="noopener" target="_blank" href="https://www.confluent.io/blog/ksql-open-source-streaming-sql-for-apache-kafka/">Introducing KSQL: Open Source Streaming SQL for Apache Kafka</a> : Kafka se dote d'une interface SQL permettant de faire des requêtes de façon continue (<em>continuous queries</em>) 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 <em>developer preview</em> mais cela peut être intéressant à terme.</li>
<li><a rel="noopener" target="_blank" href="https://blog.zenika.com/2017/09/14/mais-cest-quoi-apache-kafka/">Mais c'est quoi Kafka</a> : une présentation synthétique de Kafka et son écosystème pour bien appréhender cette plateforme.</li>
<li><a rel="noopener" target="_blank" href="https://www.spreaker.com/user/vhe74/episode-47-kafka-sql-beam-and-co">BigData Hebdo - Ep 47 : Kafka, SQL, Beam & co</a> : un excellent épisode du podcast <a rel="noopener" target="_blank" href="http://bigdatahebdo.com/">BigData Hebdo</a> faisant un point très clair sur les annonces Kafka (mais aussi sur Beam) </li>
<li><a rel="noopener" target="_blank" href="https://www.confluent.io/blog/okay-store-data-apache-kafka/">It’s Okay To Store Data In Apache Kafka</a> : 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 :-)</li>
<li><a rel="noopener" target="_blank" href="https://www.nextplatform.com/2017/08/30/kafka-wakes-metamorphosed-database/">Kafka Wakes Up And Is Metamorphosed Into A Database</a> : opinion sur la "métamorphone" de Kafka en base de données avec une opinion rigolote : "<em>It would have been far funnier, of course, if Kafka woke up one morning and had been turned into CockroachDB</em>". </li>
<li><a rel="noopener" target="_blank" href="https://www.confluent.io/blog/crossing-streams-joins-apache-kafka/">Crossing the Streams – Joins in Apache Kafka</a> : 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).</li>
</ul>
<h3 id="licences-et-open-source">Licences et Open Source</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://ma.tt/2017/09/on-react-and-wordpress/">On React and Wordpress</a> : Suite aux <a rel="noopener" target="_blank" href="https://code.facebook.com/posts/112130496157735/explaining-react-s-license/">histoires de licence autour de celle de ReactJS</a> et de la <a rel="noopener" target="_blank" href="https://issues.apache.org/jira/browse/LEGAL-303">fondation Apache interdisant aux projets qu'elle héberge d'utliser React</a>, c'est au tour de Wordpress d'abandonner React. De l'importance de bien évaluer la licence dans le cadre de l'évaluation des produits que nous retenons pour des projets.</li>
<li><a rel="noopener" target="_blank" href="https://blog.cloudboost.io/3-points-to-consider-before-migrating-away-from-react-because-of-facebooks-bsd-patent-license-b4a32562d268">3 Points to Consider before Migrating Away from React Because of Facebook’s ‘BSD+ Patent’ License</a> : l'article nuance les propos tenus ici ou là et sont rédigés par un juriste spécialisé dans les brevets. Par défaut, Facebook n'a pas prévu d'utiliser ses brevets à l'encontre des autres. Ensuite, le brevet porte sur un concept et non sur le code en lui-même donc toute autre librairie/framework implémentant le même concept peut tout autant être poursuivi par Facebook s'ils se retrouvaient dans une condition pour le faire. Il resqte quelques cas de si je traduis en justice Facebook et inversement mais je vous les laisse les consulter pour ne pas faire d'erreur d'interprétation.</li>
<li><a rel="noopener" target="_blank" href="https://code.facebook.com/posts/300798627056246/relicensing-react-jest-flow-and-immutable-js">Relicensing React, Jest, Flow, and Immutable.js</a> : Facebook au final va mettre sous licence MIT les nouvelles/prochaines versions de ces logiciels et se pose la question pour les autres (notamment GraphQL). A voir si cela résoud vraiment le problème ou pas ou <a rel="noopener" target="_blank" href="https://twitter.com/kantrn/status/911358449677631488">si cela ne serait pas pire</a>.</li>
</ul>
<h3 id="microservices">Microservices</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://martinfowler.com/bliki/MonolithFirst.html">Monolith First</a> : 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.</li>
</ul>
<h3 id="nosql">NoSQL</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://redislabs.com/blog/redis-4-0-0-released/">Redis 4.0.0 released</a> : 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).</li>
<li><a rel="noopener" target="_blank" href="https://www.spreaker.com/user/vhe74/episode-46-elassandra">BigData Hebdo - Ep 46: Elassandra</a> : Vous vouliez le meilleur des mondes entre Cassandra et Elasticsearch - c'est désormais possible avec <a rel="noopener" target="_blank" href="http://www.elassandra.io/">Elassandra</a>. 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.</li>
</ul>
<h3 id="sql">SQL</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.compose.com/articles/geofile-getting-started-with-pgrouting/">Geofile: Getting Started with pgRouting</a> et <a rel="noopener" target="_blank" href="https://www.compose.com/articles/geofile-getting-started-with-pgrouting-using-esri-shapefiles/">Geofile: Getting Started with pgRouting using Esri Shapefiles</a>: <a rel="noopener" target="_blank" href="http://pgrouting.org/">pgRouting</a> est une extension Postgres s'appuyant sur l'extension géospatiale <a rel="noopener" target="_blank" href="http://www.postgis.net/">PostGIS</a> permettant d'avoir une fonctionnalité de routage (plus court chemin entre 2 points, logique du voyageur, etc). L'article explique comment utiliser cette extension sur la base d'un tour des chateaux anglais.</li>
<li>The MySQL High Availability Landscape in 2017 : <a rel="noopener" target="_blank" href="https://www.percona.com/blog/2017/06/20/the-mysql-high-availability-landscape-in-2017-the-elders/">the elders</a>, <a rel="noopener" target="_blank" href="https://www.percona.com/blog/2017/08/22/mysql-high-availability-landscape-2017-adults/">the adults</a> and <a rel="noopener" target="_blank" href="https://www.percona.com/blog/2017/09/15/the-mysql-high-availability-landscape-in-2017-the-babies/">the babies</a> : panorama des solutions de haute disponibilités avec MySQLdepuis les solutions historiques jusqu'au plus récentes.</li>
</ul>
<h3 id="streaming">Streaming</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://cloud.google.com/blog/big-data/2017/08/the-canonical-new-book-about-stream-processing">The canonical new book about stream processing</a> : une nouvelle ressource sur le streaming via les équipes de Google Cloud Platform. Pas encore lu mais semble intéressant.</li>
</ul>
<h3 id="vie-du-developpeur">Vie du développeur</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.octo.com/le-demi-cercle-episode-1/">Le demi-cercle (épisode 1)</a>, <a rel="noopener" target="_blank" href="https://blog.octo.com/le-demi-cercle-episode-2-voir-avancer/">Le demi-cercle (épisode 2 : voir et avancer)</a>, <a rel="noopener" target="_blank" href="https://blog.octo.com/le-demi-cercle-episode-3-communication-breakdown/">Le demi-cercle (épisode 3 — Communication Breakdown) </a>, <a rel="noopener" target="_blank" href="https://blog.octo.com/le-demi-cercle-episode-4-driver-navigators/">Le demi-cercle (épisode 4 — Driver / Navigators) </a>, <a rel="noopener" target="_blank" href="https://blog.octo.com/mob-programming-episode-5-brown-bag-lunch/">Brown Bag Lunch</a>, <a rel="noopener" target="_blank" href="https://blog.octo.com/le-demi-cercle-episode-6-conseils-a-emporter/">Conseils à emporter</a>, <a rel="noopener" target="_blank" href="https://blog.octo.com/le-demi-cercle-episode-7-crise-opportunite/">Crise / Opportunité</a>, <a rel="noopener" target="_blank" href="https://blog.octo.com/le-demi-cercle-episode-8-le-cinquieme-etage/">Le 5ème étage</a>, <a rel="noopener" target="_blank" href="https://blog.octo.com/le-demi-cercle-episode-9-que-faire/">Que faire ?</a>, <a rel="noopener" target="_blank" href="https://blog.octo.com/le-demi-cercle-episode-10-soit-soit/">Soit… soit…</a>, <a rel="noopener" target="_blank" href="https://blog.octo.com/le-demi-cercle-episode-11-boites-et-fleches/">Boites et flèches</a>, <a rel="noopener" target="_blank" href="https://blog.octo.com/le-demi-cercle-episode-12-le-prochain-copil/">Le prochain copil</a>, <a rel="noopener" target="_blank" href="https://blog.octo.com/le-demi-cercle-episode-13-la-faille/">la faille</a>, <a rel="noopener" target="_blank" href="https://blog.octo.com/le-demi-cercle-episode-14-poussiere/">Poussière</a>, <a rel="noopener" target="_blank" href="https://blog.octo.com/le-demi-cercle-episode-15-lhypothese-et-la-regle/">L'hypothèse et la règle</a> <a rel="noopener" target="_blank" href="https://blog.octo.com/le-demi-cercle-episode-16-deplacements/">Déplacements</a>, <a rel="noopener" target="_blank" href="https://blog.octo.com/le-demi-cercle-episode-17-jouer-et-ranger/">Jouer et Ranger</a>, <a rel="noopener" target="_blank" href="https://blog.octo.com/le-demi-cercle-episode-18-arrangements/">Arrangements</a> : moment de vie d'un développeur sur une application ayant vécu et qui corrige un nième bug ; et si c'était l'occasion de prendre une pause et de repenser la chose ? Je vous laisse lire...</li>
<li><a rel="noopener" target="_blank" href="https://hackernoon.com/the-art-of-pull-requests-6f0f099850f9">The Art of Pull Requests</a> : des bonnes pratiques pour mener des pull requests de façon bienveillante.</li>
</ul>
<h3 id="web">Web</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://speakerdeck.com/fox/the-state-of-the-web">The State of the Web</a> avec son <a rel="noopener" target="_blank" href="https://medium.com/@fox/talk-the-state-of-the-web-3e12f8e413b3">transcript</a> : Etat des lieux et bonnes pratiques sur les différentes sujets liés au plateformes web (webperf, optimisation, outils, etc).</li>
<li><a rel="noopener" target="_blank" href="https://ma.ttias.be/chrome-force-dev-domains-https-via-preloaded-hsts/">Chrome to force .dev domains to HTTPS via preloaded HSTS</a> : pour ceux qui utilisent des urls en .dev pour accéder à leurs environnements locaux de développement, Chrome va bientôt forcer le passage en https pour cette extension.</li>
<li><a rel="noopener" target="_blank" href="https://tools.ietf.org/html/rfc8246">HTTP Immutable Responses</a> : nouvel argument <code>immutable</code> pour l'entête <code>Cache-Control</code> de sorte que le navigateur ne vérifie plus si la ressource a été modifiée ou pas (fini les 304) durant la période de cache qui a été définie pour cette ressource.</li>
<li><a rel="noopener" target="_blank" href="https://blog.dareboost.com/fr/2017/09/hsts-fiabiliser-connexions-securisees/">Fiabiliser les connexions sécurisées avec HSTS (HTTP Strict Transport Security)</a> : petit topo sur HSTS, mécanisme qui permet d'indiquer que votre site ne doit être servi que via son url sécurisée et gérer la transition http > https.</li>
</ul>
Web, Ops & Data - Avril 20172017-04-26T09:30:00+02:002017-04-26T09:30:00+02:00
Unknown
https://cerenit.fr/blog/web-ops-and-data-avril-2017/<h3 id="container-orchestration">Container & Orchestration</h3>
<ul>
<li><a rel="noopener" target="_blank" href="http://blog.kubernetes.io/2017/03/kubernetes-1.6-multi-user-multi-workloads-at-scale.html">Kubernetes 1.6: Multi-user, Multi-workloads at Scale </a> : à 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 : <em>scaling</em> avec le support jusqu'à 5.000 noeuds / 150.000 pods est supporté via la fédération de clusters, <em>sécurité</em> avec la mise en place de RBAC (Role Based Access Control) et amélioration de kubeadm pour initialiser votre cluster, <em>scheduling amélioré</em> pour mieux gérer la distribution des workloads sur votre cluster et enfin le <em>provisionning dynamique du stockage</em> pour simplifier la vie et la gestion du stockage par une allocation à la demande.</li>
</ul>
<h3 id="devops">DevOps</h3>
<ul>
<li><a rel="noopener" target="_blank" href="http://blog.octo.com/deployer-son-infrastructure-google-cloud-platform-grace-a-terraform/">Déployer son infrastructure Google Cloud Platform grâce à Terraform</a> : Introduction à <a rel="noopener" target="_blank" href="https://www.terraform.io/">Terraform</a>, l'outil de provisionning d'infrastructure développé par <a rel="noopener" target="_blank" href="https://www.hashicorp.com/">HashiCorp</a> dans un contexte Google Cloud. D'ailleurs <a rel="noopener" target="_blank" href="https://www.hashicorp.com/blog/terraform-0-9/">Terraform 0.9</a> vient de sortir.</li>
<li><a rel="noopener" target="_blank" href="http://www.terrafoundry.net/blog/2017/03/26/scaleway-terraform/">Terraform & Scaleway - Getting Started</a> : un autre exemple d'utilisation de Terraform assez bien expliqué dans un contexte Scaleway</li>
<li><a rel="noopener" target="_blank" href="https://sysadmin.it-landscape.info/">IT Landscape for sysadmins</a> : Panorama des solutions et outils opensource à usage des profils sysadmin/devops regroupés par catégories.</li>
<li><a rel="noopener" target="_blank" href="https://medium.com/@aelsabbahy/tutorial-how-to-test-your-docker-image-in-half-a-second-bbd13e06a4a9">Tutorial: How to test your docker image in half a second</a> : Ce tutoriel montre comment tester le bon fonctionnement d'une image docker via l'outil <a rel="noopener" target="_blank" href="https://github.com/aelsabbahy/goss">goss</a>. Goss, une alternative à serverspec, permet de tester et valider la configuration d'un serveur ou d'un container dans le cas présent.</li>
<li><a rel="noopener" target="_blank" href="http://rancher.com/microservices-block-storage/">Announcing Longhorn: an open source project for microservices-based distributed block storage</a> : Rancher sort le projet <a rel="noopener" target="_blank" href="https://github.com/rancher/longhorn">Longhorn</a>, un système de stockage block distribué (et non pas un système de fichier distribué comme Ceph, GlusterFS ou Minio). Compatible uniquement avec Docker pour le moment, prochainement avec Kubernetes, reste à voir justement comment la partie système de fichiers sera traitée. Projet intéressant en tous cas.</li>
<li><a rel="noopener" target="_blank" href="http://rancher.com/press-release-rancheros-ga/">RancherOS Hits General Availability</a> : la mini-distribution Linux optimisée pour lancer des containers Docker, <a rel="noopener" target="_blank" href="http://rancher.com/rancher-os/">Rancher OS</a>, sort en version GA.</li>
</ul>
<h3 id="html5">HTML5</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://alistapart.com/article/practical-grid">Practical CSS Grid: Adding Grid to an Existing Design</a> : 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.</li>
</ul>
<h3 id="javascript">Javascript</h3>
<ul>
<li><a rel="noopener" target="_blank" href="http://blog.ninja-squad.com/2017/03/24/what-is-new-angular-4/">What's new in Angular 4?</a> ou <a rel="noopener" target="_blank" href="http://blog.zenika.com/2017/03/28/angular-4-0/">Angular 4.0</a>: La version 4.0 vient de sortir, revue des nouveautés et des changements pour ceux qui s'intéressent (encore) à AngularJS.</li>
</ul>
<h3 id="kafka">Kafka</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.ippon.fr/2017/04/18/kafka-streams-101/">Kafka Streams 101</a> : 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.</li>
</ul>
<h3 id="mysql">MySQL</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://thoughts.t37.net/how-we-upgraded-a-22tb-mysql-cluster-from-5-6-to-5-7-in-9-months-b09211af57ba">How we Upgraded a 22TB MySQL Cluster from 5.6 to 5.7 (in 9 months)</a> : retour d'expérience sur la migration d'un cluster MySQL de 22 To de MySQL 5.6 vers 5.7 et les écueils rencontrés. Intéressant.</li>
</ul>
<h3 id="postgres">Postgres</h3>
<ul>
<li><a href="https://cerenit.fr/blog/web-ops-and-data-avril-2017/Postgrest">https://github.com/begriffs/postgrest</a> : Pour permettre de mettre une API Rest devant votre base Postgres. Un <a rel="noopener" target="_blank" href="https://postgrest.com/en/v0.4/intro.html#ecosystem">écosystème</a> existe autour de cette solution pour facilement l'intégrer dans votre projet.</li>
</ul>
<h3 id="python">Python</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://realpython.com/blog/python/instance-class-and-static-methods-demystified/">Python's Instance, Class, and Static Methods Demystified</a> : Tout est dans le titre ! Je connaissais peu les "<em>class methods</em>" et "<em>static methods</em>". Cela aurait pu m'être utile pour mon précédent projet !</li>
<li>Building microservices with Python (<a rel="noopener" target="_blank" href="https://medium.com/@ssola/building-microservices-with-python-part-i-5240a8dcc2fb">Part 1</a>, <a rel="noopener" target="_blank" href="https://medium.com/@ssola/building-microservices-with-python-part-2-9f951199094a">Part 2</a>, <a rel="noopener" target="_blank" href="https://medium.com/@ssola/building-microservices-with-python-part-3-a556a4c4bc00">Part 3</a>) : un récit assez complet pour batir un microservice s'appuyant sur Flask. Les autres outils intéressants sont <a rel="noopener" target="_blank" href="https://connexion.readthedocs.io/en/latest/">connexions</a> (API, oAuth, OpenAPI Specs), <a rel="noopener" target="_blank" href="https://pypi.python.org/pypi/Flask-Injector">Flask-injector</a> pour l'injection de dépendance et <a rel="noopener" target="_blank" href="https://github.com/tebeka/fastavro">fastavro</a></li>
</ul>
DevoxxFR 20162016-04-25T00:00:00+00:002016-04-25T00:00:00+00:00
Unknown
https://cerenit.fr/blog/devoxxfr-2016/<p>J'ai pu assister aux 3 jours de <a rel="noopener" target="_blank" href="http://devoxx.fr/">Devoxx FR 2016</a> ; voici les conférences qui ont retenu mon attention en repnant une approche thématique plutôt que chronologique.</p>
<h3 id="code-et-societe">Code et société</h3>
<ul>
<li><a rel="noopener" target="_blank" href="http://cfp.devoxx.fr/2016/talk/XJJ-2449/La_medecine_de_demain">La médecine de demain</a> ; <a rel="noopener" target="_blank" href="http://billaut.typepad.com/">Jean-Michel Billaut</a> nous sensibilise aux enjeux de la e-santé et la course qui a commencé depuis 10 ans aux USA, en Chine et dans de nombreux autres pays sauf en France. Nous allons passé du règle où les molécules soignent les maladies à celui où ce sont les données qui nous soignent (séquençage génétique, big data + machine learning, dossier médical numérique, spectromètre de poche pour informer et diagnostiquer). </li>
<li>En aggrégeant les conférences <a rel="noopener" target="_blank" href="http://cfp.devoxx.fr/2016/talk/OOX-6202/Software_development,_responsibility_and_ethics:_the_coming_crisis">Software development, responsibility and ethics: the coming crisis</a>, <a rel="noopener" target="_blank" href="http://cfp.devoxx.fr/2016/talk/ROS-2555/Algorithmes,_les_nouveaux_pouvoirs_du_developpeur">Algorithmes, les nouveaux pouvoirs du développeur</a> - <a rel="noopener" target="_blank" href="http://fr.slideshare.net/boin/keynote-devoxx-2016">Slides</a>, <a rel="noopener" target="_blank" href="http://cfp.devoxx.fr/2016/talk/MXS-1433/Societe_programmable_:_developpeurs_citoyens">Société programmable : développeurs citoyens</a> ou encore <a rel="noopener" target="_blank" href="http://cfp.devoxx.fr/2016/talk/MSB-2893/The_impact_of_code_in_society">The impact of code in society</a>, on aborde différents sujets comme :
<ul>
<li>L'homme automate qui ne réfléchit plus ou qui ne prend pas de recul sur les données qui lui sont fournies avec le retour notamment sur <a rel="noopener" target="_blank" href="https://www.theguardian.com/technology/2014/jun/29/facebook-users-emotions-news-feeds">les manipulations de Facebook sur les fils d'actualité de ces membres</a> ou <a rel="noopener" target="_blank" href="http://www.theguardian.com/commentisfree/2016/apr/19/donald-trump-facebook-election-manipulate-behavior">encore la capacité de Facebook à ne pas faire élire Trump</a> par ex.</li>
<li>Le code que nous produisons peut donc créer un biais sur nos décisions pouvant aller jusqu'à de la manipulation. Dès lors, il nous faut nous poser des questions sur l'éthique. Doit-on attendre que la loi régule la chose ou bien faut-il comme les médecins ou les avocats que notre profession s'auto-régule ?</li>
<li>Le code impacte beaucoup nos sociétés (on prend la liberté d'expression au sens américain du terme grâce à Facebook/Twitter, internet a mis tout le monde sur un pied d'égalité pour l'accès à la connaissance et en terme de fraternité, l'open source a renversé la donne. Reste que économie, polique et informatique requirt tout trois de la confiance pour bien fonctionner. Cette confiance est toute fragile (cf NSA/Snowden, etc) et si elle tombe, quid ?</li>
</ul>
</li>
<li><a rel="noopener" target="_blank" href="http://cfp.devoxx.fr/2016/talk/QXO-1374/Le_Service_Public_a_l'heure_d'internet">Le Service Public à l'heure d'internet</a> ; retour sur l'évolution de l'Etat en matière de numérique au travers de <a rel="noopener" target="_blank" href="https://beta.gouv.fr/">beta.gouv.fr</a>. </li>
</ul>
<h3 id="travail-societe">Travail & Société</h3>
<ul>
<li><a rel="noopener" target="_blank" href="http://cfp.devoxx.fr/2016/talk/UND-3099/De_l'utopie_de_la_fin_du_travail_au_digital_labour">De l'utopie de la fin du travail au digital labour</a> :
<ul>
<li>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. </li>
<li>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.</li>
<li>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.</li>
<li>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)</li>
<li>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 ?</li>
</ul>
</li>
<li><a rel="noopener" target="_blank" href="http://cfp.devoxx.fr/2016/talk/FFP-4375/L'entrepreunariat_au_feminin">L'entrepreunariat au féminin</a> : 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.</li>
<li><a rel="noopener" target="_blank" href="http://cfp.devoxx.fr/2016/talk/KIM-0980/%2F%2F_TODO_Implementer_le_modele_de_l%E2%80%99entreprise_%5Bde_service%5D_de_demain">// TODO Implémenter le modèle de l’entreprise [de service] de demain</a>. Retour d'expérience du patron de la société de services Zenika dans l'adoption d'une nouvelle forme d'entreprise.
<ul>
<li>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.</li>
<li>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.</li>
<li>Le <em>CEO</em> doit être un <em>Chief Enabler Officer</em> ou facilitateur en bon français.</li>
<li>Les 5 axes à prendre en compte sont : donner du sens, le plaisir, l'humain, <em>KISS</em> et la transparence.</li>
</ul>
</li>
</ul>
<h3 id="ops-docker-microservices">Ops, Docker & Microservices</h3>
<ul>
<li><a rel="noopener" target="_blank" href="http://cfp.devoxx.fr/2016/talk/FNG-2673/Deployez_vos_applications_sur_un_cluster_Kubernetes_avec_Ansible">Déployer vos applications sur un cluster kubernetes avec Ansible</a> : le format <em>Hands-on labs</em> 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 <a rel="noopener" target="_blank" href="https://github.com/kubespray/kargo">Kargo</a> (et <a rel="noopener" target="_blank" href="https://github.com/kubespray/kargo-cli">kargo-cli</a>), une surcouche à Ansible pour déployer un cluster Kubernetes ; ainsi que <a rel="noopener" target="_blank" href="https://github.com/kubespray/kpm">kpm</a> pour déployer et gérer des applications sur un cluster kubernetes.</li>
<li><a rel="noopener" target="_blank" href="http://cfp.devoxx.fr/2016/talk/CIQ-9112/Traefik,_a_modern_reverse-proxy">Traefik, a modern reverse-proxy</a> : j'en ai parlé dans un <a rel="noopener" target="_blank" href="https://www.cerenit.fr/blog/web-ops-data-semaine-14">précédent billet</a> ; 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.</li>
<li><a rel="noopener" target="_blank" href="http://cfp.devoxx.fr/2016/talk/CIH-6001/Building_a_unikernel_Java_Application">Building a unikernel java application</a> : un <a rel="noopener" target="_blank" href="http://unikernel.org/">unikernel</a> est en gros un kernel qui ne contient que le minimum nécessaire pour lancer votre application et qui ne contient <strong>rien</strong> d'autre. Ce <em>quickie</em> 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.</li>
<li><a rel="noopener" target="_blank" href="http://cfp.devoxx.fr/2016/talk/WSZ-9589/A_la_decouverte_du_service_discovery">A la découverte du service discovery</a> ; on manipule parfois <code>etcd</code>, <code>consul</code> ou encore <code>zookeeper</code> 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 <a rel="noopener" target="_blank" href="https://www.consul.io/">consul</a> et son utilisation. Ce fut l'occasion de voir le mécanisme des <em>health checks</em> 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 <a rel="noopener" target="_blank" href="https://github.com/hashicorp/consul-replicate">consul-replicate</a>.</li>
<li><a rel="noopener" target="_blank" href="http://cfp.devoxx.fr/2016/talk/QVH-7970/Rancher,_le_(petit)_orchestrateur_docker_qui_vous_veut_du_bien">Rancher, le (petit) orchestrateur docker qui vous veut du bien</a> ; 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 <em>rolling upgrade</em> et en déploiement <em>blue/green</em>. 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 ?</li>
<li><a rel="noopener" target="_blank" href="http://cfp.devoxx.fr/2016/talk/TSH-1394/Microservices_IRL:_ca_fonctionne_chez_un_client,_on_vous_dit_comment!">Microservices IRL: ça fonctionne chez un client, on vous dit comment!</a> ; 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 <a rel="noopener" target="_blank" href="https://www.ansible.com/">d'Ansible</a> par <a rel="noopener" target="_blank" href="http://www.spinnaker.io/">Spinnaker</a> pour gérer les déploiements.</li>
<li><a rel="noopener" target="_blank" href="http://cfp.devoxx.fr/2016/talk/NON-8766/Dockerized_system_testing,_with_a_dash_of_chaos">Dockerized system testing, with a dash of chaos</a> : <a rel="noopener" target="_blank" href="http://arquillian.org/">Arquillian</a> 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.</li>
</ul>
<h3 id="cote-back">Coté Back</h3>
<ul>
<li><a rel="noopener" target="_blank" href="http://cfp.devoxx.fr/2016/talk/MJP-6534/Stream_processing_avec_les_acteurs_AKKA">Stream processing avec les acteurs Akka</a> : 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. <a rel="noopener" target="_blank" href="http://akka.io/">Akka</a> fonctionne sur la JVM aussi sur la plateforme <a rel="noopener" target="_blank" href="http://getakka.net/">.net</a>. Si le pattern des actors vous intéresse, vous pouvez regarder <a rel="noopener" target="_blank" href="https://en.wikipedia.org/wiki/Actor_model#Actor_libraries_and_frameworks">ce qu'il existe pour votre langage favori</a>.</li>
<li><a rel="noopener" target="_blank" href="http://cfp.devoxx.fr/2016/talk/JEE-4171/100%25_Stateless_avec_JWT_(JSON_Web_Token)">100% Stateless avec JWT (JSON Web Tokens</a> : les <a rel="noopener" target="_blank" href="https://jwt.io/">JSON Web Tokens</a> 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 <a rel="noopener" target="_blank" href="https://stormpath.com/blog/build-secure-user-interfaces-using-jwts/">Stormpath</a> et <a rel="noopener" target="_blank" href="https://auth0.com/learn/json-web-tokens/">Auth0</a>.</li>
<li><a rel="noopener" target="_blank" href="http://cfp.devoxx.fr/2016/talk/BAX-3287/Hadoop_a_grande_echelle_:_comment_croitre_sur_le_long_terme">Hadoop à grand échelle : comment croitre sur le long terme ?</a> : 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
<ul>
<li>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.</li>
<li>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.</li>
<li>La gestion des utilisateurs pour savoir qui (a) fait quoi et accompagner les utilisateurs du cluster</li>
<li>La nécessité de tout automatiser ! Avec 2000+ noeuds, pas le choix. Idem pour les utilisateurs !</li>
<li>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.</li>
<li>Passage de 200 à 2600 serveurs en 2 ans.</li>
<li>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.</li>
</ul>
</li>
<li><a rel="noopener" target="_blank" href="http://cfp.devoxx.fr/2016/talk/ZGV-0818/Systemes_distribues,_scotch,_bouts_de_ficelle_et_doigts_croises_:_une_histoire_du_Streaming_a_Criteo">Systèmes distribués, scotch, bouts de ficelle et doigts croisés : une histoire du streaming à Criteo</a> - (<a rel="noopener" target="_blank" href="https://speakerdeck.com/abolibibelot/duct-tape-streaming-at-scale">Duct-tape streaming at scale (slides)</a>). 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.</li>
</ul>
<h3 id="cote-front">Coté Front</h3>
<ul>
<li><a rel="noopener" target="_blank" href="http://cfp.devoxx.fr/2016/talk/OYI-4243/Conquerir_le_desktop_avec_Electron">Conquérir le desktop avec Electron</a> : <a rel="noopener" target="_blank" href="http://electron.atom.io/">Electron</a> 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.</li>
<li><a rel="noopener" target="_blank" href="http://cfp.devoxx.fr/2016/talk/ZIT-7148/Vue.js_une_alternative_plus_simple_que_React.js_et_Angular2_%3F">Vue.js, une alternative plus simple que React.js et Angular2</a> : <a rel="noopener" target="_blank" href="https://vuejs.org/">Vue.js</a> 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 <code>$http</code> 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 (?).</li>
<li><a rel="noopener" target="_blank" href="http://cfp.devoxx.fr/2016/talk/XCB-5887/Modulariser_votre_JavaScript_avec_JSPM_et_SystemJs">Modulariser votre JavaScript avec JSPM et SystemJs</a> ; 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.</li>
</ul>
<h3 id="cote-bonnes-pratiques">Côté Bonnes pratiques</h3>
<ul>
<li><a rel="noopener" target="_blank" href="http://cfp.devoxx.fr/2016/talk/VWX-3520/L'odyssee_du_Continuous_Delivery">L'odyssée du Continuous Delivery</a> ; 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 <em>release train</em>, <em>feature toggling</em>, etc).</li>
<li><a rel="noopener" target="_blank" href="http://cfp.devoxx.fr/2016/talk/CXS-8731/Living_Documentation_:_vous_allez_aimer_la_documentation_!">Living Documentation : vous allez aimer la documentation !</a> :
<ul>
<li>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.</li>
<li>Lire la documentation doit permettre de comprendre le métier.</li>
<li>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.</li>
<li>Nécessité de séparer la documentation stable (<em>evergreen documentation</em>) de la documentation instable. Pour cette documentation instable, possibilité d'utiliser le <em>BDD</em> (Behaviour Driven Development) qui, au travers d'un scénario, formalise une intention, des exemples concrets et les exceptions le cas échéant.</li>
<li>La documentation peut être au milieu du code (commentaires, annotations, etc) et elle est générable par automatisation.</li>
<li>Au final, l'auteur cherche à montrer qu'une bonne documentation permet d'améliorer le design de son application et réciproquement.</li>
<li>Côté outil et <em>BDD</em>, on parlera surtout de <a rel="noopener" target="_blank" href="https://cucumber.io/">Cucumber</a> et <a rel="noopener" target="_blank" href="http://www.picklesdoc.com/">Pickles</a>.</li>
</ul>
</li>
</ul>
<h3 id="cote-nouveaux-horizons">Côté Nouveaux horizons</h3>
<ul>
<li><a rel="noopener" target="_blank" href="http://cfp.devoxx.fr/2016/talk/SMP-6581/La_Blockchain_en_detail">La blockchain en détail</a> : une présentation progressive sur les principes, la technologie et les enjeux de la blockchain au travers notamment du bitcoin et d'<a rel="noopener" target="_blank" href="https://www.ethereum.org/">ethereum</a>. A regarder absolument pour mieux comprendre ce nouvel écosystème, en plus de consulter le site <a rel="noopener" target="_blank" href="https://blockchainfrance.net/">Blockchain France</a>.</li>
</ul>
<p>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 !</p>