CérénIT

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

Web, Ops, IoT et Time Series - Juin 2024

caddy reverse-proxy api https fastapi parquet postgres htmx python ruff queue lakehouse repository pattern warp10

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

API

Data

IoT

Python

  • SqlAlchemy 1.4 async ORM with FastAPI : en 2022, nous avions utilisé cet article comme base pour les projets FastAPI. Il couvrait de bout en bout ce que l’on attendait : SQLAlechmy, Alembic (migrations), Async et Tests. Le petit plus est sur le pattern du Repository, fort utile pour avoir une abstraction au dessus de la base de données.
  • Fast API — Repository Pattern and Service Layer : une version plus récente, rajoutant le concept de Service en plus de celui du Repository.
  • FastCRUD : Un meta-package qui vous embarque tout pour générer dynamiquement vos endpoints d’API sur la base de vos modèles de données.
  • FastHX, fastapi-htmx & Using HTMX with FastAPI : pour ceux qui veulent faire du FastAPI et du HTMX
  • FastUI : un projet de l’équipe de Pydantic pour générer des interfaces web à partir de votre code Python.
  • Summary of Major Changes Between Python Versions : Liste des principales évolutions et principaux apports d’une version majeure de Pytohn à une autre.
  • Adopt-Ruff : un outil pour trouver les règles Ruff que votre projet ne respecte pas encore en vue de pouvoir les ajouer au fur et à mesure.
  • Introduction to Polars : tout est dans le titre, une introduction à Polars.

Ops

  • Caddy 2.8.x (dernière version: 2.8.4 : quelques fonctionnalités supplémentaires au niveau de HTTP/3 ou des certificats, mais surtout un gros travail de nettoyage et de rationnalisation de code (dépendances dépréciées / non maintenues, etc).
  • Le projet Caddy-Docker-Proxy passe en version version 2.9.x en intégrant Caddy 2.8.

Time Series

Web

Web, Ops, Data et Time Series - Décembre 2021

django test api robotframework parquet influxdb raspberrypi dredd tavern grafana

Code & Frameworks

  • Django 4.0 released : compatible python 3.8+, il appot son lot de nouveautés et notamment la capacité de personnaliser un peu plus le rendu des formulaires pour ce qui me concerne.

Conteneurs & Orchestration

IoT

  • “New” old functionality with Raspberry Pi OS (Legacy) : la fondation Raspbery Pi annonce l’arrivée d’un OS 64 bits (enfin) mais aussi la mise à disposition d’une version legacy de Raspberry Pi OS basée sur Debian 10/Buster pour ceux qui rencontrent des problèmes avec le passage à Debian 11/Bullseye.

Monitoring & Observabilité

Tests

  • RobotFramework : robot opensource d’automatisation tant pour des tests que des process d’automatisation robotique, il semble assez complet pour permettre de faire des tests assez complets tout en proposant une interface relativement simple. A voir ce que cela donne…
  • Dredd : pour tester vos API au format Blueprint ou OpenAPI
  • Keep calm and release your API in prod : Tavern permet de tester des API HTTP via une déclariaton des scénarios en YAML. Il s’appuie sur pytests, requests et dispose d’une intégration MQTT. Le billet montre un cas d’exemple.

Time Series

  • Demystifying the use of the Parquet file format for time series : retour sur le format Parquet et son usage pour des séries temporelles. Au delà de l’explication, il est intéressant de mettre cela en perspective vis à vis d’InfluxData qui a prévu que son moteur de stockage Iox soit notamment basé sur Parquet.

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

Web, Ops & Data - Juillet 2017

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

API

Cloud

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

Sécurité

Vie Privée

Web, Ops & Data - Janvier 2017

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

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