CérénIT

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

Web, Ops & Data - Aout 2018

dockerkubernetescassandrareaperistioservice-meshcloudopensourcerediskafkamysqlpostgresconfluentopenmetricsprometheusfluxlanginfluxdbtimescaledb

Cloud & Open Source

Container et orchestration

(Big) Data & (No)SQL

  • Reaper 1.2 Released : l'outil de gestion des "réparations" des données d'un keyspace Cassandra, initialement réalisé par Spotify et désormais maintenu par The Last Pickle, vient de sortir en version 1.2 avec son lot d'améliorations. Pour un client, il a été déployé, ce qui me permet de pouvoir contribuer modestement (#472, #473, #474)
  • Re-Bootstrapping Without Bootstrapping : que faire lorsqu'un noeud d'un cluster Cassandra est sorti depuis plus longtemps que le temps de grace défini ? Le billet répond à la question pour ne pas repartir de zéro et le faire de façon "marginale".
  • Introducing Confluent Platform 5.0 : à l'occasion de la sortie d'Apache Kafka 2.0, une nouvelle version de la plateforme Confluent sort également avec les dernières nouveautés de KSQL, des améliorations coté stabilité/sécurité (Auth LDAP, Disaster Recovery, etc). Allez lire les notes pour en savoir plus et voir ce qui relève de la version 0SS et de la version Entreprise.
  • Showdown: MySQL 8 vs PostgreSQL 10 – Hacker Noon : l'article confirme qu'avec MySQL 8.0, MySQL rattraperait Postgres au niveau des grandes fonctionnalités de base.

DevOps

  • The Site Reliability Workbook : Google sort un complément à son livre "Site Reliability Engineering". Le livre est sensé donner des conseils pratiques ou partager des eemples issus de la réalité dans le cadre de la mise en place d'une démarche SRE.

Timeseries

  • Querying Prometheus with Flux (video - slides) : Paul Dix, CTO d'InfluxData, montre comment il est possible de requêter des données issues de Prometheus via Flux, le nouveau langage qu'InfluxData est en train de créer et dont l'objectif est de pouvoir manipuler des données temporelles. Ce cas permet de montrer l'utilisation de Flux dans un contexte autre qu'InfluxDB.
  • CNCF to Host OpenMetrics in the Sandbox : OpenMetrics est une initiative de standardisation des formats de métriques - le projet rentre donc dans l'initiative de la CNCF.
  • OpenMetrics to Join the CNCF ; Paul Dix a annoncé le support de ce format comme "citoyen de première classe" pour une version ultérieure d'InfluxDB. Le billet fait l'état des lieux du support au niveau de Telegrad et de Kapacitor.
  • Prometheus Graduates Within CNCF : toujours coté CNCF, Prometheus, la plateforme de métriques, est le second projet (après Kubernetes) à passer au niveau officiel.
  • TimescaleDB vs. InfluxDB: purpose built differently for time-series data : Comparaison par les gens de TimescaleDB entre leur produit TimescaleDB et InfluxDB. Même s"il est forcément un peu biaisé, il reste intéressant.

Web, Ops & Data - Mars 2018

grafanatickchronografinfluxdbdatavizansiblesparkdockerkubernetescncfsupersetjavaLet's encryptpostgrespythond3.js

Automatisation

  • Ansible 2.5: Traveling space and time : au programme de cette nouvelle version : des namespaces pour les "facts", la capacité d'interdire des modules, des nouvelles "variables magiques" (les magic vars sont des variables spécifiques à Ansible et l'exécution des playbooks). On notera aussi des améliorations sur le support Windows, des nouveaux modules cloud (AWS, GCP, Azure, VMWare) et des nouveaux plugins.

Container et Orchrestration

Dataviz

Java

  • No Free Java LTS Version? : Oracle change ses pratiques de distribution du JDK Oracle (Une version majeure tous les 6 mois, moins de report de patches, etc).

Let's encrypt

  • ACME v2 and Wildcard Certificate Support is Live : Let's Encrypt va donc fournir des certificats wildcard (*.domaine.fr). Si je m'étais réjoui de l'idée au début, je ne vois finalement pas ou peu l'intérêt du fait de la méthode de validation (enregistrement DNS avec le temps de propagation associé). En dehors du cas où l'on dépassait les limites d'enregistrement de Let's Encrypt en terme de nombre de certificats, la génération dynmique et unitaire via une méthode HTTP me semble plus simple. Surtout quand on utilise Traefik ;-)

Postgres

Python

TICK

Astuce(s) du mois

J'utilise Ansible dans une logique d'IAC et pour automatiser un maximum des actions pour la gestion de l'infrastructure et des applications de mes clients. Toutefois, chaque client avait son arborescence et la réutilisation d'un composant d'un client à l'autre était fastidieuse (copier/coller).

Un premier travail a consisté à extraire les rôles commun dans un dépôt git tiers et faire des liens symboliques mais cela n'était pas très pratique. Suite à un travail chez un autre client, j'ai revu mon approche et je pars pour le moment sur la solution suivante :

  • Un dépôt "global", contenant la configuration ansible, les plugins, les playbooks, les variables d'hotes ou de groupes, l'inventaire et les rôles.
  • Pour chaque rôle, je repars sur le principe d'extensibilité du code avec un rôle générique et des extensions par clients. Il y aura donc un répertoire du nom du composant et un répertoire <composant>.<client> ou <client>.<composant> (le choix n'est pas encore arrêté). Le second répertoire contenant les éléments spécifiques au client.

Exemple avec un rôle MariaDB :

mariadb/
├── README.md
├── defaults
│   └── main.yml
├── files
├── handlers
│   └── main.yml
├── meta
├── tasks
│   └── main.yml
├── templates
│   └── my.cnf.j2
└── vars
   └── main.yml
co.mariadb/
├── README.md
├── handlers
│   └── main.yml
├── tasks
│   └── main.yml
├── templates
│   ├── my-primary.cnf.j2
│   └── my-replica.cnf.j2

Ainsi, la partie générique et la partie spécifique à mon client sont isolées. Il faut juste envisager le séquencement entre les deux rôles pour que cela se passe bien. Pour le moment, le seul code dupliqué se retrouve au niveau des handlers.

Si je devais donner accès à mes clients à leurs playbooks respectifs, il faudrait que je revois l'organisation pour ne leur donner accès qu'à leurs données. Il faudrait alors recréeer n dépots mais avec cette méthode, il est aussi facile de reconstruire a posteriori des dépots par clients depuis un dépot global. L'intérêt étant pour moi de conserver ma flexibilité et d'améliorer la réutilisabilité de mes composants.

Web, Ops & Data - Décembre 2017

accessibilitéansiblespinnakerawsreinventlambdaserverlesskubernetess3glaciersqlec2gdprkafkaelasticsearchconfluentpostgrestelegraf

Accessibilité

  • L'accessibilité n'est pas un luxe : un bon billet de rappel sur la nécessité et la relative facilité d'appliquer les bonnes pratiques d'accessibilité, y compris en utilisant les derniers frameworks à la mode.

Automatisation

AWS:ReInvent 2017

Cloud

  • EC2Instances.info Easy Amazon EC2 Instance Comparison (code source : un site permettant de comparer (plus) facilement les types d'instances EC2 chez AWS.
  • AWS GDPR Center : AWS met à disposition des ressources pour voir comment ils répondent aux objectifs de la GDPR qui s'applique à compter de Mai prochain et en quoi les plateformes cloud contribuent ou pas à ces efforts. Google Cloud a aussi son centre, tout comme Azure.
  • Servers.LOL : devriez-vous instancier une vm EC2 ou bien utiliser AWS Lambda ? Ce petit configurateur vous aide à prendre la "bonne" décision.

Elasticsearch

  • Elastic Stack 6.0 Upgrade Guide : un petit assistant mis à disposition par Elastic pour vous accompagner dans la migration vers Elastic 6.0 pour l'ensemble des composants.
  • Docker Performance Monitoring with Metricbeat and ELK Stack : Tutoriel indiquant comment remonter des métriques Docker (container, réseau, healthcheck, etc) via Metricbeat et leur ingestion dans Elasticsearch puis visualisation dans Kibana.
  • Elastic Stack 6.1.0 Released : le module d'APM a sa propre UI, Beats apprend à faire de l'autodiscovery sur docker en plus de voir la liste de modules s'enrichir, Kibana améliore toujours sa visualisation, etc.

Kafka

  • Introducing Confluent Platform 4.0 : nouvelle version majeure de cette plateforme autour de Kafka 1.0 et la consolidation des autres outils autour (Control Center, Kafka Streams, Connecteurs Kafka, etc)
  • Enabling Exactly-Once in Kafka Streams : le billet présente comment se gère le "exactly once message" dans un contexte Kafka Streams.
  • Kafkapocalypse: Monitoring Kafka Without Losing Your Mind : l'équipe de New Relic a transcrit un talk réalisé lors d'une conférence sur un incident majeur qu'ils ont eu avec Kafka et les points de vigilance qu'ils ont développé pour monitorer au mieux leur infrastructure kafka. Ils surveillent les notions de rétention (temps ET espace), la réplication et le retard des consommateurs ("consumer lag"). Si Kafka est une solution très intéressante, son monitoring reste une bête noire pour moi. La nécessité de passer par Confluent Platform et son Control Center semble être une nécessité pour le faire dans de bonnes conditions (ou de devoir monter ses propres dashboards).

(No)SQL

Serverless

TICK

Il ne me reste plus qu'à vous souhaiter de bonnes fêtes de fin d'année et à vous retrouver l'année prochaine pour de nouvelles aventures.

Web, Ops & Data - Novembre 2017

sparkgrafanatickcloud-initelasticsearchelkgraphqlkafkapostgresinfluxdbprometheuscodeurs en seine

Big Data

  • Compte rendu du Spark Summit 2017 (Dublin) : La conférence européenne annulle de l'éditeur de Spark, Databricks, a cherché à montrer que le Streaming et le Deep Learning sont/seront bientôt plus accessibles via Spark et également la plateforme cloud DataBricks.

Dataviz

  • Grafana 4.6 Released : Nouvelle version de l'outil de visualisation des bases de données time series mais pas uniquement avec l'ajout de la source Postgres, du support de l'alerting pour Amazon Cloudwatch, des annotations simplifiées sur les graphs et autres améliorations sur la base prometheus.
  • Wizzy : il s'agit d'un ensemble de script pour versionner et se simplifier la gestion de ses dashboards réalisés sous Grafana. Pas encore testé, sous peu !

Cloud

  • Bootstrapping a Cloud with Cloud-Init and HypriotOS : j'avais croisé Cloud-Init dans Rancher OS mais n'avais pas eu le temps d'investiguer le sujet. Récemment, un podcast avec son créateur m'a permis d'en savoir plus sur le projet, à savoir que c'est un ensemble de script python qui permettent de configurer une machine lors de son initialisation (boot). Cet article permet du coup d'en avoir un exemple pratique par la configuration d'une image pour un Raspberry Pi 3 installant automatiquement le logiciel NextCloud sous la forme d'un container Docker.

Elasticsearch

  • An Ansible role to Manage your Elasticsearch Clusters : Synthesio publie son playbook ansible pour gérer des clusters Elasticsearch ; vu les clusters gérés, il y a surement de bonnes choses à récupérer - la limite étant peut être que pour un cluster de débutant, cela pourrait être trop complexe au regard du besoin. A évaluer suivant votre contexte.
  • Operating Large Elasticsearch Clusters : un retour d'expérience de l'équipe Synthesio sur la bonne gestion de leurs clusters ElasticSearch lors des Sysadmindays il y a peu.
  • La Stack ELK passe en 6.0 :
    • Elasticsearch 6.0.0 GA released : mise à jour sans downtime, index filtré, meilleures performances, meilleure résilience et meilleure sécurité (mot de passe, usage de TLS).
    • Logstash 6.0.0 GA released : il est désormais possible d'avoir des pipelines dont l'exécution se fait en parallèle et via X-Pack, il y a maintenant une UI pour piloter vos pipelines.
    • Kibana 6.0.0 GA released : Plein d'améliorations au programme : Export CSV, Amélioration de l'UI, Mode lecture seule pour pouvoir partager des dashboards et d'autres nouveautés spécifiques à X-Pack.
    • Beats 6.0.0 GA released : capture des données Docker/Kubernetes, auditbeat pour captuer les données d'auditd, une meilleure gestion des modules et de leur configuration, amélioration de performance et du stockage des données.
  • Devez-vous migrer vers Elasticsearch 6 : l'équipe Jolicode passe en revue les avancées de la version 6 et globalement conseille de passer vers cette version 6.

GraphQL

  • Modernisez vos API, passez à GraphQL ! (slides et vidéo) : Une introduction à GraphQL présentée à Codeurs en Seine 2017. Je reste toujours sceptique sur GraphQL, si coté client cela semble magique, personne ne montre la partie backend pour que la "magie" opère.
  • The GraphQL stack: How everything fits together : état des lieux suite à GraphQL Summit 2017 sur les parties cache, tracing (suivi d'une requête de bout en bout du système) et composabilité d'API (une requête GraphQL qui intérogge plusieurs API au lieu d'une).

Kafka

  • Apache Kafka Goes 1.0 : cette version 1.0 représente plutôt la complétude à l'égard d'une vision de ce que devait être Kafka que de sa stabilité ou de sa capacité à être utilisé en production. Le billet énoncce les derniers apports mais reviens surtout sur tout cette génése et la vision associée au produit.

(No)SQL

Time Series

select(db:"foo")
 .where(exp:{"_measurement"=="cpu" AND 
             "_field"=="usage_system" AND 
             "service"=="app-server"})
 .range(start:-12h)
 .window(every:10m)
 .max()

Web, Ops & Data - Octobre 2017

dockerelasticsearchtraefikmobilepostgresscalebig dataagilelicenceapm

Agile

  • Isolation Continue : choisir librement l’ordre des mises en production : récit de la migration du modèle Gitflow vers un modèle où chaque fonctionnalité est isolée dans une branche dédiée et peut être réintégrée dans la branche de production aisément et rapidement. A contrario de Gitflow où la livraison contient un ensemble de fonctionnalités, là il est possible de moduler les fonctionnalités à déployer en fonction de son avancement et des besoins de déploiement. Cela n'empêche pas de tester ses branches et de déceler les bugs, voir même leur découverte a été accélérée.

Big Data

  • Genesis of M6's Datalake : un retour d'expérience de l'équipe de M6 depuis leur usage d'une Data Management Platform d'un éditeur vers leur propre solution Hadoop avec le choix des composants et de l'infrastructure.

Container et Orchestration

Elasticsearch

  • 5 Filebeat Pitfalls To Be Aware Of : la sensibilité de yaml, le registre, le renommage/la suppressio n de fichiers de log, le multi-pipelines et l'usage CPU dans certains cas. Au passage, des recommandations d'options sur ces différents points.
  • Elastic APM enters alpha : Annoncé précédemment, Elastic commence à montrer son programme d'APM (Application Performance Management) avec une version alpha. Il ne permet de monitorer que des projets python ou node.js pour le moment. Il est fourni avec une première intégration dans Kibana. Ce produit est intégré dans la version 6.0.0 rc1

Licences & Open Source

  • Facebook grants full patent rights to all GraphQL users : après le débat le mois dernier sur la/les licences de ReactJS & co, Facebook a mis la spécification de GraphQL sous une licence libre (Open Web Foundation Agreement) et les implémentations Graphql.js et Relay sous licence MIT. Cela pourrait accéler le développement de l'écosystème GraphQL maintenant que les restrictions/doutes sont levés.

Mobile

  • React Native et CodePush : déployer sans compter : présentation de l'outil CodePush qui permet de mettre à jour son application mobile (basée sur React Native ou Cordova) sans repasser par les store pour un certain nombre de cas. Voir les limitations en fin d'article.

(No)SQL

  • Scaling the GitLab database : retour d'expérience de l'équipe de gitlab pour faire scaler la base de données du service gitlab.com. A la fin, pgpool et le hot standby ont été écartés, tout comme le sharding au profit de pgbouncer. Comme ils s'imposent d'intégrer les solutions qu'ils utilisent dans le produit (principe du eat your own food), cette solution permet d'avoir la haute disponibilité dans Gitlab Entreprise.

Web, Ops & Data - Septembre 2017

dockerelasticsearchbashkafkastreamgrafanapostgresmysqlarchitecturecliawsvpcmulti-cloudserverlessdocumentationksqllicencemicroservicerediscassandraelassandrahstsimmutable

Architecture

CLI

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

Cloud

Dashboard

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

Docker

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

Documentation

Elastiscearch

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

Kafka

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

Licences et Open Source

Microservices

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

NoSQL

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

SQL

Streaming

Vie du développeur

Web

Web, Ops & Data - Mai 2017

dokcercontainervmelastichtml5jsonfeedmicro-servicepostgres

Conteneurs

  • Docker dans un contexte hybride Windows et Linux : si vous l'avez raté, le retour d'expérience suite à une mission autour de docker dans un environnement Windows et Linux tant au niveau des VMs hôtes que les OS de conteneurs.
  • Container isolation gone wrong : un exemple intéressant où des conteneurs a priori indépendant et isolés se marchent l'un sur l'autre au travers des appels au noyau linux. Même si chaque container est "relativement" isolé des autres, il ne faut pas oublier qu'ils reposent tous sur le même kernel parent.
  • Containers, VMs... Comment ces technologies fonctionnent et comment les différencier? (Quentin Adam) : l'article précédent m'a rappeler cette vidéo de Quentin Adam à Devoxx expliquant les différences entre containers et VMs. Un conteneur est un process linux relativement isolé les uns des autres mais rien de plus. Les plus ciniques pourraient dire que cela ressemble à de l'hébergement mutualisé d'il y a quelques années avec Apache et mod_php ;-)

Elasticsearch

  • X-Pack alternatives : X-Pack est un ensemble de produits additionnels pour ElasticSearch couvrant les besoins de Sécurité, Monitoring, Alterting, Reporting, Graph et Machine Learning. Ce produit est soumis à licence et de mémoire, le prix est assez salé. Le billet liste différentes alternatives suivant les besoins (non testées).
  • Construire un bon analyzer français pour Elasticsearch : un tutoriel assez progressif sur la mise en place d'un analyser français pour vos données dans Elasticsearch. Très pédagogique !

HTML5

  • It's time for 2.0! : Polymer, le framework (?) initié par Google et permettant d'utiliser les Web Components sort en version 2.0. Une éternité que je n'avais plus entendu parler de Polymer. Le point intéressant étant de voir que les "polyfills" requis pour faire fonctionner Polymer réduisent significativement au fil du temps et de l'implémentation requis par les Web Components dans les différents navigateurs.

JSON

  • JSON Feed : Un Feed RSS/Atom au format JSON plutôt que XML. On a pu tous en rêver à un moment ou à un autre ou le réaliser à la volée via une conversion XML vers JSON. Voilà une première spécification.

Micro-service

  • Enough with the microservices : les micro-services, c'est tendance, tout le monde veut en faire à tort ou à raison. Pour autant, faire des microservices, ce n'est pas simple et ce n'est pas la panacée ou la "balle en argent" qui va résoudre tous vos problèmes. Le billet revient sur les défis d'une approche microservice pour conclure qu'avant d'envisager des micro-services, il vaudrait mieux déjà savoir gérer un monolythe modulaire. La modularité peut déjà répondre à beaucoup d'enjeux de scalabilité, découplage, etc sans avoir besoin de rentrer dans le monde des micro-services et des défis techniques et humains associés.

Postgres

  • Why Use Postgres (Updated for Last 5 Years) : ou la revue rapide de toutes les fonctionnalités qui vous feront aimer et utiliser Postgres comme base relationnelle.
  • Postgres 10.0 beta1 : la fabuleuse base de données Postgres continue son bonhomme de chemin avec des avancées sur la réplication logique, du partitionning, de la recherche full text sur le stockage JSON & JSONB, un rôle dédié au monitoring, etc.
  • Les branches if/else/endif dans psql (PostgreSQL 10) : Avec Postgres 10, le client pourra exécuter des boucles conditionnelles (if/else if/else/end) sur la base d'expressions SQL.

Web, Ops & Data - Avril 2017

kafkastreamcontainerkubernetesrestpythonterraformranchermysqlpostgresmicroserviceangularjstestcssgrid

Container & Orchestration

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

DevOps

HTML5

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

Javascript

Kafka

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

MySQL

Postgres

Python

Web, Ops & Data - Février 2017

machine-learningsécuritéheadercookienosqlrethinkdbpostgrescsrfhackeringénierieover-engineeringux

Admin Sys

HTML,JS,CSS

  • Les sections HTML, CSS et JavaScript de MDN sont disponibles en français : " TL;DR : Les 1 749 pages de MDN pour les sections HTML/JS/CSS sont désormais disponibles, à jour, en français." ; MDN (ou plus longuement le « Mozilla Developer Network ») est un wiki, documentant les technologies web. Si la langue de Shakespeare vous rebutait, vous n'avez plus aucune raison maintenant. Impréssionnant travail en tous cas !

Machine learning

(No)SQL

  • RethinkDB joins The Linux Foundation : l'arrêt de la société (Octobre 2016) ne signifiera donc pas la fin du projet opensource associé. Il est peut être encore un peu tôt pour statuer sur la pérénité du projet, mais au moins, il y a une lueur au bout du tunnel. Pour rappel, RethinkDB est une base de données scalable, orientée temps réel et document (JSON). L'article permet de voir également les enjeux de licences/propriété intellectuelle.
  • RethinkDB versus PostgreSQL: my personal experience : Un retour d'expérience sur RethinkDB vs Postgres avec Postgres qui gagne à la fin (comme toujours ! :-) ). Il semble néanmoins avoir un volume de données et un traffic que tout le nonde n'a pas.
  • Is Postgresql good enough? : revue des différents cas d'utilisation des bases NoSQL et voir comment / dans quelle(s) mesure(s) on peut y répondre avec Postgres. L'idée est de se dire que plutôt d'avoir n outils (et la gestion de l'expertise qui va avec), autant en avoir moins, qui répondent au besoin même s'ils ne font pas aussi bien que l'outil de référence.
  • PostgreSQL worst practices, version FOSDEM PGDay 2017 : revue des mauvaises pratiques Postgres pour vous faire prendre les bonnes.
  • Zero Downtime Postgres Upgrades : Présentation d'une architecture Postgres multi-noeuds permettant la gestion du failover.

Opinions

Sécurité

  • Cross-Site Request Forgery is dead! : il est possible de sécuriser de plus en plus ses cookies pour tuer toute tentative de CSRF. Il est conseillé de lire préalablement Tough cookies pour avoir le petit rappel sur les cookies et leurs attributs.
  • A new security header: Referrer Policy : un nouveau Header http, au state de recommandation du W3C, va faire son apparition et permet de définir des politiques sur la gestion du referer (le propager ou pas).

UX

  • Dois-je utiliser ? : Une revue des écueils des carrousels, pop-in, un défilement inifini, etc avec exemples, des solutions, des alternatives et des argumentaires.

Web, Ops & Data - Janvier 2017

dockerarmhypriotapirestramlpythoncspkubernetessparkkafkastreamrancherjsonansibledevopselasticsearchpostgrestimezonepipvirtualenvsqlservice workerreactfoundation

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

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

Container & Orchrestration

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

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

← Précédent 2 / 3 Suivant →