Docker

27/09/2017

Web, Ops & Data - Septembre 2017

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.

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

Web, Ops & Data - Aout 2017

Cloud Microsoft joins Cloud Native Computing Foundation : Microsoft continue à embrasser l’open source et cela se traduit par l’annonce indiquant que la société rejoint la Cloud Native Computing Foundation. Cette fondation héberge des projets comme Kubernetes et ses composants, ainsi que plus récemment les solutions de conteneurisation utilisée par Docker et CoreOS (containerd, rkt). Amazon (AWS) rejoint la fondation également. AWS Lambda vs. Azure Functions vs. Google Functions : un rappel sur le fonctionnement des architectures serverless et des principales fonctionnalités de chacun des fournisseurs (AWS, Google, Microsoft) AWS Summit New York – Summary of Announcements : retrouver les annonces et la keynote du AWS Summit de New York. Container & Orchestration Kubernetes at Github : retrospective de la migration de Github vers Kubernetes. Announcing the New Release of Docker Enterprise Edition : au programme de cette version 17.06, notamment le support multi-architecture (Linux,Windows 2016, IBM Z Systems) qui devrait lever les limites identifiées de mon retour sur docker dans un contexte hybride Linux/Windows. Cette version apporte également des améliorations coté sécurité (gestion de rôles, etc) Documentation Read & Write The Doc : les slides d’un talk donnant de bonnes pratiques sur la manière et les pratiques à adopter/éviter en matière de documentation. Elasticsearch Installing the Elastic Stack on Windows : Dans le cadre de la sortie de Elasticsearch 5.5, le support de l’installateur Windows est officiel. Ce billet montre comment installer Elasticsearch, Kibana et Filebeat sous un environnement Windows. Taking A Look At Kibana’s Time Series Visual Builder : la future version 6 de Kibana va se doter d’un visualisateur orienté données temporelles (time series). L’auteur du billet rappelle que c’était un point faible de Kibana jusqu’à présent (vis à vis de Grafana notamment), que les essais avec Timelion ne répondaient que partiellement à ce besoin mais que là, Elastic semble être sur le point de rattraper son retard. A évaluer même si une plateforme TICK+Grafana (Telegraf, InfluxDB, Chronograf, Kapacitor) demandera moins de ressources qu’une stack Elastic/Kibana avec certes des capacités d’indexation moins forte mais le besoin n’est pas forcément là… Elasticsearch: la grande migration : retour d’expérience des équipes Tech de M6 Web sur la migration de leur cluster Elasticsearch de la version 1.7 vers 5.2. Small, Medium, or Large - Scaling Elasticsearch and Evolving the Elastic Stack to Fit : Elastic publie un billet intéressant donnant différents types de configuration & architectures pour des besoins autour d’ELK allant de simple à très complexe et fournir des pointeurs vers différentes ressources utiles. Starting Down the Path of APM for the Elastic Stack : les prémices de la fonctionnalité APM (Application Performance Monitoring) d’Elastic suite au rachat d’Opbeat. Pour le moment, il s’agit de la pré-sortie des version serveurs et des clients ; pour la nouvelle UI, il va falloir attendre encore un peu mais des dashboards sont déjà accessibles via Kibana. Introducing Index Sorting in Elasticsearch 6.0 : Dans sa version 6.0 à venir, il sera possible de définir des index triés dans Elasticsearch. Cette définition du tri se fera lors de la création de l’index. Si cela doit permettre de sortir des résultats plus rapidement, dans certains cas, cela peut pénaliser sérieusement la performance d’Elasticsearch. A utiliser à bon escient ! Full Stack Développeur full stack ? Oui… mais… : enfin un bon article démystifiant le concept parfois fumeux de “full-stack” : “Quand nous parlons de profil full stack, cela signifie que le développeur est spécialisé dans certains domaines, tout en ayant des connaissances sur d’autres sujets. En général, nous considérons un développeur full stack comme maîtrisant au moins 3-4 sujets. Mais cela ne couvre pas l’ensemble des besoins.” NoSQL Announcing RethinkDB 2.3.6: the first release under community governance : après l’annonce de la mort de la société commerciale et la transition vers la Linux Foundation, une version de maintenance qui fait plaisir à voir en espérant que le projet continuera à évoluer par la suite. Un sacré premiers pas et une version 2.4 est annoncée dans les tuyaux ! Open Web Firefox, le Web et la fin de Flash (versin anglaise) : 2020, ce sera enfin la fin de Flash, Adobe l’a décidé et s’est concerté avec les éditeurs de navigateurs pour gérer sa fin de vie. La même annonce, coté Microsoft pour IE/Edge, Google pour Chrome et Apple pour Safari/Webkit Sécurité API Security Checklist : une check-list pour les aspects sécurité d’une API qui reprend les principaux points: authentification, traitement des entrée/sorties, infrastructure, etc. CSP Cheat Sheet : Une page de présentation rapide et consise des options de configuraiton liée à CSP (Content Security Policy) Revocation is broken : excellent billet sur les problèmes liés à la révocation de certificats et les nouvelles pistes à venir pour mieux traiter ce sujet. I’m giving up on HPKP : l’auteur explique en quoi HPKP (HTTP Public Key Pinning) est compliqué et dangereux à mettre en place ; à la fin, le jeu n’en vaut pas la chandelle et qu’il vaudrait mieux ne pas tenir compte de cette pratique pour donner une bonne note aux configurations de sécurité des sites web. Il indique aussi les alternatives à venir et leurs avantages sur la solution actuelle. Web Performance Performance des tiers : combien coûte cet emplacement pub ? : les impacts en termes de performance mais aussi de sécurité (vol de données, etc) de l’utilisation de script tiers sur votre site.

cloud docker microsoft aws cncf lambda serverless kubernetes linux windows elasticsearch kibana index search fullstack rethinkdb flash openweb api sécurité checklist certificat hpkp revocation performance tiers publicité
26/07/2017

Web, Ops & Data - Juillet 2017

API Versionning d’API, Zero Downtime Deployment et migration SQL : théorie et cas pratique : un retour d’expérience bien illustré sur la migration d’une API avec changement de modèle de données et ce sans downtime. Les principaux points d’écueil et les stratégies possibles sont présentées. A vous d’adapter ensuite à votre contexte. Cloud Choosing the right compute option in GCP: a decision tree : Google fourni un arbre de décision pour la/les solution(s) à utiliser sur CGP pour votre prochain projet. Mapping AWS, Google Cloud, Azure Services to Big Data Warehouse Architecture : panorama des solutions Opensource et des implémentations Cloud (AWS, GCP, Azure) pour différents besoins autour des traitements de données (ingestion, stockage, streaming, batch, machine learning, etc) Map AWS services to Google Cloud Platform products : les correspondances entre les services AWS et GCP. Map Microsoft Azure services to Google Cloud Platform products : la même carte en version Azure / GCP Container & orchrestration Kubernetes 1.7: Security Hardening, Stateful Application Updates and Extensibility : nouvelle version de Kubernetes avec son lot d’améliorations coté sécurité (communication réseau, gestion des secrets, etc) et stockage principalement. Announcing Docker 17.06 Community Edition (CE) : cette version apporte essentiellement le multi-stage builds, à savoir la capacité de construire une image docker à partir de plusieurs conteneurs intermédiaires. Ces conteneurs intermédiaires permettent par ex de compiler les différents éléments d’un programme. Pour un programme en go par ex, on peut imaginer un premier conteneur qui build le programme à partir des sources et le conteneur final ne contient que le binaire go. Documentation Making history: writing the docs that need to be written : l’auteur explique l’intérêt qu’il voit à documenter les choses, à raconter l’histoire à l’aune de son expérience sur le projet RabbitMQ. Du partage de connaissance, expliquer les raisons et les logiques de développement, éviter de refaire les mêmes erreurs ou encore la capacité d’accueillir de nouveaux membres dans le projet, je rajouterai le fait de pouvoir oublier ce qui a été fait. En effet, une fois documenté, on peut revenir sur le sujet facilement et libérer sa mémoire pour d’autres sujets (et éviter la dépendance à sa personne). Frontend Why Angular 2/4 Is Too Little, Too Late : “AngularJS was a decent idea in 2012 but in 2017, the JS ecosystem has surged past Angular in maturity, flexibility, and productivity. Thanks to webpack, NPM on the front-end, and a mature ecosystem of tooling and libraries, it is quite easy to maintain a large, flexible, well-engineered SPA with React, Vue, or other lightweight JS libraries, even at enterprise companies with large teams” Tout est dit, React a gagné. Management Combien de développeurs mettre sur un projet : Si la réponse est le moins possible et idéalement un seul, l’intérêt de l’article porte surtout sur le fait de mesurer la productivité au niveau de l’entreprise et plus au niveau du projet. Ce qui change la perspective… La frugalité, le graal de l’entreprise innovante : faire simple (KISS), garder le focus (MVP), en petites équipes autonomes et responsables (agile, lean), prioriser (kanban, agile, lean), et aller à l’encontre des habitudes du toujours plus de ressources / complexité / … et qui sont au final votre véritable ennemi et ne vous garantissent pas le succès de votre projet. Redis Episode 41 : Redis avec Damien Krotkine : un épisode thématique de Big Data Hebdo, le podcast autour du big data, sur la solution Redis. Sécurité How to revoke a Let’s Encrypt certificate : s’il est aisé d’obtenir de nouveaux certificats avec Let’s Encrypt, il peut y voir des cas où l’on veut révoquer un certificat. Le billet explique comment procéder. Wildcard Certificates Coming January 2018 : Let’s Encrypt va fournir des certificats wildcard (*.domaine.tld) à compter de Janvier 2018, et ce gratuitement. Vie Privée GDPR, les actions indispensables de conformité (étude longue) : le billet rappelle les changements de contexte qui ont conduit à ce nouveau réglement. Il parcourt les principales obligations et sensibilise sur les différents sujetS. (dommage que les actions de la souris (séléction, click-droit, etc) soient interdits sur le site…) GDPR dans la pratique : un autre épisode de Big Data Hebdo consacré à la GDPR avec une revue de la réforme à venir avec des bonnes pratiques et aussi pour une fois une présentation de cette réforme comme étant une opportunité. La CNIL propose d’ailleurs un guide en 6 étapes et un guide pour les professionnels indiquant les changements et impacts à venir.

api cloud gcp aws azure microsoft kubernetes docker documentation angularjs management redis sécurité gdpr
15/05/2017

Docker, dans un contexte hybride Windows et Linux

Suite à une mission, synthèse sur la possibilité à date de gérer des conteneurs Linux et Windows avec Docker. Contexte Les tests ont été réalisés, début mai 2017, sur les environnements suivants : VM Ubuntu 16.04 LTS, à jour, avec Docker 17.03-ee VM Windows Serveur 2016, à jour, avec Docker 17.03-ee. En début de mission, il était supposé qu’une application métier en C# pourrait migrer vers ASP.net Core (la version opensource de .Net et sa déclinaison ASP) et donc sur un conteneur Linux. La suite nous prouva que toutes les APIs ne sont pas (et ne seront pas forcément) dans la version opensource de .Net et qu’il nous fallait envisager des conteneurs Windows à court terme et une infrastructure hybride Windows & Linux, tant au niveau des hôtes que des conteneurs.

docker swarm container windows linux
29/03/2017

Web, Ops & Data - Mars 2017

Admin Sys l y a un poisson dans ma coquille ! : J’avais fait il y a quelques années un détour par le shell zsh via “Oh My ZSH” mais je n’étais pas allé bien loin, revenant au final au bon vieux bash. L’article m’a donné envie d’essayer fish et pour le moment, je trouve ça plutôt pas mal. Ne pas se fier à la première impression du site :) Pour faire fonctionner virtualenv(wrapper) avec Fish: VirtualFish Pour enrichir votre Fish, vous pouvez vous appuyer sur fisherman ou le projet oh-my-fish Containers Adventures in GELF : où l’on apprend notamment que les logs sont par défaut au format JSON et surtout qu’il n’y a pas de rotation des journaux par défaut :’( ; l’article montre ensuite les intérêts du format GELF (avoir un message sous la forme d’un dictionnaire/tableau au format clé/valeur) et les limites (connextion UDP) avec les solutions de contournement actuelles et les solutions à venir prochainement. Announcing Docker Entreprise Edition : Docker Inc annonce une version “Docker Community Edition” et une version “Docker Entreprise Edition” (avec support). Il y aura désormais une version stable trimestrielle (avec changement de versionning à la Ubuntu : YY.MM et une politique de support de 4 mois) ou une version “bleeding edge” mensuelle pour la version communautaire (support mensuel). Pour la version entreprise, c’est trimestrielle avec 1 an de support & maintenance. Docker Inc se dote également d’un programme de certification pour la partie matérielle, système sous jacent, les plugins et les conteneurs en eux même. Une réponse notamment fait à Docker de trop changer le comportement de docker et de ses composants/fonctionnalités d’une version à une autre. CoreOS a l’intention de donner rkt à la Cloud Native Computing Foundation qui hébergedéjà de nombreux projets cloud dont Kubernetes. Docker Inc va faire de même avec containerd. Si le billet de CoreOS laissait penser un travail commun, le billet de Docker ne me donne pas cette impression. Donc a priori chacun va travailler de son côté et on regarde qui sort vainqueur à la fin ? La guerre des containers n’est pas finie… From dotCloud to docker : Une retrospective sur l’histoire de Docker. Cloud Google Cloud Platform: your Next home in the cloud : Google avait jusqu’à présent plutôt un positionnement de marché de niche où pour aller sur leur cloud il fallait adopter leurs produits. Avec la Conférence Google Cloud Next 2017, s’opère un sacré changement et que Google semble revendiquer : devenir un acteur global du cloud et être en mesure d’accompagner ses clients sur l’ensemble de leurs sujets. S’il ne fallait qu’un exemple, je pendrais bien celui de la certification de SAP HANA sur GCP. On notera aussi l’arrivée de Postgresql en service managé, de nouveaux langages pour App Engine, etc. Je vous laisse trouver les nouveautés mais pour moi la nouveauté est ce changement de positionnement de Google. Les autres fournisseurs de cloud ne doivent pas forcément être ravis de ce changement ; reste à voir si Google convaincra les autres clients. Si par ailleurs, les clients sont déjà chez Google Suite, on peut imaginer qu’ils passent plus aisément dans Google Cloud pour n’avoir qu’un fournisseur… 100 announcements from Google Cloud Next 17 : la liste complète des 100!! annonces… DevOps Site Reliability Engineering : le terme de Site Reliability Engineering (SRE) prend de plus en plus d’ampleur depuis quelques mois. Un SRE est une personne avec un profil plutôt développeur mais qui est aussi à l’aise sur la partie “opérations” et donc en mesure d’assurer l’exploitation de son application (avec les incidents liés) ; il travaille donc sur les 2 tableaux pour son application. Google partage dans ce livre son expérience de la mise en place de ses équipes SRE pour une partie de leurs produits. GraphQL Use all the databases - part1 et Use all the databases - part 2 : Deux billets présentant GraphQL qui se veut un successeur de REST. L’article montre comment avec une seule requête faite sur un endpoint GraphQL, on peut aller récupérer des données dans plusieurs bases de données. Intéressant, mais à voir si cela n’est pas trop magique et si on ne crée pas un SPOF de l’application en procédant ainsi. GraphQL Guide : site du livre en cours de préparation sur GraphQL Appolo : le client de référence sur GraphQL utilisable notamment avec React (Native), AngularJS, iOS & Android. HTML5 Managing Push Subscriptions : nouvel article d’une série sur les bonnes pratiques à adaopter lorsque l’on génère des notifications en Push via WebPush. State of Responsive Images 2017 : en version courte, c’est mieux, mais c’est pas encore tout à fait ça. Plus sérieusement, un état des lieux sur les images responsives, ce qui a été fait, les chantiers incomplets voire ratés. Javascript NPM vs Yarn : une revue assez détaillée des avantages de Yarn sur NPM. Opensource What it feels like to be an open-source maintainer, Sustainable Open Source: The Maintainers Perspective or: How I Learned to Stop Caring and Love Open Source et Time to leave : Le premier billet revient sur la difficulté et la peine à maintenir un projet open source rencontrant un certain succès. Les deux autres billets sont des réactions à ce premier billet encourgeant soit à apprendre à ne plus se soucier autant du projet, voire à quitter le projet. Des réflexions intéressantes que l’on peut appliquer aussi à sa façon de gérer un projet et la rapidité à laquelle on répond aux sollicitations de ces clients… Queues & Messages Why Messaging Queues Suck : Réflexion intéressante autour des bus de messages et de la soi-disante agnosticité des producteurs de topics vis à vis de leur consommateurs. Au final, de part les procédures de définition d’accès à un topic (dans un contexte cloud), la partie agnosticité est toute relative. Du coup, pour l’auteur, il est plus intéressant de faire des “endpoints” HTTP entre 2 services et que ce soit le client qui implémente son propre système de queue en interne. Cela mérite réflexion et peut avoir ses intérêts en fonction de votre architecture. Sécurité Announcing the first SHA1 collision : Google a annoncé la première collision obtenue avec le protocole de chiffrement SHA-1. Une collision est obtenue lorsque la signature de deux fichiers est identique, alors que théoriquement, chaque fichier devrait avoir une signature unique. Même si les conditions pour obtenir cette collision reste assez peu exploitable de part les ressources nécessaires pour le faire, la dépréciation de SHA-1 est accélérée. Par ex, Firefox, qui avait prévu de le finaliser l’abandon du support de SHA-1 avec la version 52 du navigateur vient de le faire en accéléré suite à cette publication et Google Chrome en a fait de même. Incident report on memory leak caused by Cloudflare parser bug : un bug identifié par l’équipe de Google a révélé que depuis septembre 2016 et jusqu’à fin février 2017, un composant de l’infrastructure de Cloudflare divulguait des informations sensibles (identifiants, cookies, etc) de ses utilisateurs lorsqu’il parsait des pages HTML mal formées. L’article de NextImpact l’explique bien, il faut globalement changer vos mots de passes et renouveller vos cookies pour les sites utilisant Cloudflare (une liste ici ou ce site) HTTPS : De SSL à TLS 1.3 : rétrospective et explications sur les différents mécanismes de chiffrement disponibles, leurs forces/faiblesses et l’avenir avec TLS 1.3

docker container gcp google shell fish log graphql sre push rwd responsive opensource queue message sécurité ssl sha1 npm yarn javascript
25/01/2017

Web, Ops & Data - Janvier 2017

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 arm hypriot api rest raml python csp kubernetes spark kafka stream rancher json ansible devops elasticsearch postgres timezone pip virtualenv sql service worker react foundation
21/12/2016

Web, Ops & Data - Semaine 51

Plateform TICK Beta 3 of Chronograf : Chronograf 1.1 continue son bonhomme de chemin avec la parution d’une bêta 3 apportant son lot d’améliorations et de correctifs. Container & Orchestration Kubernetes 1.5: Supporting Production Workloads : Kubernetes, dans cette version 1.5, apporte des améliorations notamment sur la gestion des applications statefull (passage d’un statut alpha à beta) et plein de choses en alpha : le support des containers windows, la fédération de cluster kubernetes, la haute disponibilité, etc. containerd – a core container runtime project for the industry : Docker Inc continue de modulariser Docker (Engine) en publiant “containerd” et en prévoyant de le donner à une fondation en début d’année prochaine. Containerd est la partie centrale d’exécution du container. Il a été déployé silencieusement depuis Docker 1.11. L’idée de containerd serait de devenir le “format” universel pour faire tourner des containers sur lequel tout le monde s’appuierait… A suivre dans la guerre des containers et des initiatives de standardisation (ou pas). An Early Look at Ansible Container v0.3.0 : Ansible 2.x permet déjà d’interagir avec les containers docker, ansible-container permet d’aller plus loin dans la gestion des containers avec ansible. Cette version apportera le support du format docker-compose v2 et le support de docker 1.12. Même si je suis parvenu à piloter des containers docker avec Ansible 2.2, j’avoue qu’il y a quelques bugs pénibles et j’ai pas forcément l’impression que ce soit la bonne façon de faire. Peut⁻être que ce module apportera des réponses ou qu’il faut repenser la chose différemment. Making Elasticsearch in Docker Swarm Elastic : Un billet intéressant sur le déploiement d’Elaticsearch dans un contexte Docker Swarm. En effet, la partie pénible est de gérer la découverte par IP des noeuds et de rendre cela accessible de l’extérieur du cluster. Le billet présente des astuces pour le faire. J’aurais bien aimé l’avoir il y a de cela 6 mois à 1 an… NoSQL Redis — The AK-47 of Post-relational Databases : une bonne présentation de la base NoSQL Redis et de toutes ses capacités. ARM Hypriot OS 1.1.2 : vos raspberry pi vont être gatés avec les dernières versions de Docker, Docker-Compose et Docker-Machine. Je détaillerai en janvier la mise en place d’un cluster docker avec Hypriot OS avec 5 Raspberry et 2 Cubietruck qui permettent d’avoir un stockage distribué/résilient avec GlusterFS. Python Maya: Datetime for Humans™ : l’auteur de l’excellent module requests qui permet de faire simplement des appels HTTP, nous fait la même chose mais pour les dates. Sympathique, même si l’auteur admet lui-même que sa librairie ne fait pas tout pour autant. Bonnes fêtes de fin d’année à tous !

docker kubernetes elasticsearch tick chronograf python date ansible redis hypriot arm
12/12/2016

Web, Ops & Data - Semaine 50

Mobile [Lecture] The 2016 U.S. Mobile App Report : Eric, sur la base des chiffres de 2016 rappelle que “[…] vouloir initier la diffusion de son produit/service par une app mobile, c’est partir avec un boulet au pied” et ce même si les statistiques de téléchargement d’applicaitons s’améliorent. Un site web adapté pour mobile sera donc suffisent à court terme (voire tout court), faudrait juste simplifier la création d’un raccourci sur la page d’accueil pour mettre son site mobile au même niveau qu’une application préférée… Container & Orchestration Rancher 1.2 Is Now Available! : En plus d’apporter la compatibilité avec les dernières versions de Docker (Swarm), Docker-Compose et Kubernes, cette version apporte un meilleur support des plugins réseaux et stockage de Kubernetes & Docker, ainsi qu’une amélioration de la haute disponibilité, de la gestion du cycle de vie de ses applications et une nouvelle politique de sortie de version avec un rythme mensuel. Docker acquires Infinit: a new data layer for distributed applications : En faisant l’acquisition d’Infinit (société française !), Docker semble vouloir promettre un stockage distribué notamment pour les composants statefull (base de données, logs, etc) et ce de façon sécurisée (au sens sécurité ou résilience, cela n’est pas encore précisé). Mode de travail La revue de code bienveillante : l’article revient sur les bonnes habitudes à prendre dans le cadre d’une revue de code pour qu’elle soit d’une part efficace pour tous et avec la bonne façon de faire. How we stay connected as a remote company : Petit retour pratique sur les habitudes prises au quotidien chez Gitlab pour gérer des équipes distantes. Packaging npm-based release workflow : Thomas décrit très clairement comment utiliser les fonctionnalités de npm pour gérer le cycle de release de son application (génération du changelog, gestion des numéros de versions, création des tags git, etc). Statistiques, logs, monitoring (et vie privée) Server Log Analysis: It’s More Important Than Google Analytics : avec le développement des bloqueurs de publicité (adblock, µblock, etc), les outils de tracking/statistiques de sites comme Google Analytics vont perder en pertinence. Il va falloir en revenir au basic et a minima compléter les statistiques Google Analytics par les stats issus de fichiers de logs de vos serveurs. Now in Beta: Chronograf, a UI for the TICK stack & a complete open source monitoring solution : Chronograf, la solution de visualisation des données de la plateforme TICK, passe de la version alpha à la version beta. Vont-ils réussir à percer ou bien est-ce peine perdu face à Grafana v4+ ? Sécurité Content Security Policy : la retranscription de la conférence donnée par Nicolas Hoffmann à Codeurs en Seine 2016 sur CSP, la couche sécurité coté navigateurs permettant d’indiquer quels ressources distantes votre site autorise ou pas.

docker rancher mobile log grafana chronograf statistique packaging npm sécurité csp
07/12/2016

Grav, Docker-Compose et Traefik

Pour un projet en cours de finalisation, j’ai utilisé le CMS Grav et j’ai décidé tant pour mon développement en local que pour l’environnement de production de déployer cela sous la forme de container docker et d’utiliser Traefik comme reverse-proxy et m’appuyer notamment sur son support natif et dynamique des containers docker. Premiers pas… J’avais initialement publié une image nsteinmetz/grav basée sur l’image officielle PHP:apache mais elle ne me convenait pas totalement : Utilisation d’apache2 alors que j’ai basculé depuis longtemps sur nginx L’image PHP:apache est basée sur Debian (taille plus importante qu’une image basée sur Alpine) Pas d’utilisation des volumes (je n’ai pas pris le temps de les déclarer) Pour mémoire et à toutes fins utiles, le Dockerfile - nsteinmetz/docker-grav :

docker docker compose traefik grav
30/11/2016

Web, Ops & Data - Semaine 48

Container & orchrestration Kompose: a tool to go from Docker-compose to Kubernetes : en cours d’incubation chez Kubernetes, ce projet permet de faciliter la transition de Docker à Kubernetes en transformant les fichier docker-compose.yml en fichiers Manifests Kubernetes. Un pivot intéressant si on considère que les développeurs vont utiliser Docker (et au mieux Swarm) pour leurs environnements de développement et en production éventuellement Swarm et ensuite vouloir migrer vers Kubernetes pour ses fonctionnalités plus évoluées. Introducing Distributed Cheese: Traefik 1.1 Camembert Is Out! : Traefik, le reverse proxy moderne qui sait s’interfacer notamment avec Docker, Consul, Kubernetes et plein d’autres est sorti en version 1.1.x. Cette version apporte notamment le support de l’API Docker Swarm (Docker 1.12+), une meilleure gestion des contraintes, le support de Mesos, une meilleure gestion des affinités de sessions, un mode cluster pour Traefik (expérimental) et une image officielle docker basée sur alpine. J’ai profité de l’installation d’un nouveau serveur pour déployer Traefik et c’est vraiment agréable de pouvoir déclarer dynamiquement ses containers docker. Par ailleurs, je rappelle que je maintiens des images docker de Traefik pour sa version ARM Docker for AWS Public Beta : l’offre Docker pour AWS passe d’une version alpha à une verion beta. On notera essentiellement qu’il s’agit d’une version plus intégrée avec l’offre AWS que si l’on déployait un docker soi-même. A suivre mais attention à vérifier qu’il n’y a pas un lock-in qui se crée à la fin, que l’intégration apporte un plus et ne nuit pas à la portabilité des containers. Dashboard, Monitoring What’s new in Grafana v4.0 : la fonctionnalité phare de cette version est la capacité de définir des alertes au niveau de chaque élément d’un dashboard. Pour se faire il faut définir les règles à appliquer et ensuite s’appuyer sur la partie notification. Pour ceux qui étaient tentés d’installer Chronograf 1.1 (béta) pour avoir cet alerting en plus des dashboards adhoc de Grafana, ils pourraient bien finalement rester dans Grafana (dont la maturité n’est plus à prouver) plutôt que d’attendre que Chronograf se stabilise… A moins que Chonograf n’apporte une valeur ajoutée de part son intégration native avec Telegraf. Pépites Si vous pensiez que toutes les villes commencent par une lettre, maintenant vous savez que c’est faux avec la ville de ’s_Herenelderen. Vous pouvez mettre vos regexp à jour ! These unlucky poeple have names that break computers : même si l’article concède que ce problème est de moins en moins vrai au fur et à mesure des progrès réalisés et de la prise de conscience par les développeurs, mais s’appeller “Null” ou avoir un nom de famille très long (36 caractères dans l’exemple donné ou même 8 au Japon quand l’habitude est de 4…), cela pose des tas de problèmes dans la vie du quotidien.

traefik docker kubernetes grafana null aws alerte monitoring dashboard reverse-proxy

Besoin d'un C(P)TO / Architecte « hands-on » ?

On orchestre, on conçoit — et on code aussi. Parlons de votre plateforme, vos données ou votre projet IoT.

Contactez-nous