CérénIT

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

Web, Ops, IoT et Time Series - Aout 2024

pyinfra ansible python pylyzer uv poetry iot sécurité rbac

Cette édition et les précédentes sont également disponibles sur substack Web, Ops, IoT & Time Series pour ceux qui préfèrent les emails ou la consommation via l’app Substack

Général

  • Stack Overflow Survey: 80% of developers are unhappy : Les raisons de la frustration seraient techniques (dette technique, complexité de la stack technique), organisationnels (réunions, planning, pression) ou plus globaux comme les licenciements massifs dans la tech.

IoT

  • Why has the Internet of Things failed? : Moins de 50% des objets IoT seraint effectivement connectés. 3 barrières principales : la configuration intiale, l’(in)utilité de l’objet en lui-même et l’énergie (alimentation et communication). Sans utilitée avérée de l’objet, il ne sert à rien d’optimiser les deux autres. Si on a l’utilité, alors il faut trouver les meilleurs compromis pour avoir une bonne UX de configuraiton initiale et une gestion énergétique du device. Peut être juste la fin de la cycle de hype pour l’IoT et en route vers la maturité ?

Ops

  • PyIfra 3.0 & 3.1 : pyinfra se veut une alternative à Ansible. Si pyinfra ne dispose pas (encore) d’un nombre équivalent de modules à celui d’Ansible, il se distingue d’Ansible par le fait que les tâches ne sont pas décrites au format YAML mais sont du code Python. La version 3.0 résoud principalement les limitations de PyInfra 2.x sur son mode d’exécution en deux étapes (préparation puis exécution). A tester et à surveiller à défaut de pouvoir complètement remplacer des playbooks Ansible pour le moment…

Python

  • pylyzer : vous aimiez Ruff sur la partie linter, alors vous pourriez aimer pylyser sur la partie typage. Le projet est encore jeune et incomplet mais semble prometteur. Une extension VSCode est d’ailleurs disponible.
  • uv: Unified Python packaging : l’équipe Astral, celle derrière ruff semble bien avancer sur leur gestionnaire de packages pour python (mais codé en rust). Si la version précédente se concentrait sur le remplacement de pip, cette version va plus loin et vise poetry ou pdm voir pyenv en allant jusqu’à l’instalation de python en lui-même. En plus des apports fonctionnels, les performances semblent aussi être au rendez-vous. Peut-être encore un peu tôt pour migrer vos projets dessus mais définitivement à surveiller.

Sécurité

Rendez-vous à la fin du mois prochain pour une nouvelle édiiton.

Web, Ops & Data - Janvier 2021

timeseries prometheus promql ovhcloud iot openhab timescaledb ptsm anomalie label machine-learning iac ansible libssh vector log warp10 influxdb openssh gpg podman docker-compose sudo

Cloud

Code

  • GitLab release feature report : le code qui permet de générer le rapport ce qui a changé entre les versions de Gitlab.
  • SSH is the new GPG : les dernières versions d’OpenSSH permettent de signer un fichier. Une solution intermédiaire entre de la signature de fichiers à base de MD5 & co qui donnent des informations de conformité mais sans indiquer qui a signé le fichier et une solution GPG plus complexe à mettre en oeuvre ?

Container et orchestration

  • Using Podman and Docker Compose : podman, le “daemonless container engine” va permettre d’être utilisé avec docker-compose dans le cadre de la version 3.0. De quoi favoriser l’adoption de podman ?

Infra as code

  • New LibSSH Connection Plugin for Ansible Network Replaces Paramiko, Adds FIPS Mode Enablement : Ansible change de librairie pour les connexions ssh en remplaçant paramiko par libssh. Elle se veut plus performante et peut être requis dans un contexte demandant du FIPS. Pensez à installer le paquet libssh-dev(el) suivant votre distribution pour pouvoir installer ansible-pylibssh. Mes premiers essais ne notent pas une amélioration sensible des performances… à voir sur d’autres machines et dans la durée…

IoT

  • openHAB 3.0 Release et Release Notes : OpenHAB est une plateforme open source de gestion de périphétiques IoT et d’automatisation autour de ces périphériques. Elle est développée en Java, support 2000 “Things” (objets, équipements, protocoles). La version 3.0 apporte une refonte et l’unification de l’UI et des composants, le passage à Java 11 et plein d’autres choses. La migration depuis une version 2.x se fait assez simplement. Avec le nouveau moteur de règle, j’ai pu supprimer mon code spécifique. Reste encore la partie “Pages” à appréhender… J’avais préféré OpenHAB à Jeedom et Home Assistant
  • Meet Raspberry Silicon: Raspberry Pi Pico now on sale at $4 : la fondation Raspberry Pi se lance dans les micro-controlleurs avec le Pico au prix de 4$.
  • Raspberry Pi PICO la carte Microcontrôleur de la Fondation : un article très détaillé sur la prise en main du pico.

Observabilité

Système

Time Series

Web, Ops & Data - Mars 2020

ansible molecule test java redis timeseries influxdb warp10

IaC

  • Ansible Molecule 3.0 : l’outil de test des rôles Ansible est passé en version 3.0. Pas mal de changement avec l’externalisation des providers d’infrastructure sous la forme de module python et d’autres rationalisation. Une check list de migration est disponible

Langages

  • What Tens of Millions of VMs Reveal about the State of Java : NewRelic publie une synthèse des versions et configuration de Java déployées dans la nature. ~85% tourne encore sur Java 8 et 11% sur Java 11 et le tout principalement avec les versions fournies par Oracle. On se moquait des communautés PHP (pour PHP 5 à PHP 7) ou Python (2 vers 3) mais visiblement chaque langage d’un certain age rencontre les mêmes soucis.

Time Series

  • RedisTimeSeries Version 1.2 Is Here! : ce module qui apporte des fonctionnalités de séries temporelles à Redis (sans pour autant en faire une base de données orientée séries temporelles) passe en 1.2. On y trouve surtout des améliorations au niveau de la compression des données, des améliorations de performance et une rationnalisation de l’API.
  • SenX publie un guide indiquant les propriétés d’une base de donnée timeseries et comment Warp10 se positionne sur les différents axes. Un joli travaille pédagogique.
  • Warp10 a dépassé les 1000 fonctions
  • InfluxDB 2.0 - beta 6 : améliorations de l’ensemble et l’apparition des premières fonctions géospatiales dans Flux.
  • Le site du Paris Time Series Meetup est en ligne ; à défaut de meetup, vous pourrez y retrouver les vidéos et supports des précédentes éditions.

Web, Ops & Data - Mai 2019

kafka sécurité s3 aws vscode openebs rook kubedb nginx ingress grafana elasticsearch ansible timeseries timescaledb

Cloud

Container et Orchestration

  • Rook v1.0 — A Major Milestone : Rook atteint le stade de la version 1.0 avec une amélioration de l’opérateur Ceph (simplification de la configuration, gestion des mises à jour, prise en charge des dernières versions de Ceph, etc), le driver Ceph CSI passe en bêta, le support d’EdgeFS passe en bêta également, l’opérateur NFS supporte l’approvisionnement dynamique et l’opérateur Minio a reçu également des améliorations.
  • KubeDB 0.12 : cette version apporte principalement le support du sharding MongoDB et du Clustering MySQL et divers correctifs pour les autres “backends”.
  • Announcing NGINX Ingress Controller for Kubernetes Release 1.5.0 : nouvelle version de l’ingress nginx avec une nouvelle configuration, des métriques (via prometheus), simplification de la gestion des certificats, etc.
  • Grafana v6.2 Stable Release! : améliorations de sécurité sur le chiffrement des données des datasources, une nouvelle gauge et pleins d’autres améliorations.
  • OpenEBS Project Update and whats coming in v1.0 : la solution de stockage sous kubernetes vient de sortir en version 0.9 et de rejoindre la CNCF. C’est l’occasion de faire un point sur le projet et la route vers la version 1.0

(Big) Data

  • Kafka : Migrer un consommateur vers Streams et Connect : retour d’expérience intéressant sur la migration d’une intégration Kafka basée sur les producteurs/consommateurs vers une approche basée sur Kafka Connect et Kafka Streams.
  • Security for Elasticsearch is now free : ces fonctionnalités, prélablement disponibles uniquement dans la version commerciale, font partie de la version gratuite : chiffrement des flux via TLS, authentification et gestion des rôles.

IAC

  • Ansible 2.8 : de nombreuses améliorations au rendez-vous, la liste est très longue. Pour ma part, je note l’arrivée du support de “docker stack” pour gérer des déploiements sur un cluster docker swarm.

IDE

Sécurité

  • The inception bar: a new phishing method : sur mobile, dès lors que l’utilisateur fait défiler sa page, la barre de navigation va disparaitre et du coup il est possible d’injecter une fausse barre de navigation et faire croire à l’utilisateur qu’il est sur un autre site.

Time series

  • Zabbix, Time Series Data and TimescaleDB : le billet explique en quoi Zabbix doit faire face à l’enjeu des séries temporelles dans le cadre d’une solution de monitoring. Comme ils veulent avoir une technologie leur permettant d’utiliser SQL, ils ont fait le choix de TimescaleDB. Le point intéressant est en fin d’article lorsque les performances de Postgres 10 et TimescaleDB sont comparées.

Web, Ops & Data - Février 2019

kubernetes traefik postgres pandas python docker runc operator ansible vitess tidb sharding timeseries kubedb fsync ovh dns

Container et orchestration

  • The Journey to Traefik Enterprise Edition: Product Evaluation
  • Docker Security Update: CVE-2019-5736 and Container Security Best Practices : Vous avez sans doute tous entendus parlé de la faille de runc, sous le doux nom de CVE-2019-5736. Le billet indique qu’il faut utiliser une version 18.06.2+ pour Docker CE et rappelle quelques bonnes pratiques de gestion de containers. Il n’y a pas que les serveurs à mettre à jour, il y a aussi les postes de développeurs, tout aussi exposés.
  • rancher/runc-cve : Pour les gens qui ne peuvent pas mettre à jour le binaire docker, l’équipe de Rancher met à disposition des versions du binaire runc pour les versions depuis docker 1.12.6 jusqu’à 18.06.1
  • CVE 2019-5736 dans runC : l’article indique une façon d’exploiter la faille de RunC.
  • Ansible Operator: What is it? Why it Matters? What can you do with it? : Ansible ne fournit pas un “oprator” en tant que tel pour Kubernetes mais de quoi permettre de créer un operator en se basant sur des playbooks/roles ansible. Ainsi, si votre ressource change d’état par exemple, alors le playbook associé est joué. Idem pour la gestion d’un upgrade, etc. Cela s’inscrit dans la logique de pouvoir développer ses propres Operator sans avoir à les écrire en Go.
  • Mastering the KUBECONFIG file : différentes astuces autour de la gestion du fichier KUBECONFIG.
  • KubeDB : KubeDB est un operator kubernetes qui vise à pouvoir déployer et gérer différentes bases sur un cluster kubernetes. Les bases supportées sont MySQL, Postgres, Elasticsearch, Redis, MongoDB et Memcached. Le niveau de fonctionnalités dépend beaucoup de la base de données retenus (la réplication semble être gérée pour Postgres mais pas pour MySQL par ex). La version 0.10 vient de sortir, apportant le support du cluster Redis
  • Managed Kubernetes Service : OVH vient de lancer son offre kubernetes managé et pour l’utiliser depuis deux mois maintenant, elle fonctionne plutôt bien.

DNS

(No)SQL

  • Contrainte d’exclusion : nous connaissons tous les contraintes d’unicité mais parfois cela ne suffit pas. L’exmple montre comment mettre en place une contrainte d’exclusion sur la base de filtre de plage de réseaux : 192.168.122.0/28 est compris dans 192.168.122.0/24, donc si le 2nd est entré dans la base, le 1er ne pourra jamais être ajouté car il y a recouvrement. On retrouve un autre exemple de cette contrainte d’exclusion sur des dates dans l’astuce de la semaine de l’édition 289 de Posrgres Weekly.
  • Understanding Database Sharding : un billet très explicite sur le partitionnement (sharding) de base de données, pourquoi et comment le faire. Il rappelle aussi les inconvénients à le faire et ce qu’il vaut mieux faire avant d’en arriver au sharding.
  • TiDB: Distributed NewSQL with Kevin Xu : TIDB est une base qui se déploie sur Kubernetes et qui s’appuie sur RocksDB. Elle se veut “NewSQL” dans le sens où elle veut supporter à la fois des transactions et de l’analytique. Elle veut offrir notamment un support de MySQL mais dans les faits, le support reste encore limité. Pour ceux qui veulemnt déployer du MySQL sur Kubernetes avec du sharding, il vaut mieux aller voir du coté de Vitess
  • Farewell to fsync(): 10× faster database tests with Docker : alors que l’actualité était plutôt sur le fait que Postgres gérait mieux les erreurs lors d’un fsync(), l’astuce consiste ici à désactiver fsync() et/ou à mettre le dossier des données de votre base en RAM pour accélérer les temps de déroiulement de tests. Testé chez un client, c’est un gain d’au moins 20s qui a été constaté sur une opération de quelques minutes (< 5).

Timeseries

  • Tutorial: Time Series Analysis with Pandas : un tutoriel assez progressif et didactique sur la manipulation de données temporelles avec Pandas.
  • TSL: a developer-friendly Time Series query language for all our metrics : L’équipe d’OVH Metrics a crée son propre langage de requêtage orienté séries temporelles pour Prometheus et Warp10. Le billet raconte leur épopée dans le monde des base de données temporelles et comment ils en sont arrivés à créer TSL. On retrouve une syntaxe fonctionnelle et qui se retrouve assez proche de celle de Flux, qui lui supporte InfluxDB et Prometheus.
1 2 3 4