CérénIT

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

Web, Ops & Data - Décembre 2017

accessibilité ansible spinnaker aws reinvent lambda serverless kubernetes s3 glacier sql ec2 gdpr kafka elasticsearch confluent postgres telegraf

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

spark grafana tick cloud-init elasticsearch elk graphql kafka postgres influxdb prometheus codeurs 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

docker elasticsearch traefik mobile postgres scale big data agile licence apm

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

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

Architecture

CLI

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

Cloud

Dashboard

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

Docker

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

Documentation

Elastiscearch

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

Kafka

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

Licences et Open Source

Microservices

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

NoSQL

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

SQL

Streaming

Vie du développeur

Web

Web, Ops & Data - Aout 2017

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é

Cloud

Container & Orchestration

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

Open Web

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

1 2 3 4 5