Architecture Découplage, découplage, découplage ! : revue de 3 méthodes de découplage (format, localisation, temporalité) pour vos programmes avec forces et faiblesses de chacun. 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 AWS – Séparer la production du développement : article sur le séparation et la gestion des accès à une équipe de développement au sein d’AWS. AWS – Pourquoi devez-vous créer un VPC ? : 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. Saga de l’été : E01 Construction d’une infrastructure multi-cloud, Saga de l’été : E02 Découverte de service et répartition de charge multi-cloud et Saga de l’été : E03 Mon orchestrateur de conteneurs multi-cloud : 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. Les architectures Serverless : 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. 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 Hi, my name is README! - WriteTheDocs 2017 : bonnes (et mauvaises) pratiques sur la rédaction du fichier README qui est le point d’entrée sur votre projet. 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 On React and Wordpress : Suite aux histoires de licence autour de celle de ReactJS et de la fondation Apache interdisant aux projets qu’elle héberge d’utliser React, 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. 3 Points to Consider before Migrating Away from React Because of Facebook’s ‘BSD+ Patent’ License : 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. Relicensing React, Jest, Flow, and Immutable.js : 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 si cela ne serait pas pire. 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 Geofile: Getting Started with pgRouting et Geofile: Getting Started with pgRouting using Esri Shapefiles: pgRouting est une extension Postgres s’appuyant sur l’extension géospatiale PostGIS 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. The MySQL High Availability Landscape in 2017 : the elders, the adults and the babies : panorama des solutions de haute disponibilités avec MySQLdepuis les solutions historiques jusqu’au plus récentes. Streaming The canonical new book about stream processing : une nouvelle ressource sur le streaming via les équipes de Google Cloud Platform. Pas encore lu mais semble intéressant. Vie du développeur Le demi-cercle (épisode 1), Le demi-cercle (épisode 2 : voir et avancer), Le demi-cercle (épisode 3 — Communication Breakdown) , Le demi-cercle (épisode 4 — Driver / Navigators) , Brown Bag Lunch, Conseils à emporter, Crise / Opportunité, Le 5ème étage, Que faire ?, Soit… soit…, Boites et flèches, Le prochain copil, la faille, Poussière, L’hypothèse et la règle Déplacements, Jouer et Ranger, Arrangements : 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… The Art of Pull Requests : des bonnes pratiques pour mener des pull requests de façon bienveillante. Web The State of the Web avec son transcript : Etat des lieux et bonnes pratiques sur les différentes sujets liés au plateformes web (webperf, optimisation, outils, etc). Chrome to force .dev domains to HTTPS via preloaded HSTS : 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. HTTP Immutable Responses : nouvel argument immutable pour l’entête Cache-Control 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. Fiabiliser les connexions sécurisées avec HSTS (HTTP Strict Transport Security) : 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.
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 Déployer son infrastructure Google Cloud Platform grâce à Terraform : Introduction à Terraform, l’outil de provisionning d’infrastructure développé par HashiCorp dans un contexte Google Cloud. D’ailleurs Terraform 0.9 vient de sortir. Terraform & Scaleway - Getting Started : un autre exemple d’utilisation de Terraform assez bien expliqué dans un contexte Scaleway IT Landscape for sysadmins : Panorama des solutions et outils opensource à usage des profils sysadmin/devops regroupés par catégories. Tutorial: How to test your docker image in half a second : Ce tutoriel montre comment tester le bon fonctionnement d’une image docker via l’outil goss. Goss, une alternative à serverspec, permet de tester et valider la configuration d’un serveur ou d’un container dans le cas présent. Announcing Longhorn: an open source project for microservices-based distributed block storage : Rancher sort le projet Longhorn, 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. RancherOS Hits General Availability : la mini-distribution Linux optimisée pour lancer des containers Docker, Rancher OS, sort en version GA. 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 What’s new in Angular 4? ou Angular 4.0: La version 4.0 vient de sortir, revue des nouveautés et des changements pour ceux qui s’intéressent (encore) à AngularJS. 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 How we Upgraded a 22TB MySQL Cluster from 5.6 to 5.7 (in 9 months) : 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. Postgres https://github.com/begriffs/postgrest : Pour permettre de mettre une API Rest devant votre base Postgres. Un écosystème existe autour de cette solution pour facilement l’intégrer dans votre projet. Python Python’s Instance, Class, and Static Methods Demystified : Tout est dans le titre ! Je connaissais peu les “class methods” et “static methods”. Cela aurait pu m’être utile pour mon précédent projet ! Building microservices with Python (Part 1, Part 2, Part 3) : un récit assez complet pour batir un microservice s’appuyant sur Flask. Les autres outils intéressants sont connexions (API, oAuth, OpenAPI Specs), Flask-injector pour l’injection de dépendance et fastavro
Nouvelle année, nouveau format - au programme une édition mensuelle mixant brèves et des choses plus construites/élaborées (j’espère le mois prochain) En Bref API Specifications and APIs : Réflexion sur la génération automatique de la doc d’une API avec ses avantages et inconvénients et l’idée qu’une API est avant tout un contrat passé entre son producteur et ses consommateurs. Le design d’API REST, un débat sans fin ? (Guillaume Laforge, Devoxx FR 2016) : Revue des composants d’une API, des status code et autres bonnes pratiques. RAML une autre façon de concevoir vos APIs RESTful (Sébastien LECACHEUR, Devoxx FR 2016) : RAML, Restfull API Markup Language, est un moyen de décrire une API. Au-delà de la specs, il y a tous les outils pour concevoir, bâtir, tester, documenter et partager son API. La vidéo permet de faire un tour des capacités de RAML. ARM / RPi Setup Kubernetes on a Raspberry Pi Cluster easily the official way! : Kubernetes, la solution d’orchestration de conteneurs, devient de plus en plus utilisable sur un enrionnement ARM (Raspberry, etc). Il faut que je réessaie ça sur mon Picocluster ; les derniers essais n’étaient pas très probant mais je n’avais pas utilisé apparemment le bon driver réseau (ie flannel et non pas weave pour ARM comme indiqué dans le billet). HypriotOS 1.2 avec Docker 1.13 est également disponible pour vos RPi. Big Data Databricks and Apache Spark 2016 Year in Review : Databricks, l’éditeur de Spark, fait sa revue de l’année 2016 et des apports significatifs réalisés sur Spark : Support SQL, Structured Streaming, Spark 2.x. Introduction to Kafka Streams with a Real-Life Example : l’auteur montre les limites de la combinaison Kafka+Spark (j’en ai vécu une partie) et propose son retour d’expérience sur la migration vers Kafka Streams (et conforte l’opinion que j’avais). Reste la problématique du monitoring de Kafka Streams à améliorer même si des solutions adhoc sont listées. Towards a realtime streaming architecture : dans la continuité du billet précédent, retour d’expérience d’une entreprise passant de Spark+Kafka à Kafka, Kafka Streams, Kafka Connect et Akka pour faire du vrai streaming (et pas du micro-batch). Intéressant de voir qu’ils jugent Flink trop complexe pour le moment au regard de leurs besoins. Globalement, l’article montre le problème récurrent dans une architecture big data de la maitrise de l’ensemble des composants pour bien les faire fonctionner. Confluent, en apportant Kafka Streams et Kafka Connect autour de Kafka, semble avoir trouver le bon créneau combinant (une relative) simplicité technologique et performance. CLI A shell command to create JSON: jo Container & Orchrestration Rancher v1.3: Experimental Windows Containers Support Understanding Docker Networking Drivers and their use cases : si le mode bridge est connu de fait, la description d’overlay et de macvlan valent le détour. Containerus Bellum, ou la chronique des hostilités dans l’écosystème Docker : résumé, panorama et perspectives de l’écosystème des conteneurs et des solutions d’orchestration. Si vous n’avez pas suivi le sujet en 2016, cela vous fait une belle synthèse. Introducing Docker 1.13 : Diverses améliorations au programme avec notamment une uniformisation de la ligne de commande. Ce qui m’intéresse le plus c’est de pouvoir m’appuyer sur un fichier docker-compose pour déployer des containers dans un cluster docker swarm. Des améliorations de commandes, quelques autres nouvelles fonctionnalités et la sortie du mode beta pour Azure & AWS sinon. DevOps 10 astuces Ansible : revue de 10 bonnes pratiques concernant l’outil d’automatisation Ansible. Il me manquait la personnalisation du logger et de ansible.cfg Elasticsearch Numeric and Date Ranges in Elasticsearch: Just Another Brick in the Wall : Elastic (5.2) permet maintenant de définir des index liés à des plages concernant les nombres (entier, flottant, long, double) et les dates. Reste plus qu’à requêter sur ces index. Opinions Tools & Teams : au-delà du “Utiliser le bon outil pour la bonne tâche”, c’est surtout d’utiliser les outils avec lesquelles une équipe est efficace à un instant donnée. La vision a long terme étant d’aller au-delà des outils vers les concepts afin d’avoir une compétence/expérience qui s’affranchit plus facilement des outils (qui ne sont pas éternels). Postgres Simple but handy postgresql features : Sympa le \watch ou jsonb_pretty pour respectivement surveiller le résultat d’une requête et affichrer proprement une donnée au format JSON. Python Records, SQL for Humans : comme tous les projets de Kenneth Reitz (requests, maya, etc), une API simple pour manipuler des données (ici des requêtes SQL) pytz : World Timezone Definitions for Python - permet de faire des calculs sur les dates, la librairie gérerait également les heures d’été/d’hiver dans les calculs. Announcing Pipenv! : Vous réviez d’un outil combinant pip et virtualenv et avec des options supplémentaires, Kenneth Reitz l’a fait durant un week-end… Sécurité Web Security 101 : présentation des principaux concepts, des cas d’exemples et des moyens de se prémunir. Introducing support for Content Security Policy Level 2 : Microsoft Edge se dote du support de niveau 2 de Content Security Policy (CSP) afin de permettre au propriétaire d’un site de mieux protéger ses clients en déclarant les ressources autorisées ou pas. Github’s Post CSP Journey : retour des équipes de Github sur l’implémentation de CSP et les points encore à adresser (spoiler : non, CSP n’est pas l’arme ultime). Ces points sont peut être des cas marginaux pour des sites classiques mais pas pour Github. Intéressant à lire. Web Foundation for Sites 6.3 - A Little Bit Naughty and A Whole Lotta Nice! How much data should my Service Worker put upfront in the offline cache? : si les service worker permettent de faire du cache applicatif coté navigateur, Nicolas pose la question de la stratégie de cache associée. Réflexion utile… From ReactJS to React-Native, what are the main differences between both? : Pas tout à fait web, mais comparaison intéressante sur les différences entre un projet ReactJS et un projet React-Native.
Docker La version 1.12 apporte son lot de nouveautés : Docker 1.12: Now with Built-in Orchestration! ; une version “améliorée” de swarm est intégrée nativement dans Docker ; en gros Docker s’orchestre lui-même. Announcing the Docker for Mac and Windows Public Beta : après une phase de béta privée, une phase de béta publique. Introducing the Docker for AWS and Azure Beta : dans la même veine que Docker for Mac/Windows, une solution rapide pour monter un environnement docker sur AWS/Azure ; en s’appuyant bien sûr sur les capacités d’orchestration de Docker 1.12. Introducing Experimental Distributed Application Bundles ; là encore, on peut le voir comme une version améliorée de docker-compose et l’idée est de pouvoir déplaoyer des applications sous la forme d’un “bundle”. More Microservices Bliss with Docker 1.12 and Swarm only : l’article permet d’avoir un avant/après pour mieux comprendre les apports de la 1.12 et voir en quoi elle simplifie la gestion du cluster et le déploiement d’application. Il semblerait que consul ait disparu à moins que pour le moment seul la création d’un cluster par token soit supporté. Je nuancerai également le point sur l’absence de besoin d’un reverse proxy, si cela peut ne pas être nécessaire dans une logique de laboratoire, pour de la production, cela me semble nettement plus discutable. How to use Docker 1.12 Built-In Orchestration and Service Creation : un autre exemple sur les apports de la version 1.12 Introducing the Docker Store Private Beta : Docker lance une market place, version améliorée de Docker Hub permettant aux distributeurs de logiciels d’avoir un nouveau canal de diffusion et un certain nombre de services (sécurité, conformité de licences, etc) Xebian était présent à la DockerCon 16 : compte-rendu en français de la conférence par Xebia. OrientDB Pattern matching with OrientDB : pour un cas d’usage d’une connaissance, nous avons investigué les données Graph comme OrientDB pour matérialiser des relations et des inter-connexions. Le billet montre comment via des requêtes SQL on peut parcourir le graph et définir des pattern. HTML/JS/CSS Comparaison de plugins JS : les select widgets ; “Beaucoup de plugins existent pour rendre plus beaux ou plus pratiques les éléments HTML select, petite comparaison pour choisir le bon” Streams Apache Kafka and Kafka Streams at Berlin Buzzwords ; la CTO de Confluent a fait un tour d’Europe où elle présente Kafka, Kafka Connect et Kafka Streams et surtout sa vision du Stream processing et les impacts que cela a sur notre façon de développer des applications et consommer de la donnée. Ils ont une approche assez pragmatique du sujet, l’ayant mis en place notamment chez LinkedIn et chez d’autres clients. Why Apache Beam ? : Beam est un projet Apache et la version Open Source de ce qu’a implémenté Google pour sa plateforme Google Cloud Data Flow. C’est un modèle de programmation pour traiter de la donnée dans une logique de streaming. Le billet porte sur l’intégration de Beam dans Flink (un moteur de processing temps réel). De quoi voler la vedette à Spark Streaming ?
On orchestre, on conçoit — et on code aussi. Parlons de votre plateforme, vos données ou votre projet IoT.
Contactez-nous →