CérénIT

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

Web, Ops, IoT et Time Series - Février 2024

dnsavifjpegpostgresgitconventional commitarchitectureamnesiepwaiosrefactorgit-cliffchangelogtraefik

Code

  • The power of conventional commits : je suis assez fan de Gitmoji + Conventional Commits pour avoir des messages de comits visuels et pertinents. Si la mise en oeuvre est parfois pas très naturel, le plaisir d'avoir un changelog autogénéré et propre ou bien de pouvoir facilement retrouver un commit, son intention et le ticket gitlab associé, cela n'a pas de prix.
  • En liaison avec le billet précédent, le générateur de changelog Git-cliff est sorti en version 2.0 avec notamment une intégration plus poussée avec Github, des templates et plein d'autres choses. Git-cliff depuis la version 1.4 peut aussi générer votre prochain numéro de version sur la base de vos commits et la commande bump
  • Postgres à nouveau élu SGBD de l'année en 2023, mais je suis inquiet: le cloud et les ORM notamment ont permis de s'affranchir des DBA. Si dans un sens c'est tant mieux, à un certain stade, cela s'avère nécessaire de recourir à l'expertise d'un DBA (même si c'est parfois trop tard). Reste que le problème fondamental est plutôt que les développeurs n'ont plus les fondamentaux en SQL dans ce cas particulier et en architecure logicielle de manière plus globale et c'est peut être surtout ça le vrai problème.
  • The continuous amnesia issue : notre industrie est malade, on souffre d'une amnésie continue en ignorant les enseignements du passé. Le "jeunisme", "la hype" et le fait qu'au delà de 30 ans, il faut être passé du coté du management font qu'on ne valorise/capitalise pas assez sur ce que nos ainés ont fait.
  • The High-Risk Refactoring : l'amémioration / la réécriture de code a son lot inhérent de risques techniques et métiers. L'article permet d'appréhener et de cadrer cette décision de façon assez pragmatique pour arriver au niveau de code juste nécessaire.

DNS

  • L’ICANN propose le domaine .internal pour votre réseau local : historiquement, il y avait le .local mais dont l'usage a été revu pour du zeroconf notamment. L'usage du .internal est en cours de discussion pour une décision en avril. On va pouvoir (enfin) sortir des domaines fictifs, des domaines publics utilisés en interne (adieu macompany.org) ou encore du "DNS menteur" (macompany.com résolu différemment suivant si on est en interne ou en externe). Néanmoins, une bonne question émerge : comment gérer et garantir les certificats en .internal que tout le monde peut revendiquer ? Aucune entité de certification publique ne pourra émettre de tels certificats... Cela repose alors la question de la PKI privée et de la diffusion des certificats de la CA pour valider les domaines sur votre parc informatique...

OPS

  • Traefik Proxy v2.11 is Now Available! Here are the Latest Updates. : Cette version apporte notamment les directives keepAliveMaxRequests et keepAliveMaxTime pour éviter que trop de connections ouvertes restent entre votre reverse proxy et votre applicatif.
  • Announcing Traefik Proxy v3.0 RC1: Au programme: Wasm, OpenTelemetry, HTTP/3, SPIFFE et des choses dans le monde Kubernetes. Alors que la migration V1/V2 avait été un peu pénible, l'équipe de Traefik promet une migration en douceur entre V2/V3.

Web

Web, Ops, IoT et Time Series - Janvier 2024

reverse-proxycaddytraefikdockercronloralorawanduckdbmysqlpostgressqlite

Après presque 2 ans de silence et le remplacement de Hugo et Bootstrap par Zola et Tailwind/daisyUI l'été dernier pour générer le site, je vous souhaite une bonne année à tous et la résolution de publier plus régulièrement mes trouvailles...

Data

TL;DR: DuckDB can attach MySQL, Postgres, and SQLite databases in addition to databases stored in its own format. This allows data to be read into DuckDB and moved between these systems in a convenient manner.

IoT

Ops

  • DKron via Dkron pilote vos crontab : un gestionnaire de cron distribué, avec une jolie interface et uen API - que demander de plus ? Sur un modèle agent/serveur, le serveur dRkon distribue les tâches aux agents dKron concernés. les agents dKron étant déployés sur les serveurs sur lesquels les jobs doivent s'exécuter.

Reverse Proxy

  • Caddy : si vous avez besoin d'un reverse-proxy avec gestion automatique des certificats et redirection HTTP > HTTPS et plein d'autres choses encore mais sans nécessité d'intégration avec Docker comme Traefik, alors jetez un coup d'oeil à Caddy. Il permet également d'avoir un certificat sur localhost. Comme Traefik, il est écrit en Go.

J'avoue que la concision de Caddy vs Traefik et le provider file est bien appréciable:

# Caddyfile
xxx.cerenit.fr {
	reverse_proxy 127.0.0.1:3000
}
# Traefik
http:
  middlewares:
    redirectToHttps:
      redirectScheme:
        permanent: true
        scheme: https
  routers:
    grafana:
      entryPoints:
        - websecure
        - web
      middlewares:
        - redirectToHttps
      rule: Host(`xxx.cerenit.fr`)
      service: grafana@file
      tls:
        certResolver: le
  services:
    grafana:
      loadBalancer:
        servers:
        - url: http://127.0.0.1:3000/

Pour un serveur, la migration de Traefik vers Caddy fait passer le fichier de configuration de 172 lignes à 27 - soit presque 6 fois moins ! 😏

  • Caddy-Docker-Proxy via Caddy Docker Proxy, Like Traefik But Better? : si vous souhaitez aller plus loin dans l'intégration Caddy/Docker dans l'objectif de remplacer Traefik, cela semble être une bonne piste. C'est une version modifiée de Caddy pour s'interfacer avec Docker. L'intégration se fait notamment via les labels, comme pour Traefik. A voir si on peut déployer la version standalone en dehors d'un conteneur comme on peut le faire avec Traefik. Cela éviterit ainsi que chaque container à exposer via Caddy-Docker-Proxy rejoigne le réseau ad-hoc.

Exemple:

services:
  whoami:
    image: traefik/whoami
    networks:
      - caddy
    labels:
      caddy: whoami.example.com
      caddy.reverse_proxy: "{{upstreams 80}}"

networks:
  caddy:
    external: true

Vers de nouveaux horizons...

floveacérénittimeseriesbigdatahebdoiotctociodsiiiot

Je l'évoquais dans le billet "Bilan 2021 et perspectives 2022", je peux en parler maintenant officiellement : j'ai été contacté par Flovea pour piloter le projet Flowbox Interactive et mettre en place l'équipe projet associée.

Après trois mois environ de mission permettant de faire connaissance, d'auditer la solution existante, de définir une roadmap et de mettre en place l'équipe projet, mon recrutement en tant que DSI/CIO de Flovéa est acté depuis début avril. J'ai le plaisir de rejoindre une belle équipe pour réaliser un beau projet tant d'un point de vue technique que d'un point de vue du sens et de son utilité. La seule ombre au tableau étant le contexte de pénurie de composants qui illustre bien la dimension "hard" d'un projet "hardware".

L'activité de CérénIT va donc ralentir puis se mettre en mode minimal ; le temps pour moi de finir quelques activités de support pour un client et ne conserver ensuite que l'infogérance de Compta-Online et un autre projet avec Fabrice Heuvrard à destination des experts comptables.

L'animation du meetup Time Series France sera moins régulière et surement de façon plus opportuniste que précédemment. Je continue à contribuer à BigData Hebdo même si mes contributions au podcast sont minimes depuis le début d'année.

Je remercie tous les clients et les personnes que j'ai pu accompagner pendant ces 6 ans ; j'ai appris énormément de choses grâce à eux et j'ai pu travailler sur des sujets et dans des entreprises sur/pour lesquel(le)s je n'aurais jamais pensé travailler. Je remercie plus particulièrement :

  • Frédéric Rocci, j'aurai du rejoindre Compta Online début 2017, cela ne s'est pas fait mais cela m'a permis de devenir indépendant
  • Vincent Heuschling : il était mon prestataire lorsque j'étais encore chez JCDecaux, il devient mon premier client en 2017 pour lancer les premières fondations de DataTask. On a remis ça en 2020/2021 mais les conditions sanitaires et économiques font que je ne peux pas rester sur le projet fin 2021. C'est grace à cette rencontre que je découvre le podcast BigData Hebdo puis rejoint l'équipe en 2019.
  • Thomas Bosviel, prestataire également chez JCDecaux en 2016/17 et qui me met en contact en 2019 avec Frédéric Mefiant de la SAFT et pouvoir ainsi commencer mon activité "Time Series".
  • Denis Rampnoux pour la mission chez LesFurets.com et Youen Chéné pour la mission chez Saagie.

Ces années ont été très riches et passionnantes mais j'aspirai à aller vers d'autres choses ; le projet et la rencontre avec Flovéa semblent être la réponse que j'attendais. Il est donc temps de tourner la page et de découvrir ces nouveaux horizons.

Web, Ops, IoT et Time Series - Mars 2022

pythonasgigitgrepdockerzipclidjangonumériquergpdprivacy shielddocker composedockerfilegoogle analyticsmatomofugueduckdbpandassql

Conteneur et Orchestration

  • Docker Engine 20.10.13 : Docker compose v2 arrive dans docker : ce qui permet de faire docker compose (au lieu de l’original docker-compose coté en python)
  • COPY --chmod reduced the size of my container image by 35% : pour réduire la taille de vos images, plutôt que de faire un ADD ... puis un RUN chmod ..., faites directement un ADD/COPY --chmod. Marche aussi avec --chown.
  • Docker Compose > depends > condition: ready : depends_on a une syntaxe longue qui permet de définir une condition sur l'état du service dépendant : démarré (valeur par défaut de la version courte), "sain" (en fonction du résultat d'un healthcheck) ou "terminé avec succès" (si votre service dépend du résultat d'un job ou d'une tâche).

Numérique

Open Data

  • adresse.data.gouv.fr : le site national des adresses dont l'objectif est de référencer l’intégralité des adresses du territoire et les rendre utilisables par tous.

Outils

  • GitUI : si vous trouvez tig pas très intuitif/pratique, GitUI pourrait vous plaire. Prévu pour le terminal, il permet de se ballader facilement dans votre historique git & co. L' outil en codé en Rust.
  • igrep : un grep interactif qui permet d'ouvrir le fichier dans un éditeur et d'aller directement à la ligne contenant le motif recherché. Basé sur l'excellent ripgrep.

Python

RGPD & Privacy Shield

Web, Ops, IoT et Time Series - Février 2022

traefikiotedgehttpxsemiconducteurrgpdgoogle analyticsfontpodmannebulawireguardjlessjsonréseautsfeltimescale

Code & Langages

  • httpx : en gros, requests mais avec le support de l'asynchrone. L'API semble être la même. httpx peut aussi s'installer en tant que cli.
  • The Algorithms - Go : collection d'implémentation d'algorithme en Go à fin d'apprentissage

Fonts

  • Luciole : La police Luciole a été créée à destination des personnes malvoyantes et apporte un certain confort de lecture et une meilleure lisibilité.

Hardware

IoT

  • Anomaly Detection: Glimpse into the Future of IoT Data : intéressant le triplet Objet IoT, Edge / Data Routeur capable de réaliser des opérations et le noeud central. L'edge computing permet d'éviter de saturer le noeud central et de prendre des décisions au plus près de l'objet IoT.

Ops

Outils

RGPD & Vie Privée

Time Series

← Précédent 1 / 27