CérénIT - mysqlLe blog tech de Nicolas Steinmetz (Time Series, IoT, Web, Ops, Data)Zola2024-01-31T09:30:00+01:00https://cerenit.fr/tags/mysql/atom.xmlWeb, Ops, IoT et Time Series - Janvier 20242024-01-31T09:30:00+01:002024-01-31T09:30:00+01:00
Unknown
https://cerenit.fr/blog/web-ops-iot-timeseries-janvier-2024/<p>Après presque 2 ans de silence et le remplacement de Hugo et Bootstrap par <a rel="noopener" target="_blank" href="https://www.getzola.org/">Zola</a> et <a rel="noopener" target="_blank" href="https://tailwindcss.com/">Tailwind</a>/<a rel="noopener" target="_blank" href="https://daisyui.com/">daisyUI</a> 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...</p>
<h3 id="data">Data</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://duckdb.org/2024/01/26/multi-database-support-in-duckdb.html">Multi-Database Support in DuckDB</a> : Cela multiplie les possibilités 😎</li>
</ul>
<blockquote>
<p>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.</p>
</blockquote>
<h3 id="iot">IoT</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.univ-smb.fr/lorawan/">Devenez un expert LoRaWAN</a> via <a rel="noopener" target="_blank" href="https://www.udemy.com/course/lora-et-lorawan-pour-linternet-des-objets/">LoRa et LoRaWAN pour l'Internet des Objets</a>: si vous cherchez un cours théorique et pratique pour vous former aux protocoles LoRa et LoRaWan, je vous le recommande chaudement.</li>
</ul>
<h3 id="ops">Ops</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://dkron.io/">DKron</a> via <a rel="noopener" target="_blank" href="https://blog.stephane-robert.info/post/dkron-jobs-cron/">Dkron pilote vos crontab</a> : 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.</li>
</ul>
<h3 id="reverse-proxy">Reverse Proxy</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://caddyserver.com/">Caddy</a> : si vous avez besoin d'un reverse-proxy avec gestion automatique des certificats et redirection HTTP > HTTPS et <a rel="noopener" target="_blank" href="https://caddyserver.com/features">plein d'autres choses encore</a> 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.</li>
</ul>
<p>J'avoue que la concision de Caddy vs Traefik et le provider <code>file</code> est bien appréciable:</p>
<pre style="background-color:#2b303b;color:#c0c5ce;"><code><span># Caddyfile
</span><span>xxx.cerenit.fr {
</span><span> reverse_proxy 127.0.0.1:3000
</span><span>}
</span></code></pre>
<pre data-lang="yaml" style="background-color:#2b303b;color:#c0c5ce;" class="language-yaml "><code class="language-yaml" data-lang="yaml"><span style="color:#65737e;"># Traefik
</span><span style="color:#bf616a;">http</span><span>:
</span><span> </span><span style="color:#bf616a;">middlewares</span><span>:
</span><span> </span><span style="color:#bf616a;">redirectToHttps</span><span>:
</span><span> </span><span style="color:#bf616a;">redirectScheme</span><span>:
</span><span> </span><span style="color:#bf616a;">permanent</span><span>: </span><span style="color:#d08770;">true
</span><span> </span><span style="color:#bf616a;">scheme</span><span>: </span><span style="color:#a3be8c;">https
</span><span> </span><span style="color:#bf616a;">routers</span><span>:
</span><span> </span><span style="color:#bf616a;">grafana</span><span>:
</span><span> </span><span style="color:#bf616a;">entryPoints</span><span>:
</span><span> - </span><span style="color:#a3be8c;">websecure
</span><span> - </span><span style="color:#a3be8c;">web
</span><span> </span><span style="color:#bf616a;">middlewares</span><span>:
</span><span> - </span><span style="color:#a3be8c;">redirectToHttps
</span><span> </span><span style="color:#bf616a;">rule</span><span>: </span><span style="color:#a3be8c;">Host(`xxx.cerenit.fr`)
</span><span> </span><span style="color:#bf616a;">service</span><span>: </span><span style="color:#a3be8c;">grafana@file
</span><span> </span><span style="color:#bf616a;">tls</span><span>:
</span><span> </span><span style="color:#bf616a;">certResolver</span><span>: </span><span style="color:#a3be8c;">le
</span><span> </span><span style="color:#bf616a;">services</span><span>:
</span><span> </span><span style="color:#bf616a;">grafana</span><span>:
</span><span> </span><span style="color:#bf616a;">loadBalancer</span><span>:
</span><span> </span><span style="color:#bf616a;">servers</span><span>:
</span><span> - </span><span style="color:#bf616a;">url</span><span>: </span><span style="color:#a3be8c;">http://127.0.0.1:3000/
</span></code></pre>
<p>Pour un serveur, la migration de Traefik vers Caddy fait passer le fichier de configuration de 172 lignes à 27 - soit presque 6 fois moins ! 😏</p>
<ul>
<li><a rel="noopener" target="_blank" href="https://github.com/lucaslorentz/caddy-docker-proxy">Caddy-Docker-Proxy</a> via <a rel="noopener" target="_blank" href="https://dev.to/jhot/caddy-docker-proxy-like-traefik-but-better-565l">Caddy Docker Proxy, Like Traefik But Better?</a> : 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.</li>
</ul>
<p>Exemple:</p>
<pre data-lang="yaml" style="background-color:#2b303b;color:#c0c5ce;" class="language-yaml "><code class="language-yaml" data-lang="yaml"><span style="color:#bf616a;">services</span><span>:
</span><span> </span><span style="color:#bf616a;">whoami</span><span>:
</span><span> </span><span style="color:#bf616a;">image</span><span>: </span><span style="color:#a3be8c;">traefik/whoami
</span><span> </span><span style="color:#bf616a;">networks</span><span>:
</span><span> - </span><span style="color:#a3be8c;">caddy
</span><span> </span><span style="color:#bf616a;">labels</span><span>:
</span><span> </span><span style="color:#bf616a;">caddy</span><span>: </span><span style="color:#a3be8c;">whoami.example.com
</span><span> </span><span style="color:#bf616a;">caddy.reverse_proxy</span><span>: "</span><span style="color:#a3be8c;">{{upstreams 80}}</span><span>"
</span><span>
</span><span style="color:#bf616a;">networks</span><span>:
</span><span> </span><span style="color:#bf616a;">caddy</span><span>:
</span><span> </span><span style="color:#bf616a;">external</span><span>: </span><span style="color:#d08770;">true
</span></code></pre>
Web, Ops & Data - Novembre 20202020-11-25T09:30:00+01:002020-11-25T09:30:00+01:00
Unknown
https://cerenit.fr/blog/web-ops-and-data-novembre-2020/<p>Ce soir, il y a la <a rel="noopener" target="_blank" href="https://www.ptsm.io/#ptsm-8">8ème édition</a> du <a rel="noopener" target="_blank" href="https://www.ptsm.io/">Paris Time Series Meetup</a> sur <a rel="noopener" target="_blank" href="https://aws.amazon.com/fr/blogs/aws/store-and-access-time-series-data-at-any-scale-with-amazon-timestream-now-generally-available/">AWS TimeStream</a>.</p>
<h3 id="cloud">Cloud</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.ovh.com/fr/news/presse/cpl1685.ovhcloud-google-cloud-annoncent-partenariat-strategique-co-construire-solution-confiance">OVHcloud et Google Cloud annoncent un partenariat stratégique pour co-construire une solution de confiance en Europe</a> : Les service Anthos de Google seront disponibles dans les infrastructures et hébergés par les équipes OVHCloud. Cela peut être intéressant pour ceux qui ont envie d'utiliser les services Google (sous réserve qu'ils soient disponible dans une version Anthos) tout en gardant les données à l'abri du cloud act (à vérifier en détail - notamment ce qu'il se gère ou pas au travers de la console cloud google). Une initiative intéressante pour le moins.</li>
<li><a rel="noopener" target="_blank" href="https://www.clever-cloud.com/blog/features/2020/11/05/ovh-clever-cloud-zones/">New Clever Cloud Zones on top of OVHcloud in APAC and EMEA</a> : Clever Cloud profite de son partenariat avec OVHCloud pour se déployer également dans de nouvelles zones (Roubaix, Sidney, Sinagpour, et Varsovie).</li>
<li><a rel="noopener" target="_blank" href="https://www.hashicorp.com/blog/terraform-0-14-adds-the-ability-to-redact-sensitive-values-in-console-output">Terraform 0.14 Adds the Ability to Redact Sensitive Values in Console Output</a> : Terraform 0.14 (beta) n'affichera plus les informations marquées comme sensibles dans les informations qu'il affiche.</li>
<li><a rel="noopener" target="_blank" href="https://www.hashicorp.com/blog/terraform-0-14-adds-a-new-concise-diff-format-to-terraform-plans">Terraform 0.14 Adds a New Concise Diff Format to Terraform Plans</a> : Terraform 0.14 (beta) proposera aussi un diff plus compact permettant de mieux appréhender les différences d'un plan à l'autre.</li>
</ul>
<h3 id="code">Code</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://github.com/newren/git-filter-repo/">git-filter-repo</a> : si vous avez besoin de manipuler votre dépot git, comme par ex le fait de <a rel="noopener" target="_blank" href="https://medium.com/@ayushya/move-directory-from-one-repository-to-another-preserving-git-history-d210fa049d4b">déplacer un projet git dans un autre en gardant l'historique</a>, alors git-filter-repo permet de le faire assez facilement.</li>
</ul>
<h3 id="container-et-orchestration">Container et orchestration</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://helm.sh/blog/new-location-stable-incubator-charts/">New Location For Stable and Incubator Charts</a> : le 13/11, les dépots stable et incubator de helm auront migrés. Les versions 2.17.0+ et 3.4.0+ de Helm feront la redirection entre les anciennes et nouvelles urls. Pour des clients plus vieux, il faudra redéclarer les urls de stable et incubator. L'image de tiller bouge également.</li>
<li><a rel="noopener" target="_blank" href="https://d2iq.com/blog/d2iq-takes-the-next-step-forward">D2iQ Takes the Next Step Forward</a> : D2iQ annonce la fin de son investissement sur DC/OS et sa concentration sur son offre kubernetes (et la transition DC/OS vers kubernetes pour ses clients).</li>
<li><a rel="noopener" target="_blank" href="https://medium.com/google-cloud/setting-up-cloud-operations-for-gke-a21b49979693">Setting up Cloud Operations for GKE</a> et <a rel="noopener" target="_blank" href="https://medium.com/google-cloud/troubleshooting-services-on-gke-872470e60d51">Troubleshooting services on GKE</a> : une bonne raison de plus d'avoir un clustr 1.15+ chez GKE. Cloud Operations permet d'avoir un dashboard assez sympathique pour visualiser et diagnostique l'état d'un cluster GKE. Reste ensuite la partie alerting à ajuster à vos besoins.</li>
<li><a rel="noopener" target="_blank" href="https://medium.com/@adamparco/announcing-k0s-the-smallest-simplest-kubernetes-distribution-3626c86575d5">Announcing k0s, the Smallest, Simplest Kubernetes Distribution</a> : Mirantis, en plus de <a rel="noopener" target="_blank" href="https://k8slens.dev/">Lens</a>, ajoute à son arc une nouvelle distribution kubernetes nommée "<a rel="noopener" target="_blank" href="https://k0sproject.io/">k0s</a>". Multi-usages (Cloud, IoT, Edge, Bare Metal, etc), elle vise à simplifier le dépoiement d'un cluster kubernetes avec un <a rel="noopener" target="_blank" href="https://github.com/k0sproject/k0s/blob/main/docs/architecture.md">binaire unique contenant tout les éléments nécessaires</a> pour piloter votre cluster.</li>
<li><a rel="noopener" target="_blank" href="https://www.ovh.com/blog/ovhcloud-managed-kubernetes-certified-kubernetes-1-19/">OVHcloud Managed Kubernetes certified Kubernetes 1.19</a> : OVHCloud propose maintenant kubernetes 1.19 (et la version 1.14 ne sera plus disponible à partir de <a rel="noopener" target="_blank" href="http://travaux.ovh.net/?do=details&id=47588">janvier 2021</a>)</li>
</ul>
<h3 id="sql">SQL</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://vitess.io/blog/2020-10-27-announcing-vitess-8/">Announcing Vitess 8</a> : Vitess, la base distribuée prévue pour un déploiement sur kubernetes et avec une compatibilité MySQL arrive en version 8 et améliore son support de MySQL et des principales librairies et frameworks dans différents langages.</li>
</ul>
<h3 id="systeme">Système</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://lwn.net/SubscriberLink/835962/ae41b27bc20699ad/">Deprecating scp</a> : qui n'a pas fait un <code>scp file destination:/path/to/file</code> ? La commande scp est victime de nombreuses failles. Du coup, elle va être dépréciée. Néanmoins une initiative vise à maintenir uen commande <code>scp</code> mais se fondant sur <code>sftp</code> et son modèle de sécurité.</li>
<li><a rel="noopener" target="_blank" href="https://github.com/ogham/dog">ogham/dog</a> : dog est une réécriture de dig en rust avec coloration syntaxique et différentes fonctionnalités comme le support de DoH, DoT, etc.</li>
<li><a rel="noopener" target="_blank" href="https://k6.io/">k6</a> : k6 est un outil de test de performance avec lequel on peut définir des scénarios plus ou moins élaborés suivant ses besoins ; je l'avais recommandé à un client pour faire des tests de performance d'API; la version <a rel="noopener" target="_blank" href="https://k6.io/blog/k6-v0.29">0.29</a> vient de sortir.</li>
</ul>
<h3 id="timeseries">Timeseries</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.influxdata.com/blog/influxdata-advances-possibilities-of-time-series-data-with-general-availability-of-influxdb-2-0/">InfluxData advances possibilities of time series data with general availability of InfluxDB 2.0</a> : InfluxDB 2.0 OSS est (enfin) là et un <a rel="noopener" target="_blank" href="https://docs.influxdata.com/influxdb/v2.0/upgrade/v1-to-v2/">guide de mise à jour 1.x vers 2.x 0SS</a> est disponible</li>
<li><a rel="noopener" target="_blank" href="https://www.influxdata.com/blog/announcing-influxdb-iox/">Announcing InfluxDB IOx – The Future Core of InfluxDB Built with Rust and Arrow</a> : Paul Dix a annoncé le nouveau projet phare autour d'InfluxDB avec une réécriture d'une partie du coeur d'InfluxDB pour traiter les soucis de cardinalité et aller plus loin dans la partie analytique (avec un support de SQL). Cela sera basé sur les projets Apache Arrow, le format de fichier Parquet et ce sera écrit en Rust. A suivre !</li>
<li><a rel="noopener" target="_blank" href="https://www.influxdays.com/past-events-na-virtual-experience-2020/">InfluxDays North America 2020</a> : les supports et vidéo de cette édition sont en ligne. Vous y retrouvez notamment des détails sur le <a rel="noopener" target="_blank" href="https://youtu.be/pnwkAAyMp18">projet IOx par Paul Dix</a>, la <a rel="noopener" target="_blank" href="https://youtu.be/dADl6atVaeY">roadmap produit par Tim Hall</a> ou encore <a rel="noopener" target="_blank" href="https://youtu.be/HYlWr5uIKok">la mise à jour Influx DB OSS 1.x vers 2.x</a>. Sans oublier les sessions <a rel="noopener" target="_blank" href="https://youtu.be/r7HlMq93fI8">pour se mettre à Flux</a> ou encore <a rel="noopener" target="_blank" href="https://youtu.be/u1iuxXDvTcQ">l'intégration Flux/Grafana</a> et bien d'autres choses encore.</li>
</ul>
<h3 id="astuce-du-mois">Astuce du mois</h3>
<p>Pour ceux sous Fedora et utilisant <a rel="noopener" target="_blank" href="https://podman.io/">podman</a> en alternative au binaire docker, pour se connecter à la registry google (<a rel="noopener" target="_blank" href="https://cloud.google.com/container-registry/docs/advanced-authentication#linux-macos">via</a>):</p>
<pre style="background-color:#2b303b;color:#c0c5ce;"><code><span>gcloud auth print-access-token | podman login -u oauth2accesstoken --password-stdin gcr.io
</span></code></pre>
Web, Ops & Data - Mai 20202020-05-27T09:30:00+02:002020-05-27T09:30:00+02:00
Unknown
https://cerenit.fr/blog/web-ops-and-data-mai-2020/<p>Le mois prochain, dans le cadre d'<a rel="noopener" target="_blank" href="https://www.influxdays.com/london-2020/">InfluxDays London</a>, j'aurai le plaisir de présenter un talk sur le passage d'un monitoring Bare Metal vers un monitoring dans un monde Kubernetes avec Telegraf et InfluxDB.</p>
<h3 id="cloud">Cloud</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://github.com/hashicorp/terraform/issues/25016">Terraform v0.13.0 beta program</a> : Terraform 0.13 (beta) devrait supporter au niveau des modules <code>depends_on</code>, <code>count</code> et <code>for_each</code>. Cela devrait éviter des dépendances parfois cryptiques.</li>
<li><a rel="noopener" target="_blank" href="https://www.hashicorp.com/blog/deploy-any-resource-with-the-new-kubernetes-provider-for-hashicorp-terraform/">Deploy Any Resource With The New Kubernetes Provider for HashiCorp Terraform</a> : la prochaine version du provider kubernetes de terraform permettra de déployer n'importe quelle ressource. Pratique ! Il vous faudra un cluster kubernetes 1.17+ pour utliser la fonctionnalité "Server Side Apply".</li>
<li><a rel="noopener" target="_blank" href="https://www.grottedubarbu.fr/ovh-api-openstack/">OVH : Utilisation de l'API OpenStack</a> : Tutoriel pour le déploiement d'un wordpress sur un cluser k3s chez OVH en utilisant l'API OpenStack ; le reste du blog <a rel="noopener" target="_blank" href="https://www.grottedubarbu.fr/">La Grotte du Barbu</a> fournit plein de ressources sur kubernetes, traefik, docker, etc.</li>
</ul>
<h3 id="container-orchestration">Container & orchestration</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.linuxuprising.com/2019/11/how-to-install-and-use-docker-on-fedora.html">How To Install Docker On Fedora 32 Or 31 (And Alternatives)</a> : Même si l'utilisation de podman est recommandée en lieu et place de docke-ce depuis Fedora 31, il peut être nécessaire de vouloir utiliser docker-ce sous Fedora. Avec Fedora 32, il faut en plus des cgroups v1 à activer, il y a une règle firewall à ajouter pour que vos conteneurs aient accès au réseau / à internet.</li>
<li><a rel="noopener" target="_blank" href="https://goharbor.io/blog/harbor-2.0/">Harbor 2.0</a> : Version 2.0 de la registry Harbor qui permet d'héberger aussi des charts Helm. Pour la partie scan de vulnérabilités, le produit Clair de Quay a été remplacé par <a rel="noopener" target="_blank" href="https://github.com/aquasecurity/trivy">Aqua Trivy</a></li>
<li><a rel="noopener" target="_blank" href="https://containo.us/blog/announcing-maesh-1-2/">Announcing Maesh 1.2</a> : la solution de Service Mesh de Containous basée sur Traefik sort en 1.2 ; elle se base sur Traefik 2.2 et apporte donc le support de l'UDP au niveau reverse proxy. Cette version permet aussi des améliorations au niveau ACL, gestion de la configuration et gestion des middlewares par service.</li>
<li><a rel="noopener" target="_blank" href="https://www.percona.com/blog/2020/05/07/introduction-to-percona-kubernetes-operator-for-percona-xtradb-cluster/">Introduction to Percona Kubernetes Operator for Percona XtraDB Cluster</a></li>
<li><a rel="noopener" target="_blank" href="https://blog.jetstack.io/blog/cert-manager-0.15-and-beyond/">Cert-manager v0.15 and beyond</a></li>
<li><a rel="noopener" target="_blank" href="https://cdk8s.io/">CDK for Kubernetes</a> : AWS vient de sortir un "Cloud Development Kit" permettant de manipuler et déployer des ressources kubernetes en python, typescript ou javascript.</li>
</ul>
<h3 id="devops">DevOps</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://devops.training.barpilot.io/">DevOps : Discovering, Learning and Sharing</a> (<a rel="noopener" target="_blank" href="https://github.com/guilhem/devops-training">code source</a>) : Guilhem vient de publier sa formation de culture DevOps ; à consulter !</li>
<li><a rel="noopener" target="_blank" href="https://shows.acast.com/radio-devops">Radio DevOps</a> : un podcast qui s'améliore d'épisode en épisode et plutôt adressé à des débutants dans le monde du DevOps.</li>
</ul>
<h2 id="iot">IoT</h2>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=274595">Raspberry Pi 4 USB mass storage beta (beta means it not ready yet, and not officially released!)</a> : Le Raspberry Pi 4 va pouvoir démarrer sur un périphérique USB (clé USB, disque SSD, etc) avec l'arrivée du prochain firmware. La nécessité de la SDCard va disparaitre.</li>
</ul>
<h3 id="time-series">Time Series</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.timescale.com/blog/multi-node-petabyte-scale-time-series-database-postgresql-free-tsdb/">A multi-node, elastic, petabyte scale, time-series database on Postgres for free (and more ways we are investing in our community)</a> : Timescale annonce que sa version cluster de TimescaleDB sera gratuite (sous licence Timescale, source code available mais pas le droit de faire un produit SaaS avec). La version monoserveur reste sous licence Apache 2.</li>
<li><a rel="noopener" target="_blank" href="https://grafana.com/blog/2020/05/18/grafana-v7.0-released-new-plugin-architecture-visualizations-transformations-native-trace-support-and-more/">Grafana v7.0 released: New plugin architecture, visualizations, transformations, native trace support, and more</a> : A l'occasion de la <a rel="noopener" target="_blank" href="https://grafana.com/about/events/grafanacon/2020/#schedule">GrafanaCon 2020</a>, Grafana Labs a sorti notamment Grafana 7.0 avec des tonnes d'amélioration. Il va falloir un peu de temps pour bien apprécier tout cela.</li>
<li><a rel="noopener" target="_blank" href="https://grafana.com/about/events/grafanacon/2020/#schedule">GrafanaCon 2020</a> : la conférence annuelle de Grafana s'est tenue tout le mois de Mai, les vidéos sont accessibles sur la page de chaque talk après avoir saisi son email. Je n'ai malheureusement pas encore eu le temps de les visionner. <a rel="noopener" target="_blank" href="https://grafana.com/blog/2020/05/21/cortex-v1.1-released-with-improved-reliability-and-performance/">Cortex 1.1</a> et <a rel="noopener" target="_blank" href="https://grafana.com/blog/2020/05/20/loki-v1.5.0-released-with-no-more-dependency-on-a-separate-index-store">Loki 1.5</a> y ont notamment été annoncés.</li>
</ul>
Web, Ops & Data - Aout 20182018-08-29T09:30:00+02:002018-08-29T09:30:00+02:00
Unknown
https://cerenit.fr/blog/web-ops-and-data-aout-2018/<h3 id="cloud-open-source">Cloud & Open Source</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://redislabs.com/community/commons-clause/">Redis Labs - Commons Clause</a> - <a rel="noopener" target="_blank" href="http://antirez.com/news/120">Redis will remain BSD licensed</a> - <a rel="noopener" target="_blank" href="http://antirez.com/news/121">Redis is not "open core"</a>: ça chauffe entre l’OSS et les fournisseurs de cloud - pour que les fournisseurs de cloud évitent de se faire de l'argent sur le dos des solutions Open Source et sans contribuer en retour, Redis Labs va changer la licence de certains modules (et pas de tous le logiciel) pour limiter la revente via les fournisseurs de Cloud.</li>
<li><a rel="noopener" target="_blank" href="https://www.influxdata.com/blog/its-time-for-the-open-source-community-to-get-real/">It’s time for the open source community to get real</a> : réflexion intéressance de Paul Dix (CTO InfluxData) sur le sujet du financement de l'Open Source au regard de l'événement Redis Labs.</li>
</ul>
<h3 id="container-et-orchestration">Container et orchestration</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.docker.com/2018/07/kubernetes-is-now-available-in-docker-desktop-stable-channel/">Kubernetes is Now Available In Docker Desktop Stable Channel</a></li>
<li><a rel="noopener" target="_blank" href="https://istio.io/blog/2018/announcing-1.0/">Announcing Istio 1.0</a> : la solution de service mesh à la mode vient de passer l'étape de la version 1.0 - Les <a rel="noopener" target="_blank" href="https://istio.io/about/notes/1.0/">release notes de la 1.0</a> vous donneront le détail. Reste à savoir <a rel="noopener" target="_blank" href="https://www.infoq.com/articles/service-mesh-promise-peril">si vous devez ou non utiliser une solution de Service Mesh...</a></li>
<li><a rel="noopener" target="_blank" href="https://blog.wescale.fr/2018/08/16/kubernetes-comment-ecrire-un-deployment/">Kubernetes : comment écrire un déploiemnt</a> : Billet faisant le tour des principales options de l'objet "Deployment" sous Kubernetes. Certaines options sont toutefois un peu trop résumées.</li>
</ul>
<h3 id="big-data-no-sql">(Big) Data & (No)SQL</h3>
<ul>
<li><a rel="noopener" target="_blank" href="http://thelastpickle.com/blog/2018/07/24/reaper-1_2-released.html">Reaper 1.2 Released</a> : 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 (<a rel="noopener" target="_blank" href="https://github.com/thelastpickle/cassandra-reaper/pull/472">#472</a>, <a rel="noopener" target="_blank" href="https://github.com/thelastpickle/cassandra-reaper/pull/473">#473</a>, <a rel="noopener" target="_blank" href="https://github.com/thelastpickle/cassandra-reaper/pull/474">#474</a>)</li>
<li><a rel="noopener" target="_blank" href="http://thelastpickle.com/blog/2018/08/02/Re-Bootstrapping-Without-Bootstrapping.html">Re-Bootstrapping Without Bootstrapping</a> : 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".</li>
<li><a rel="noopener" target="_blank" href="https://www.confluent.io/blog/introducing-confluent-platform-5-0/">Introducing Confluent Platform 5.0</a> : à l'occasion de la sortie d'<a rel="noopener" target="_blank" href="https://www.apache.org/dist/kafka/2.0.0/RELEASE_NOTES.html">Apache Kafka 2.0</a>, 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.</li>
<li><a rel="noopener" target="_blank" href="https://hackernoon.com/showdown-mysql-8-vs-postgresql-10-3fe23be5c19e">Showdown: MySQL 8 vs PostgreSQL 10 – Hacker Noon</a> : l'article confirme qu'avec MySQL 8.0, MySQL rattraperait Postgres au niveau des grandes fonctionnalités de base.</li>
</ul>
<h3 id="devops">DevOps</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://landing.google.com/sre/book.html">The Site Reliability Workbook</a> : 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.</li>
</ul>
<h3 id="timeseries">Timeseries</h3>
<ul>
<li>Querying Prometheus with Flux (<a rel="noopener" target="_blank" href="https://youtu.be/VvJx0WTiGcA?t=5h47m50s">video</a> - <a rel="noopener" target="_blank" href="https://speakerdeck.com/pauldix/querying-prometheus-with-flux">slides</a>) : 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.</li>
<li><a rel="noopener" target="_blank" href="https://www.cncf.io/blog/2018/08/10/cncf-to-host-openmetrics-in-the-sandbox/">CNCF to Host OpenMetrics in the Sandbox</a> : OpenMetrics est une initiative de standardisation des formats de métriques - le projet rentre donc dans l'initiative de la CNCF. </li>
<li><a rel="noopener" target="_blank" href="https://www.influxdata.com/blog/openmetrics-joins-cncf/">OpenMetrics to Join the CNCF</a> ; <a rel="noopener" target="_blank" href="https://twitter.com/pauldix/status/1027954527075532802">Paul Dix</a> 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.</li>
<li><a rel="noopener" target="_blank" href="https://prometheus.io/blog/2018/08/09/prometheus-graduates-within-cncf/">Prometheus Graduates Within CNCF</a> : toujours coté CNCF, Prometheus, la plateforme de métriques, est le second projet (après Kubernetes) à passer au niveau officiel.</li>
<li><a rel="noopener" target="_blank" href="https://blog.timescale.com/timescaledb-vs-influxdb-for-time-series-data-timescale-influx-sql-nosql-36489299877">TimescaleDB vs. InfluxDB: purpose built differently for time-series data</a> : 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.</li>
</ul>
Web, Ops & Data - Juin 20182018-06-27T09:30:00+02:002018-06-27T09:30:00+02:00
Unknown
https://cerenit.fr/blog/web-ops-and-data-juin-2018/<h3 id="big-data-machine-learning-co">Big Data, Machine Learning & co</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.confluent.io/blog/level-up-your-ksql/">Level Up Your KSQL</a> : Confluent met à disposition une série de vidéos pour la prise en main de KSQL.</li>
<li><a rel="noopener" target="_blank" href="https://www.confluent.io/blog/rounding-up-kafka-summit-london-2018/">Rounding Up Kafka Summit London 2018</a> : Confluent a égalemient mis à disposition les vidéos du dernier Kafka Summit à Londres.</li>
<li><a rel="noopener" target="_blank" href="https://www.confluent.io/blog/introducing-confluent-hub/">Introducing Confluent Hub</a> : Confluent lance une plateforme communautaire autour de Kafka Connect.</li>
</ul>
<h3 id="cloud">Cloud</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://aws.amazon.com/fr/blogs/aws/amazon-eks-now-generally-available/">Amazon EKS – Now Generally Available</a> : l'offre managée Kubernetes d'AWS sort en version stable.</li>
<li><a rel="noopener" target="_blank" href="https://azure.microsoft.com/blog/azure-kubernetes-service-aks-ga-new-regions-new-features-new-productivity/">Azure Kubernetes Service (AKS) GA – New regions, more features, increased productivity</a> : Pas de jaloux - Azure est aussi prêt pour son offre managée kubernetes.</li>
<li><a rel="noopener" target="_blank" href="https://www.hashicorp.com/blog/hashicorp-announces-terraform-support-aws-kubernetes">Announcing Terraform Support for Kubernetes Service on AWS</a> : Hashicorp profite de l'annonce d'AWS pour annoncer également que Terraform permet de provisionner un cluster EKS.</li>
<li><a rel="noopener" target="_blank" href="https://blog.hasura.io/gke-vs-aks-vs-eks-411f080640dc">GKE vs AKS vs EKS – Hasura</a> : comparatif synthétique des solutions managées kubernetes de Google, Azure et AWS.</li>
</ul>
<h3 id="container-orchestration">Container & Orchestration</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.docker.com/2018/06/compose-easier-to-use-with-application-packages/">Making Compose Easier to Use with Application Packages</a> : Docker Inc. sort un nouveau produit appelé "docker-app". Il se veut comme une surcouche à docker-compose en permettant d'injecter des variables dans vos fichiers docker-compose.yml. Ainsi, vous n'auriez plus qu'un seul fichier docker-compose avec ses variables et les valeurs de ses variables dans des fichiers additionnels. Lors de l'exécution du container, docker-app réconcilie les deux et lance le conteneur avec les bonnes valeurs. Docker Swarm et Kubernetes seraient supportés si l'on en croit les exemples. Rigolo, sur le principe, c'est exactement ce que je fais pour une mission actuellement... </li>
<li><a rel="noopener" target="_blank" href="https://blog.zenika.com/2018/06/25/decouverte-de-buildkit/">Découverte de Buildkit</a> : dans le cadre du découpage de Docker en programme modulaire indépendant, Moby avait lancé Buildkit. Il s'agit du builder d'images. L'article présente son fonctionnement et son architecture.</li>
<li><a rel="noopener" target="_blank" href="https://www.hashicorp.com/blog/consul-1-2-service-mesh">HashiCorp Consul 1.2: Service Mesh</a> : Hashicorp sort en beta son offre de service mesh basé sur Consul. Après le "Service Discovery" et le "Service Configuration", voilà le Service Mesh. A voir dans la vraie vie mais on retrouve apparemment pas mal de fonctionnalités disponibles dans <a rel="noopener" target="_blank" href="https://istio.io/">Istio</a>.</li>
</ul>
<h3 id="no-sql">(No)SQL</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://vitess.io/">Vitess</a> : J'en avais entendu parler, j'ai profité <a rel="noopener" target="_blank" href="https://softwareengineeringdaily.com/2018/05/15/vitess-scaling-mysql-with-sugu-sougoumarane/">d'un épisode de Software Engineering Daily</a> pour en savoir un petit peu plus : Je ne suis pas encore au bout du podcast mais cela semble être une couche entre l’application et la DB - elle analyse la requête et la distribue ensuite au sein du cluster. Vitess permettrait notamment que le développeur n’ait pas à connaitre la logique de clustering/sharding des données. L’overhead n’a pas encore été mentionné.</li>
<li><a rel="noopener" target="_blank" href="https://groups.google.com/forum/#!topic/redis-db/9FcwPtutyyQ">Redis 5.0 RC1</a> : la version 5.0 de <a rel="noopener" target="_blank" href="https://redis.io/">Redis</a> pointe le bout de son nez avec notamment le type de donnée Stream - cf <a rel="noopener" target="_blank" href="https://redis.io/topics/streams-intro">Introduction to redis streams</a></li>
<li><a rel="noopener" target="_blank" href="https://medium.com/blablacar-tech/streaming-data-out-of-the-monolith-building-a-highly-reliable-cdc-stack-d71599131acb">Streaming Data out of the Monolith: Building a Highly Reliable CDC Stack</a> : un CDC, Change Data Capture, est un système qui capture les changements de données (INSERT, UPDATE, DELETE) d'une source de données. BlaBlaCar explique ici comment ils ont mis en place leur CDC sur la base de <a rel="noopener" target="_blank" href="http://debezium.io/">Debezium</a> et Kafka. Un des défis à relever étant la gestion de la déduplication des données.</li>
<li><a rel="noopener" target="_blank" href="https://www.elastic.co/blog/elasticsearch-6-3-0-released">Elasticsearch 6.3.0 Released</a> : plein de nouveautés mais la plus symoblique étant un début de support d'un requêtage SQL dans Elasticsearch.</li>
</ul>
<h3 id="securite">Sécurité</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://medium.com/@brannondorsey/attacking-private-networks-from-the-internet-with-dns-rebinding-ea7098a2d325">Attacking Private Networks from the Internet with DNS Rebinding</a> : <em>TL;DR Following the wrong link could allow remote attackers to control your WiFi router, Google Home, Roku, Sonos speakers, home thermostats and more.</em> il est donc possible d'abuser un navigateur via un DNS malicieux et donc être en mesure de scanner le réseau local de la personne abusée. Il faut donc considérer le réseau local comme une zone hostile et y appliquer les bonnes pratiques habituelles (authentification, urls en https, etc)</li>
</ul>
<h3 id="timeseries">Timeseries</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.octo.com/les-capacites-dalerting-de-kapacitor/">Les capacités d’alerting de Kapacitor</a> : un billet sur l'utilisation de kapacitor pour générer des alertes. J'aurais bien aimé pouvoir l'avoir écrit...</li>
<li><a rel="noopener" target="_blank" href="https://www.influxdata.com/blog/influxdata-log-release/">“Metrics First” Approach to Log Analysis</a> : avec la version 1.7 de Telegraf (l'agent de collecte), un nouveau <a rel="noopener" target="_blank" href="https://github.com/influxdata/telegraf/tree/master/plugins/inputs/syslog">plugin syslog</a> permet d'exposer les logs sous la forme d'événements. Et avec <a rel="noopener" target="_blank" href="https://www.influxdata.com/blog/chronograf-1-5-and-kapacitor-1-5-released/">Chonograf 1.5</a>, il est possible de voir ses données sous un format tabulaire. Pour autant, TICK n'a pas vocation à devenir une centrale de logs (à la ELK & co).</li>
</ul>
<h3 id="astuce-s-du-mois">Astuce(s) du mois</h3>
<p>Faîtes-vous plaisir et écouter le podcast <a rel="noopener" target="_blank" href="http://artisandeveloppeur.fr/blog/">Artisan Développeur</a> - dans des formats de 10mn environ, un sujet autour de l'agilité, des tests, du TDD, de la responsabilité des développeurs, de SaFE, et de tout ce qui fait partie de notre quotidien de développeurs sont abordés. Depuis quelques épisodes, cela se fait en duo avec d'autres personnes (comme <a rel="noopener" target="_blank" href="https://jp-lambert.me/">JP Lambert</a>) ce qui rend les échanges encore plus intéressants. Vous retrouvez le podcast sur Soundcloud, Pocketcasts, etc.</p>
Web, Ops & Data - Mai 20182018-05-30T09:30:00+02:002018-05-30T09:30:00+02:00
Unknown
https://cerenit.fr/blog/web-ops-and-data-mai-2018/<h3 id="big-data-machine-learning-co">Big Data, Machine Learning & co</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.confluent.io/blog/confluent-platform-4-1-with-production-ready-ksql-now-available/">Confluent Platform 4.1 with Production-Ready KSQL Now Available</a> : Basé sur Apache Kafka 1.1, la nouvelle mouture de la platform de Confluent signe l’arrivée de KSQL comme “production ready” notamment - a voir si le “Replicator” est dans la version OSS ou bien EE seulement. Le seul souci que j’ai avec kafka, c’est que l’on ne peut pas monitorer finement la consommation des queues vu que l’intelligence est coté consommateur et pas coté broker... Même avec la version EE et le Control Center qui ne remonte que des métriques globaux mais ne donne pas de détail sur l'état du topic.</li>
<li><a rel="noopener" target="_blank" href="https://www.infoq.com/news/2018/04/tensorflow-javascript-browser">Tensorflow with Javascript Brings Deep Learning to the Browser</a> : j'avais lu l'annonce il y a quelques temps mais sans bien comprendre l'intérêt de la chose. L'idée ici est de pouvoir faire tourner Tensorflox dans le navigateur au travers de Javascript et de WebGL (et donc de tirer parti des capacités de la carte graphique). En plus de rendre accessible le ML aux développeurs Web, cela permettrait aussi de soumettre des modèles ou d'entrainer des modèles dans le navigateur de l'utilisateur. Vers le Machine Learning au plus près de l'utilisateur ?</li>
<li><a rel="noopener" target="_blank" href="https://www.confluent.io/blog/introducing-confluent-platform-preview-releases/">Introducing Confluent Platform Preview Releases</a> : Confluent met à disposition des versions intermédiaires de sa distribution. Cette première version permet de jouer avec KSQL et il semble que l'interface Control Center soit disponible sans frais particuliers. On notera d'ailleurs qu'en plus de la partie KSQL, des efforts ont été faits sur la partie inspection de topic et consumer lag. Cela progresse donc enfin dans l'observabilité et le monitoring d'un cluster kafka.</li>
<li><a rel="noopener" target="_blank" href="https://www.confluent.io/blog/introducing-the-confluent-operator-apache-kafka-on-kubernetes/">Introducing the Confluent Operator: Apache Kafka® on Kubernetes Made Simple</a> : Confluent va mettre à disposition un "Kubernetes Operator" permettant de déployer Kafka ou Confluent platform de façon (plus) aisée sur un cluster Kubernetes. Les templates Kubernetes et les images Docker vont être mis à disposition le mois prochain et le Kubernetes Operator d'ici le milieu d'année.</li>
</ul>
<h3 id="container-et-orchrestration">Container et Orchrestration</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.docker.com/2018/04/announcing-docker-enterprise-edition-2-0/">Announcing Docker Enterprise Edition 2.0</a> : Docker Inc annonce la version 2.0 de sa version Entreprise. Elle se veut indépendante de tout lock-in (Multi-Linux, Multi-OS, Multi-Cloud) et permettre d'utiliser soit Swarm ou Kubernetes comme orchestrateur. Cette version apporte également un <a rel="noopener" target="_blank" href="https://blog.docker.com/2018/03/enhanced-layer-7-routing-swarm-docker-enterprise-edition-beta/">routage avancé au niveau de Swarm (niveau L7)</a>.</li>
<li><a rel="noopener" target="_blank" href="https://github.com/portainer/portainer/pull/1828">feat(agent): add agent support</a> : <a rel="noopener" target="_blank" href="https://portainer.io/">Portainer</a> est une solution de gestion d'un environnement Docker ou Docker Swarm. L'inconvénient sous Docker Swarm est que l'instance Portainer ne voit que les containers présents sur le même noeud que le sien et pas l'ensemble des containers (cf <a rel="noopener" target="_blank" href="https://github.com/portainer/portainer/issues/461">[FEATURE REQUEST] Be able to use all the Portainer built-in functionalities in all the containers running in a swarm cluster</a>). Via un mécanisme d'agent (code source fermé) à déployer sur chaque noeud, l'éditeur annonce pouvoir contourner les limitations de l'API Docker. La justification du code fermée est motivée par les efforts de R&D réalisés. Un <a rel="noopener" target="_blank" href="https://gist.github.com/deviantony/a332e874756af8b7c8e009b9df1a5c8a">gist</a> indique comment installer l'agent. Il n'est pas stipulé si en plus d'un code fermé, il y aura une offre commerciale autour ou pas.</li>
<li><a rel="noopener" target="_blank" href="https://blog.containo.us/traefik-1-6-get-our-latest-tetedemoine-1859164bf521">Traefik 1.6 — Get Our Latest tetedemoine!</a> : la version 1.6 apporte le support des certificats Wildcard Let's Encrypt, une nouvelle Web UI, le support des outils de tracing Zipkin et OpenTracing, le support du stockage des certficiats dans les secrets Kubernetes, une capacité d'altération des logs en vue du respect de la GDPR et une homogénéisation interne sur la gestion des labels.</li>
<li><a rel="noopener" target="_blank" href="https://cloudplatform.googleblog.com/2018/05/Open-sourcing-gVisor-a-sandboxed-container-runtime.html">Open-sourcing gVisor, a sandboxed container runtime</a> : Google vient de rendre opensource gvisor, une mécanisme permettant d'accroitre l'isolation des containers via un mécanisme de Sandbox. C'est "transaprent" pour l'utilisateur au sens qu'il peut utiliser gvisor de la même façon qu'il interagissait avec Docker ou Kubernetes. C'est juste le runtime qui change. C'est codé en go, cela intercepte les appels SYSCALLS et l'équivalent d'un noyaux linux codé en Go répond en lieu et place du noyau linux de la mâchine hôte. Par ailleurs, cette sandbox a un impact sur les performances du containers comme leurs auteurs l'expliquent bien dans le <a rel="noopener" target="_blank" href="https://kubernetespodcast.com/episode/003-gvisor/">3ème épisode du Kubernetes Podcast by Google</a>. InfoQ publie également un article sur ce sujet : <a rel="noopener" target="_blank" href="https://www.infoq.com/news/2018/05/gvisor-container-sandbox">Google Release "gVisor", a Lightweight Container Runtime Sandbox Used to Provide Secure Isolation</a></li>
<li><a rel="noopener" target="_blank" href="https://blog.jessfraz.com/post/containers-security-and-echo-chambers/">Containers, Security, and Echo Chambers</a> : Une ex employée de Docker ayant travaillé sur la sécurité et l'isolation des containers nuance le marketing autour de gvisor. Elle <a rel="noopener" target="_blank" href="https://twitter.com/jessfraz/status/986057411617107968">avait déjà nuancé</a> l'arrivée de <a rel="noopener" target="_blank" href="https://cloudplatform.googleblog.com/2018/04/introducing-kaniko-Build-container-images-in-Kubernetes-and-Google-Container-Builder-even-without-root-access.html">Kaniko</a> (le builder d'images Docker make in Google).</li>
<li><a rel="noopener" target="_blank" href="https://blog.docker.com/2018/05/introducing-play-kubernetes/">Introducing Play with Kubernetes</a> : l'équipe Docker Inc, après son <a rel="noopener" target="_blank" href="https://labs.play-with-docker.com/">Play with Docker</a> qui permet de se former à Docker depuis son poste de travail, annonce officiellement l'existence de son pendant pour Kubernetes : <a rel="noopener" target="_blank" href="https://training.play-with-kubernetes.com/">Play with Kubernetes</a>. Officiellement, car le billet indique qu'il existe depuis l'été dernier. Il se base sur le <a rel="noopener" target="_blank" href="http://container.training/">workshop de Jerome Petazzoni</a>.</li>
<li><a rel="noopener" target="_blank" href="https://kubernetes.io/blog/2018/05/24/kubernetes-containerd-integration-goes-ga/">Kubernetes Containerd Integration Goes GA</a> : <a rel="noopener" target="_blank" href="https://github.com/containerd/containerd/">Containerd</a> est un runtime de containers, venant de chez Docker Inc et placé mainteant sous l'égide de la CNCF. Il semble en bonne voie de devenir le runtime par défaut de Kubernetes en lieu et place de docker. Même si Kubernetes se défend de s'affranchir de Docker, force est de constater qu'il y a des travaux pour s'affranchir des outils estampillés Docker Inc : gvisor pourrait remplacer <code>runc</code> à terme, <a rel="noopener" target="_blank" href="https://cloudplatform.googleblog.com/2018/04/introducing-kaniko-Build-container-images-in-Kubernetes-and-Google-Container-Builder-even-without-root-access.html">kaniko</a> pourrait replacer <code>docker build</code>. La registry docker étant aussi en passe de standardisation, on peut s'attendre à voir un nouveau produit arriver. Si Kubernetes (+ Google + CNCF + ...) ont encore besoin de la liaison avec Docker d'un point de vue marketing, on a l'impression que cela cherche à s'éloigner des outils Docker Inc et dans une moindre mesure du projet Moby (qui lui même semble aussi avoir quelques distances avec Docker Inc). Certes, le docker engine de Docker Inc est basé sur containerd et donc Docker ne disparait pas de la plateforme mais ça semble bien en prendre le chemin.</li>
</ul>
<h3 id="developpement">Développement</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://tech.people-doc.com/using-github-codeowners-file.html">Using Github CODEOWNERS file</a> : Github, via un fichier CODEOWNERS, permet d'indiquer qui sont les responsables présumés d'une Pull Request. De quoi simplifier son workflow.</li>
</ul>
<h3 id="dataviz">Dataviz</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://grafana.com/blog/2018/04/26/grafana-v5.1-released/">Grafana v5.1 Released</a> : en plus de la consolidation de la version 5.x, les deux ajouts significatis sont une heatmap pour Prometheus et l'arrivée de SQL Server comme data source et donc faire des graphs sur vos données SQL Server.</li>
</ul>
<h3 id="infrastructure-as-code">Infrastructure as code</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.infoq.com/news/2018/05/terratest-infra-testing">Terratest - an Open Source Go Library for Automated Infrastructure Testing</a> : <a rel="noopener" target="_blank" href="https://github.com/gruntwork-io/terratest">Terratest</a> est une librairie en go permettant de valider une infrastructure déployée plutôt sur le cloud et avec les outils hashicorp. Il semble néanmoins possible de faire des commandes via ssh ou de l'utiliser pour des images Docker...</li>
</ul>
<h3 id="no-sql">(No)SQL</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://mysqlserverteam.com/whats-new-in-mysql-8-0-generally-available/">What’s New in MySQL 8.0? (Generally Available)</a> : même si je n'utilise plus trop MySQL (au mieux MariaDB pour quelques clients), il est intéressant de voir la progression significative de cette base avec cette nouvelle version : Window functions, Document Store, support du JSON, etc. Elle pourrait presque recommencer à concurrencer Postgres ;-)</li>
<li><a rel="noopener" target="_blank" href="https://www.percona.com/blog/2018/05/14/installing-mysql-8-on-ubuntu-16-04-lts/">Installing MySQL 8.0 on Ubuntu 16.04 LTS in Five Minutes</a> : tout est dans le titre - cela permet de déclarer le dépot Oracle/MySQL et d'accéder à differentes versions de MySQL, dont la 8.0.</li>
</ul>
<h3 id="python">Python</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.palletsprojects.com/blog/flask-1-0-released/">Flask 1.0 Released</a> : le micro framework python <a rel="noopener" target="_blank" href="http://flask.pocoo.org/">Flask</a> sort en version 1.0 après 8 années de déveloopement.</li>
</ul>
<h3 id="securite">Sécurité</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://pthree.org/2018/04/19/use-a-good-password-generator/">Use A Good Password Generator</a> : revue de différents outils de génération et gestion de mots de passe. La feuille de calcul contient plusieurs onglets et permet de faire le tour des solutions existantes.</li>
</ul>
<h3 id="tick-platform-telegaf-influxdb-chronograf-kapacitor">TICK Platform (Telegaf, InfluxDB, Chronograf, Kapacitor)</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.influxdata.com/blog/kapacitor-cqs/">Kapacitor and Continuous Queries: How To Decide Which Tool You Need</a> : la question m'a été posée à Breizhcamp et je n'avais pas forcément de réponse à fournir. Elle est fournie par l'éditeur : Conitunous Queries pour l'échantillonage et Kapacitor pour les requêtes custom et éventuellement déporter des workloads consommatrice de ressources. Le mode streaming de kapacitor permet aussi de faire vos requêtes au fil de l'eau et consommer moins de ressources (mais plus régulièrement)</li>
<li><a rel="noopener" target="_blank" href="https://www.influxdata.com/blog/intelligent-monitoring-automating-dashboard-annotations/">Intelligent Monitoring: Automating Dashboard Annotations in Chronograf</a> : tutoriel intéressant qui montre comment l'on peut générer dynamiquement des annotations sur vos graphs dans Chronograf au travers de Kapacitor. Intéressant, car en général, les annotations sont souvent posées manuellement et a posteriori par des humains et pas de façon automatique/continue.</li>
<li><a rel="noopener" target="_blank" href="https://www.influxdata.com/blog/chronograf-1-5-and-kapacitor-1-5-released/">Chronograf 1.5 and Kapacitor 1.5 Released</a> : Chronograf permet maintenant d'avoir une vue tabulaire des données (et pas uniquement un graph ou une donnée) et Kapacitor peut maintenant envoyer des alertes vers Kafka, vers plusieurs canaux Slack.</li>
</ul>
<h3 id="web">Web</h3>
<ul>
<li><a rel="noopener" target="_blank" href="http://www.infoq.com/news/2018/05/nginx-unit-dynamic-web-server">NGINX Releases Open Source Web Server with Dynamic Configuration</a> : Nginx vient de sortir <a rel="noopener" target="_blank" href="https://www.nginx.com/blog/nginx-unit-1-0-released/">la version 1.0</a> de son projet <a rel="noopener" target="_blank" href="https://www.nginx.com/products/nginx-unit/">Unit</a>. C'est un serveur web et d'application que l'on peut reconfigurer à chaud / dynamiquement au travers d'une API REST. On est encore loin des intégrations Docker/Kubernetes/Consul/... de <a rel="noopener" target="_blank" href="https://traefik.io/">Traefik</a> mais c'est un bon premier pas.</li>
</ul>
Web, Ops & Data - Janvier 20182018-01-31T09:30:00+01:002018-01-31T09:30:00+01:00
Unknown
https://cerenit.fr/blog/web-ops-and-data-janvier-2018/<h3 id="container-orchestration">Container & Orchestration</h3>
<ul>
<li><a rel="noopener" target="_blank" href="http://blog.kubernetes.io/2018/01/core-workloads-api-ga.html">Core Workloads API GA</a> : la version 1.9 de Kubernetes sortie tout début janvier marque un tourant intéressant avec le passage en stable des "Core Workload API" (Pod, ReplicationController, ReplicaSet, Deployment, DaemonSet, and StatefulSet). Avec cette stabilisation des termes, des concepts et des API, c'est le socle de Kubernetes qui se stabilise sérieusement. Une bonne raison de plus de creuser cette solution au fur et à mesure que l'écosystème va se stabiliser et se simplifier.</li>
<li><a rel="noopener" target="_blank" href="https://blog.octo.com/the-twelve-factors-kubernetes/">The Twelve-Factors Kubernetes</a> : Revue de la terminilogie et des concepts de Kubernetes au travers de 12 points et énonciation de quelques bonnes pratiques générales associées.</li>
<li><a rel="noopener" target="_blank" href="https://blog.containo.us/traefik-1-5-cancoillotte-is-here-7bd6713ae135">Traefik 1.5 - Cancoilote Is Here</a> : cette version corrige notamment le problème de méthode de génération de certificat de Let's Encrypt (voir plus bas). En plus de celà, cette version apporte notamment une gestion dynamique des certificats par frontend/backend et de la qualité de service avec la possibilité de définir des limites de consommation de ressources.</li>
<li><a rel="noopener" target="_blank" href="https://opensource.googleblog.com/2018/01/container-structure-tests-unit-tests.html">Container Structure Tests: Unit Tests for Docker Images</a> : Google vient de sortir son <a rel="noopener" target="_blank" href="https://github.com/GoogleCloudPlatform/container-structure-test">framework de tests unitaires pour les containers Docker</a>. A creuser pour voir s'il n'est possible de faire que de tests de "surface" ou bien si on peut aller plus en profondeur (mais est-ce souhaitable ?)</li>
<li><a rel="noopener" target="_blank" href="https://coreos.com/blog/coreos-agrees-to-join-red-hat/">CoreOS to join Red Hat to deliver automated operations to all</a> : CoreOS rejoint la galaxie RedHat qui fait son retour dans le monde des conteneurs... après Openshift (qui s'appuie sur Docker + Kubernetes), voilà qu'ils mettent la main sur CoreOS + Tectonic (la version de Kubernetes packagée par CoreOS), ainsi que les autres projets CoreOS (etcd, etc). Ils vont pouvoir proposer un sacré vertical et revenir dans la cour des acteurs majeurs du conteneur ; sans parler du fait qu'ils ont aussi Ansible pour la partie automatisation...</li>
</ul>
<h3 id="infrastructure">Infrastructure</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.octo.com/le-bastion-ssh/">Le Bastion SSH</a> : Petite revue théorique et pratique d'un bastion SSH, la passerelle SSH qui vous permet d'accéder depuis un réseau X à des machines d'un réseau Y en SSH dans exposer tout le réseau Y en libre accès ou parce que le réseau Y n'a pas d'IP publique ou ... Si vous prévoyer de déployer un bastion, prévoyez d'en avoir deux pour éviter le SPOF (ou qu'il soit redéployable très rapidement).</li>
<li><a rel="noopener" target="_blank" href="https://jolicode.com/blog/php-et-les-resolveurs-dns">PHP et les résolveurs DNS</a> : à l'heure des micro-services et des API, une mauvaise couche réseau et votre application peut très mal se comporter. L'article porte ici sur la résolution DNS et les solutions de cache possible pour que votre application soit plus résiliente.</li>
</ul>
<h3 id="no-sql">(No)SQL</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://mariadb.com/kb/en/library/moving-from-mysql-to-mariadb-in-debian-9/#secure-passwordless-root-accounts-only-on-new-installs">Moving from MySQL to MariaDB in Debian 9</a> : je me demandais pourquoi je perdais mon accès au compte root d'une instance MariaDB suite à un <code>mysql_secure_installation</code>, voici enfin la réponse. Sur les nouvelles installations, l'accès au compte root de mariadb est protégé. Il faut passer par <code>sudo mysql -u root -p ...</code> par ex pour pouvoir se connecter en root.</li>
<li><a rel="noopener" target="_blank" href="https://www.itzgeek.com/how-tos/linux/debian/how-to-install-mariadb-on-debian-9.html">How to Install MariaDB on Debian 9 Stretch</a> : l'article qui m'a mis sur la piste et qui donne éventuellement une solution de contournement pour reproduire l'ancien mécanisme (à vos risques et périls).</li>
<li><a rel="noopener" target="_blank" href="http://antirez.com/news/116">An update on Redis Streams development</a> : les <a rel="noopener" target="_blank" href="http://antirez.com/news/114">Streams</a> dans Redis, ce sera pour la version 5.0 prévue pour dans 2 mois. Pour rappel, les Streams, ce sont des listes Redis + PubSub + historique. C'est une réponse de Redis sur la partie Topic/Message de Kafka.</li>
</ul>
<h3 id="certificats">Certificats</h3>
<ul>
<li>Let's Encrypt a annoncé le 10 janvier avoir identifié une <a rel="noopener" target="_blank" href="https://community.letsencrypt.org/t/2018-01-09-issue-with-tls-sni-01-and-shared-hosting-infrastructure/49996">"faille" lors de la génération du certificat</a> lié à l'utilisation de Let's Encrypt dans un environnement mutualisé via la méthode <code>TLS-SNI</code>. Avec le partage d'une même IP, il serait possible pour une personne malveillante de récupérer un certificat pour votre domaine à votre insu. <a rel="noopener" target="_blank" href="https://community.letsencrypt.org/t/important-what-you-need-to-know-about-tls-sni-validation-issues/50811">Let's Encrypt a finalement décidé</a> de désactiver complètement les méthodes <code>TLS-SNI-001</code> et <code>TLS-SNI-002</code> et de travailler sur une nouvelle méthode <code>TLS-SNI-003</code> qui corrigerait ce problème. En attendant, il faut utiliser les méthodes <code>HTTP-01</code> ou <code>DNS-01</code>.</li>
</ul>
<h3 id="astuce-s-du-mois">Astuce(s) du mois</h3>
<p>La commande <code>docker history</code> (ou <code>docker image history</code>) permet de voir le nombre de layers d'une image, la taille de ces layers et leur âge. Exemple avec l'image <code>nginx:stable</code> :</p>
<pre style="background-color:#2b303b;color:#c0c5ce;"><code><span>docker image history nginx:stable
</span><span>IMAGE CREATED CREATED BY SIZE COMMENT
</span><span>dfe062ee1dc8 6 weeks ago /bin/sh -c #(nop) CMD ["nginx" "-g" "daemon… 0B
</span><span><missing> 6 weeks ago /bin/sh -c #(nop) STOPSIGNAL [SIGTERM] 0B
</span><span><missing> 6 weeks ago /bin/sh -c #(nop) EXPOSE 80/tcp 0B
</span><span><missing> 6 weeks ago /bin/sh -c ln -sf /dev/stdout /var/log/nginx… 22B
</span><span><missing> 6 weeks ago /bin/sh -c set -x && apt-get update && apt… 53.1MB
</span><span><missing> 6 weeks ago /bin/sh -c #(nop) ENV NJS_VERSION=1.12.2.0.… 0B
</span><span><missing> 6 weeks ago /bin/sh -c #(nop) ENV NGINX_VERSION=1.12.2-… 0B
</span><span><missing> 6 weeks ago /bin/sh -c #(nop) LABEL maintainer=NGINX Do… 0B
</span><span><missing> 6 weeks ago /bin/sh -c #(nop) CMD ["bash"] 0B
</span><span><missing> 6 weeks ago /bin/sh -c #(nop) ADD file:f30a8b5b7cdc9ba33… 55.3MB
</span></code></pre>
<p>Pour avoir l'intégralité du contenu de la ligne "CREATED BY", il suffit de rajouter un <code>--no-trunc</code>.</p>
<p>Source : <a rel="noopener" target="_blank" href="https://docs.docker.com/engine/reference/commandline/history/">Docker - history</a></p>
<p>C'est assez pratique lorsque l'on cherche notamment à comprendre et optimiser la taille de ses images Docker.</p>
Web, Ops & Data - Septembre 20172017-09-27T09:30:00+02:002017-09-27T09:30:00+02:00
Unknown
https://cerenit.fr/blog/web-ops-and-data-septembre-2017/<h3 id="architecture">Architecture</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.octo.com/decouplage-decouplage-decouplage/">Découplage, découplage, découplage !</a> : revue de 3 méthodes de découplage (format, localisation, temporalité) pour vos programmes avec forces et faiblesses de chacun.</li>
</ul>
<h3 id="cli">CLI</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://medium.com/@waxzce/use-bashrc-d-directory-instead-of-bloated-bashrc-50204d5389ff">Use .bashrc.d directory instead of bloated .bashrc</a> : Une bonne astuce pour gérer tout ce que l'on veut mettre dans <code>.bashrc</code> 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 ;-)</li>
</ul>
<h3 id="cloud">Cloud</h3>
<ul>
<li><a rel="noopener" target="_blank" href="http://blog.xebia.fr/2017/05/03/aws-separer-la-production-du-developpement/">AWS – Séparer la production du développement</a> : article sur le séparation et la gestion des accès à une équipe de développement au sein d'AWS.</li>
<li><a rel="noopener" target="_blank" href="http://blog.xebia.fr/2017/08/29/aws-dois-je-creer-un-vpc/">AWS – Pourquoi devez-vous créer un VPC ? </a> : retour sur ce qu'est un réseau privé virtuel chez AWS et comment il fonctionne / ce qu'il contient. Je ne connaissais pas l'option HA, intéressante, même si potentiellement chère.</li>
<li><a rel="noopener" target="_blank" href="http://blog.wescale.fr/2017/08/21/saga-de-lete-e02-decouverte-de-service-et-repartition-de-charge-multi-cloud/">Saga de l'été : E01 Construction d’une infrastructure multi-cloud</a>, <a rel="noopener" target="_blank" href="http://blog.wescale.fr/2017/08/21/saga-de-lete-e02-decouverte-de-service-et-repartition-de-charge-multi-cloud/">Saga de l'été : E02 Découverte de service et répartition de charge multi-cloud</a> et <a rel="noopener" target="_blank" href="http://blog.wescale.fr/2017/09/06/saga-de-lete-e03-mon-orchestrateur-de-conteneurs-multi-cloud/">Saga de l'été : E03 Mon orchestrateur de conteneurs multi-cloud</a> : un retour complet et intéressant sur l'implémentation d'une infrastructure multi-cloud (AWS, GCP) au travers des outils hashicorp avec Terraform, Nomad et Consul.</li>
<li><a rel="noopener" target="_blank" href="https://blog.ippon.fr/2017/06/09/les-architectures-serverless/">Les architectures Serverless</a> : une présentation assez complète des architectures serverless (FaaS, BaaS), leurs avantages/inconvénients, leurs objectifs/intérêts, etc et en quoi ces architectures diffèrent du IaaS, PaaS, SaaS, Container, etc.</li>
</ul>
<h3 id="dashboard">Dashboard</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://grafana.com/blog/2017/09/13/grafana-4.5-released/">Graphana 4.5 Released</a> : 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.</li>
</ul>
<h3 id="docker">Docker</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.docker.com/2017/09/preview-linux-containers-on-windows/">Preview: Linux Containers on Windows</a> : 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.</li>
<li><a rel="noopener" target="_blank" href="https://blog.docker.com/2017/09/docker-official-images-now-multi-platform/">Docker Official Images are now Multi-platform</a> : 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 <code>Dockerfile</code> que l'on soit sur un serveur 64 bits ou un raspberry, cela va faciliter les chaines de développement et déploiement.</li>
<li><a rel="noopener" target="_blank" href="https://integratedcode.us/2017/09/13/dockerhub-official-images-go-multi-platform/">DockerHub Official Images Go Multi-platform!</a> : un retour plus complet sur la gestion du passage au multi-platform des images Docker.</li>
</ul>
<h3 id="documentation">Documentation</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://speakerdeck.com/hackebrot/hi-my-name-is-readme-writethedocs-2017">Hi, my name is README! - WriteTheDocs 2017</a> : bonnes (et mauvaises) pratiques sur la rédaction du fichier README qui est le point d'entrée sur votre projet.</li>
</ul>
<h3 id="elastiscearch">Elastiscearch</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.elastic.co/blog/a-full-stack-in-one-command">A Full Stack in One Command</a> : 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...</li>
<li><a rel="noopener" target="_blank" href="https://www.elastic.co/blog/elastic-stack-5-6-0-released">Elastic Stack 5.6.0 Released</a> : 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.</li>
</ul>
<h3 id="kafka">Kafka</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.ippon.fr/2017/07/11/kafka-0-11-0-%e2%99%a5/">Kafka 0.11.0 == ♥</a> : 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.</li>
<li><a rel="noopener" target="_blank" href="https://medium.com/@jaykreps/exactly-once-support-in-apache-kafka-55e1fdd0a35f">Exactly-once Support in Apache Kafka</a> : le co-fondateur de Confluent revient sur la signification de "Exactly-once support" dans Kafka et sur son implémentation.</li>
<li><a rel="noopener" target="_blank" href="https://www.confluent.io/blog/exactly-once-semantics-are-possible-heres-how-apache-kafka-does-it/">Exactly-once Semantics are Possible: Here’s How Kafka Does it</a> : la même expliquée par la CTO de Confluent.</li>
<li><a rel="noopener" target="_blank" href="https://www.confluent.io/blog/ksql-open-source-streaming-sql-for-apache-kafka/">Introducing KSQL: Open Source Streaming SQL for Apache Kafka</a> : Kafka se dote d'une interface SQL permettant de faire des requêtes de façon continue (<em>continuous queries</em>) 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 <em>developer preview</em> mais cela peut être intéressant à terme.</li>
<li><a rel="noopener" target="_blank" href="https://blog.zenika.com/2017/09/14/mais-cest-quoi-apache-kafka/">Mais c'est quoi Kafka</a> : une présentation synthétique de Kafka et son écosystème pour bien appréhender cette plateforme.</li>
<li><a rel="noopener" target="_blank" href="https://www.spreaker.com/user/vhe74/episode-47-kafka-sql-beam-and-co">BigData Hebdo - Ep 47 : Kafka, SQL, Beam & co</a> : un excellent épisode du podcast <a rel="noopener" target="_blank" href="http://bigdatahebdo.com/">BigData Hebdo</a> faisant un point très clair sur les annonces Kafka (mais aussi sur Beam) </li>
<li><a rel="noopener" target="_blank" href="https://www.confluent.io/blog/okay-store-data-apache-kafka/">It’s Okay To Store Data In Apache Kafka</a> : 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 :-)</li>
<li><a rel="noopener" target="_blank" href="https://www.nextplatform.com/2017/08/30/kafka-wakes-metamorphosed-database/">Kafka Wakes Up And Is Metamorphosed Into A Database</a> : opinion sur la "métamorphone" de Kafka en base de données avec une opinion rigolote : "<em>It would have been far funnier, of course, if Kafka woke up one morning and had been turned into CockroachDB</em>". </li>
<li><a rel="noopener" target="_blank" href="https://www.confluent.io/blog/crossing-streams-joins-apache-kafka/">Crossing the Streams – Joins in Apache Kafka</a> : 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).</li>
</ul>
<h3 id="licences-et-open-source">Licences et Open Source</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://ma.tt/2017/09/on-react-and-wordpress/">On React and Wordpress</a> : Suite aux <a rel="noopener" target="_blank" href="https://code.facebook.com/posts/112130496157735/explaining-react-s-license/">histoires de licence autour de celle de ReactJS</a> et de la <a rel="noopener" target="_blank" href="https://issues.apache.org/jira/browse/LEGAL-303">fondation Apache interdisant aux projets qu'elle héberge d'utliser React</a>, c'est au tour de Wordpress d'abandonner React. De l'importance de bien évaluer la licence dans le cadre de l'évaluation des produits que nous retenons pour des projets.</li>
<li><a rel="noopener" target="_blank" href="https://blog.cloudboost.io/3-points-to-consider-before-migrating-away-from-react-because-of-facebooks-bsd-patent-license-b4a32562d268">3 Points to Consider before Migrating Away from React Because of Facebook’s ‘BSD+ Patent’ License</a> : l'article nuance les propos tenus ici ou là et sont rédigés par un juriste spécialisé dans les brevets. Par défaut, Facebook n'a pas prévu d'utiliser ses brevets à l'encontre des autres. Ensuite, le brevet porte sur un concept et non sur le code en lui-même donc toute autre librairie/framework implémentant le même concept peut tout autant être poursuivi par Facebook s'ils se retrouvaient dans une condition pour le faire. Il resqte quelques cas de si je traduis en justice Facebook et inversement mais je vous les laisse les consulter pour ne pas faire d'erreur d'interprétation.</li>
<li><a rel="noopener" target="_blank" href="https://code.facebook.com/posts/300798627056246/relicensing-react-jest-flow-and-immutable-js">Relicensing React, Jest, Flow, and Immutable.js</a> : Facebook au final va mettre sous licence MIT les nouvelles/prochaines versions de ces logiciels et se pose la question pour les autres (notamment GraphQL). A voir si cela résoud vraiment le problème ou pas ou <a rel="noopener" target="_blank" href="https://twitter.com/kantrn/status/911358449677631488">si cela ne serait pas pire</a>.</li>
</ul>
<h3 id="microservices">Microservices</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://martinfowler.com/bliki/MonolithFirst.html">Monolith First</a> : 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.</li>
</ul>
<h3 id="nosql">NoSQL</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://redislabs.com/blog/redis-4-0-0-released/">Redis 4.0.0 released</a> : 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).</li>
<li><a rel="noopener" target="_blank" href="https://www.spreaker.com/user/vhe74/episode-46-elassandra">BigData Hebdo - Ep 46: Elassandra</a> : Vous vouliez le meilleur des mondes entre Cassandra et Elasticsearch - c'est désormais possible avec <a rel="noopener" target="_blank" href="http://www.elassandra.io/">Elassandra</a>. 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.</li>
</ul>
<h3 id="sql">SQL</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.compose.com/articles/geofile-getting-started-with-pgrouting/">Geofile: Getting Started with pgRouting</a> et <a rel="noopener" target="_blank" href="https://www.compose.com/articles/geofile-getting-started-with-pgrouting-using-esri-shapefiles/">Geofile: Getting Started with pgRouting using Esri Shapefiles</a>: <a rel="noopener" target="_blank" href="http://pgrouting.org/">pgRouting</a> est une extension Postgres s'appuyant sur l'extension géospatiale <a rel="noopener" target="_blank" href="http://www.postgis.net/">PostGIS</a> permettant d'avoir une fonctionnalité de routage (plus court chemin entre 2 points, logique du voyageur, etc). L'article explique comment utiliser cette extension sur la base d'un tour des chateaux anglais.</li>
<li>The MySQL High Availability Landscape in 2017 : <a rel="noopener" target="_blank" href="https://www.percona.com/blog/2017/06/20/the-mysql-high-availability-landscape-in-2017-the-elders/">the elders</a>, <a rel="noopener" target="_blank" href="https://www.percona.com/blog/2017/08/22/mysql-high-availability-landscape-2017-adults/">the adults</a> and <a rel="noopener" target="_blank" href="https://www.percona.com/blog/2017/09/15/the-mysql-high-availability-landscape-in-2017-the-babies/">the babies</a> : panorama des solutions de haute disponibilités avec MySQLdepuis les solutions historiques jusqu'au plus récentes.</li>
</ul>
<h3 id="streaming">Streaming</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://cloud.google.com/blog/big-data/2017/08/the-canonical-new-book-about-stream-processing">The canonical new book about stream processing</a> : une nouvelle ressource sur le streaming via les équipes de Google Cloud Platform. Pas encore lu mais semble intéressant.</li>
</ul>
<h3 id="vie-du-developpeur">Vie du développeur</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.octo.com/le-demi-cercle-episode-1/">Le demi-cercle (épisode 1)</a>, <a rel="noopener" target="_blank" href="https://blog.octo.com/le-demi-cercle-episode-2-voir-avancer/">Le demi-cercle (épisode 2 : voir et avancer)</a>, <a rel="noopener" target="_blank" href="https://blog.octo.com/le-demi-cercle-episode-3-communication-breakdown/">Le demi-cercle (épisode 3 — Communication Breakdown) </a>, <a rel="noopener" target="_blank" href="https://blog.octo.com/le-demi-cercle-episode-4-driver-navigators/">Le demi-cercle (épisode 4 — Driver / Navigators) </a>, <a rel="noopener" target="_blank" href="https://blog.octo.com/mob-programming-episode-5-brown-bag-lunch/">Brown Bag Lunch</a>, <a rel="noopener" target="_blank" href="https://blog.octo.com/le-demi-cercle-episode-6-conseils-a-emporter/">Conseils à emporter</a>, <a rel="noopener" target="_blank" href="https://blog.octo.com/le-demi-cercle-episode-7-crise-opportunite/">Crise / Opportunité</a>, <a rel="noopener" target="_blank" href="https://blog.octo.com/le-demi-cercle-episode-8-le-cinquieme-etage/">Le 5ème étage</a>, <a rel="noopener" target="_blank" href="https://blog.octo.com/le-demi-cercle-episode-9-que-faire/">Que faire ?</a>, <a rel="noopener" target="_blank" href="https://blog.octo.com/le-demi-cercle-episode-10-soit-soit/">Soit… soit…</a>, <a rel="noopener" target="_blank" href="https://blog.octo.com/le-demi-cercle-episode-11-boites-et-fleches/">Boites et flèches</a>, <a rel="noopener" target="_blank" href="https://blog.octo.com/le-demi-cercle-episode-12-le-prochain-copil/">Le prochain copil</a>, <a rel="noopener" target="_blank" href="https://blog.octo.com/le-demi-cercle-episode-13-la-faille/">la faille</a>, <a rel="noopener" target="_blank" href="https://blog.octo.com/le-demi-cercle-episode-14-poussiere/">Poussière</a>, <a rel="noopener" target="_blank" href="https://blog.octo.com/le-demi-cercle-episode-15-lhypothese-et-la-regle/">L'hypothèse et la règle</a> <a rel="noopener" target="_blank" href="https://blog.octo.com/le-demi-cercle-episode-16-deplacements/">Déplacements</a>, <a rel="noopener" target="_blank" href="https://blog.octo.com/le-demi-cercle-episode-17-jouer-et-ranger/">Jouer et Ranger</a>, <a rel="noopener" target="_blank" href="https://blog.octo.com/le-demi-cercle-episode-18-arrangements/">Arrangements</a> : moment de vie d'un développeur sur une application ayant vécu et qui corrige un nième bug ; et si c'était l'occasion de prendre une pause et de repenser la chose ? Je vous laisse lire...</li>
<li><a rel="noopener" target="_blank" href="https://hackernoon.com/the-art-of-pull-requests-6f0f099850f9">The Art of Pull Requests</a> : des bonnes pratiques pour mener des pull requests de façon bienveillante.</li>
</ul>
<h3 id="web">Web</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://speakerdeck.com/fox/the-state-of-the-web">The State of the Web</a> avec son <a rel="noopener" target="_blank" href="https://medium.com/@fox/talk-the-state-of-the-web-3e12f8e413b3">transcript</a> : Etat des lieux et bonnes pratiques sur les différentes sujets liés au plateformes web (webperf, optimisation, outils, etc).</li>
<li><a rel="noopener" target="_blank" href="https://ma.ttias.be/chrome-force-dev-domains-https-via-preloaded-hsts/">Chrome to force .dev domains to HTTPS via preloaded HSTS</a> : pour ceux qui utilisent des urls en .dev pour accéder à leurs environnements locaux de développement, Chrome va bientôt forcer le passage en https pour cette extension.</li>
<li><a rel="noopener" target="_blank" href="https://tools.ietf.org/html/rfc8246">HTTP Immutable Responses</a> : nouvel argument <code>immutable</code> pour l'entête <code>Cache-Control</code> de sorte que le navigateur ne vérifie plus si la ressource a été modifiée ou pas (fini les 304) durant la période de cache qui a été définie pour cette ressource.</li>
<li><a rel="noopener" target="_blank" href="https://blog.dareboost.com/fr/2017/09/hsts-fiabiliser-connexions-securisees/">Fiabiliser les connexions sécurisées avec HSTS (HTTP Strict Transport Security)</a> : petit topo sur HSTS, mécanisme qui permet d'indiquer que votre site ne doit être servi que via son url sécurisée et gérer la transition http > https.</li>
</ul>
Web, Ops & Data - Juin 20172017-06-28T09:30:00+02:002017-06-28T09:30:00+02:00
Unknown
https://cerenit.fr/blog/web-ops-and-data-juin-2017/<h3 id="agile">Agile</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://speakerdeck.com/tdpauw/xp2017-feature-branching-is-evil">Feature Branching is evil !</a> : si la branche isole le nouveau code, il isole aussi le développeur des autres avancées et repousse à plus tard les problématiques de réintégration de code, refactoring, etc. L'auteur avance le feature flipping et le "trunk based development" pour avoir une intégration continue perpétuelle et des écarts les plus petits possibles.</li>
</ul>
<h3 id="devops">DevOps</h3>
<ul>
<li><a rel="noopener" target="_blank" href="http://blog.wescale.fr/2017/06/12/terraform-layering-pourquoi-et-comment/">Terraform Layering : Pourquoi et comment ?</a> : Un fichier Terraform peut vite devenir illisible dans le cas d'une architecture complexe et consommateur de temps lors de son exécution. Le billet présente une méthode pour traiter ces problèmes. Il s'agit de créer des "couches" (layers) permettant d'avoir plus de modularité et permettant qu'un fichier terraform s'appuie en entrée sur les données de sorties du fichier précédent et ainsi de suite.</li>
</ul>
<h3 id="elastic">Elastic</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.elastic.co/blog/welcome-opbeat-to-the-elastic-family">Welcome Opbeat to the Elastic family</a> : Elastic se lance sur le marché de la performance applicative (APM) en acquérant la société <a rel="noopener" target="_blank" href="https://opbeat.com/">Opbeat</a>. Suite assez logique pour Elastic après l'ingestion de données plus orientée monitoring système avec Logstash/Beat ou des intégrations spécifiques pour faire de l'APM en s'appuyant sur Elastic.</li>
<li><a rel="noopener" target="_blank" href="https://thoughts.t37.net/designing-the-perfect-elasticsearch-cluster-the-almost-definitive-guide-e614eabc1a87">Designing the Perfect Elasticsearch Cluster: the (almost) Definitive Guide</a> : le billet traite le design d'un cluster Elasticsearch et les points d'attention à avoir. Ce n'est pas la recette magique (elle n'existe pas) mais donne tous les points d'attention à avoir dans le cadre du déploiement d'un cluster Elasticsearch.</li>
<li><a rel="noopener" target="_blank" href="https://sematext.com/blog/2017/06/19/solr-vs-elasticsearch-differences/">Top 15 Solr vs. Elasticsearch Differences</a> : pour ceux qui hésitent encore entre les 2 solutions, une petite revue en 15 poins pouvant vous aider à choisir la solution correspondant à votre besoin.</li>
</ul>
<h3 id="infrastructure">Infrastructure</h3>
<ul>
<li><a rel="noopener" target="_blank" href="http://blog.xebia.fr/2017/06/15/serverless-vs-micro-service-avec-infrastructure-maison/">Serverless vs Micro-Service avec infrastructure "maison"</a> : comparaison de la mise en place d'une infrastructure à base de micro-services vs une infrastructure "serverless" avec prise en compte des effets de vendor lock-in, impacts entre infrastructure et architecture logicielle, facilité de dépoiement, flexibilité, etc.</li>
</ul>
<h3 id="mysql">MySQL</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.percona.com/blog/2017/06/20/the-mysql-high-availability-landscape-in-2017-the-elders/">The MySQL High Availability Landscape in 2017 (The Elders)</a> : Premier blog d'une série a priori sur les solutions de haute disponibilité avec MySQL. Ce billet traite des solutions historiques (réplication, stockage partage, cluster NDB) et de leurs forces/faiblesses.</li>
</ul>
<h3 id="securite">Sécurité</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://nickcraver.com/blog/2017/05/22/https-on-stack-overflow/">HTTPS on Stack Overflow: The End of a Long Road</a> : récit complet de la migration de Stack Overflow vers https avec tous les enjeux et soucis rencontrés pour l'ensemble de leur plateforme.</li>
<li><a rel="noopener" target="_blank" href="https://confs.imirhil.fr/20170513_root66_securite-admin-sys/">Hygiène numérique pour l’administrateur système</a> : revue des bonnes pratiques de sécurité à appliquer sur son serveur.</li>
</ul>
<h3 id="tests">Tests</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://k6.readme.io/">k6</a> : un outil en Go et Javascript permettant de faire des tests de performance. Sa prise en main a l'air aisé et il semble avoir des fonctionnalités assez intéressantes pour faire des tests variés que ce soit sur la profondeur du scénario (1 ou plusieurs urls) ou les niveau de tests (checks, ratio, etc)</li>
</ul>
<h3 id="tick-telegraf-influxdb-chronograf-kapacitor">TICK (Telegraf, InfluxDB, Chronograf, Kapacitor)</h3>
<ul>
<li><a rel="noopener" target="_blank" href="http://blog.octo.com/monitorer-votre-infra-avec-telegraf-influxdb-et-grafana/">Monitorer votre infra avec Telegraf, InfluxDB et Grafana</a> : Introduction rapide pour mettre en place une instance "TIG" et comparaison avec les outils comme Zabbix ou Prometheus.</li>
</ul>
<h3 id="bonus-lecture-de-l-ete">Bonus : Lecture de l'été</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://thehypertextual.com/2017/06/20/hyperlean-ce-que-signifie-lavenement-du-numerique/">#hyperlean – Ce que signifie l’avènement du numérique</a> : je n'ai pas encore lu le livre mais je suis le blog de Cecil depuis des années et ses aventures dans le monde de l'agile, du lean, de l'entreprise collaborative et de la transformation digitale. Son livre se veut un guide pratique de la transformation digitale en abordant le pourquoi, le quoi et le comment. Dans le comment, on va retrouver forcément la méthode lean.</li>
</ul>
Web, Ops & Data - Avril 20172017-04-26T09:30:00+02:002017-04-26T09:30:00+02:00
Unknown
https://cerenit.fr/blog/web-ops-and-data-avril-2017/<h3 id="container-orchestration">Container & Orchestration</h3>
<ul>
<li><a rel="noopener" target="_blank" href="http://blog.kubernetes.io/2017/03/kubernetes-1.6-multi-user-multi-workloads-at-scale.html">Kubernetes 1.6: Multi-user, Multi-workloads at Scale </a> : à 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 : <em>scaling</em> avec le support jusqu'à 5.000 noeuds / 150.000 pods est supporté via la fédération de clusters, <em>sécurité</em> avec la mise en place de RBAC (Role Based Access Control) et amélioration de kubeadm pour initialiser votre cluster, <em>scheduling amélioré</em> pour mieux gérer la distribution des workloads sur votre cluster et enfin le <em>provisionning dynamique du stockage</em> pour simplifier la vie et la gestion du stockage par une allocation à la demande.</li>
</ul>
<h3 id="devops">DevOps</h3>
<ul>
<li><a rel="noopener" target="_blank" href="http://blog.octo.com/deployer-son-infrastructure-google-cloud-platform-grace-a-terraform/">Déployer son infrastructure Google Cloud Platform grâce à Terraform</a> : Introduction à <a rel="noopener" target="_blank" href="https://www.terraform.io/">Terraform</a>, l'outil de provisionning d'infrastructure développé par <a rel="noopener" target="_blank" href="https://www.hashicorp.com/">HashiCorp</a> dans un contexte Google Cloud. D'ailleurs <a rel="noopener" target="_blank" href="https://www.hashicorp.com/blog/terraform-0-9/">Terraform 0.9</a> vient de sortir.</li>
<li><a rel="noopener" target="_blank" href="http://www.terrafoundry.net/blog/2017/03/26/scaleway-terraform/">Terraform & Scaleway - Getting Started</a> : un autre exemple d'utilisation de Terraform assez bien expliqué dans un contexte Scaleway</li>
<li><a rel="noopener" target="_blank" href="https://sysadmin.it-landscape.info/">IT Landscape for sysadmins</a> : Panorama des solutions et outils opensource à usage des profils sysadmin/devops regroupés par catégories.</li>
<li><a rel="noopener" target="_blank" href="https://medium.com/@aelsabbahy/tutorial-how-to-test-your-docker-image-in-half-a-second-bbd13e06a4a9">Tutorial: How to test your docker image in half a second</a> : Ce tutoriel montre comment tester le bon fonctionnement d'une image docker via l'outil <a rel="noopener" target="_blank" href="https://github.com/aelsabbahy/goss">goss</a>. Goss, une alternative à serverspec, permet de tester et valider la configuration d'un serveur ou d'un container dans le cas présent.</li>
<li><a rel="noopener" target="_blank" href="http://rancher.com/microservices-block-storage/">Announcing Longhorn: an open source project for microservices-based distributed block storage</a> : Rancher sort le projet <a rel="noopener" target="_blank" href="https://github.com/rancher/longhorn">Longhorn</a>, un système de stockage block distribué (et non pas un système de fichier distribué comme Ceph, GlusterFS ou Minio). Compatible uniquement avec Docker pour le moment, prochainement avec Kubernetes, reste à voir justement comment la partie système de fichiers sera traitée. Projet intéressant en tous cas.</li>
<li><a rel="noopener" target="_blank" href="http://rancher.com/press-release-rancheros-ga/">RancherOS Hits General Availability</a> : la mini-distribution Linux optimisée pour lancer des containers Docker, <a rel="noopener" target="_blank" href="http://rancher.com/rancher-os/">Rancher OS</a>, sort en version GA.</li>
</ul>
<h3 id="html5">HTML5</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://alistapart.com/article/practical-grid">Practical CSS Grid: Adding Grid to an Existing Design</a> : 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.</li>
</ul>
<h3 id="javascript">Javascript</h3>
<ul>
<li><a rel="noopener" target="_blank" href="http://blog.ninja-squad.com/2017/03/24/what-is-new-angular-4/">What's new in Angular 4?</a> ou <a rel="noopener" target="_blank" href="http://blog.zenika.com/2017/03/28/angular-4-0/">Angular 4.0</a>: La version 4.0 vient de sortir, revue des nouveautés et des changements pour ceux qui s'intéressent (encore) à AngularJS.</li>
</ul>
<h3 id="kafka">Kafka</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.ippon.fr/2017/04/18/kafka-streams-101/">Kafka Streams 101</a> : 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.</li>
</ul>
<h3 id="mysql">MySQL</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://thoughts.t37.net/how-we-upgraded-a-22tb-mysql-cluster-from-5-6-to-5-7-in-9-months-b09211af57ba">How we Upgraded a 22TB MySQL Cluster from 5.6 to 5.7 (in 9 months)</a> : retour d'expérience sur la migration d'un cluster MySQL de 22 To de MySQL 5.6 vers 5.7 et les écueils rencontrés. Intéressant.</li>
</ul>
<h3 id="postgres">Postgres</h3>
<ul>
<li><a href="https://cerenit.fr/blog/web-ops-and-data-avril-2017/Postgrest">https://github.com/begriffs/postgrest</a> : Pour permettre de mettre une API Rest devant votre base Postgres. Un <a rel="noopener" target="_blank" href="https://postgrest.com/en/v0.4/intro.html#ecosystem">écosystème</a> existe autour de cette solution pour facilement l'intégrer dans votre projet.</li>
</ul>
<h3 id="python">Python</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://realpython.com/blog/python/instance-class-and-static-methods-demystified/">Python's Instance, Class, and Static Methods Demystified</a> : Tout est dans le titre ! Je connaissais peu les "<em>class methods</em>" et "<em>static methods</em>". Cela aurait pu m'être utile pour mon précédent projet !</li>
<li>Building microservices with Python (<a rel="noopener" target="_blank" href="https://medium.com/@ssola/building-microservices-with-python-part-i-5240a8dcc2fb">Part 1</a>, <a rel="noopener" target="_blank" href="https://medium.com/@ssola/building-microservices-with-python-part-2-9f951199094a">Part 2</a>, <a rel="noopener" target="_blank" href="https://medium.com/@ssola/building-microservices-with-python-part-3-a556a4c4bc00">Part 3</a>) : un récit assez complet pour batir un microservice s'appuyant sur Flask. Les autres outils intéressants sont <a rel="noopener" target="_blank" href="https://connexion.readthedocs.io/en/latest/">connexions</a> (API, oAuth, OpenAPI Specs), <a rel="noopener" target="_blank" href="https://pypi.python.org/pypi/Flask-Injector">Flask-injector</a> pour l'injection de dépendance et <a rel="noopener" target="_blank" href="https://github.com/tebeka/fastavro">fastavro</a></li>
</ul>