CérénIT - kafka-streamsLe blog tech de Nicolas Steinmetz (Time Series, IoT, Web, Ops, Data)Zola2019-11-27T09:30:00+01:00https://cerenit.fr/tags/kafka-streams/atom.xmlWeb, Ops & Data - Novembre 20192019-11-27T09:30:00+01:002019-11-27T09:30:00+01:00
Unknown
https://cerenit.fr/blog/web-ops-and-data-novembre-2019/<p>Rendez-vous le 17 décembre prochain à la <a rel="noopener" target="_blank" href="https://www.meetup.com/fr-FR/Paris-Time-Series-Meetup/events/266610627/">troisième édition du Paris Time Series Meetup</a> consacré à <a rel="noopener" target="_blank" href="https://github.com/ovh/tsl">TSL</a> (billet introductif à TSL : <a rel="noopener" target="_blank" href="https://www.ovh.com/blog/tsl-a-developer-friendly-time-series-query-language-for-all-our-metrics/">TSL: a developer-friendly Time Series query language for all our metrics</a>) et
le module <a rel="noopener" target="_blank" href="https://oss.redislabs.com/redistimeseries/">RedisTimeSeries</a> qui apporte des fonctionnalités et des structures Time Seriies à Redis.</p>
<h3 id="cloud">Cloud</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.ripe.net/publications/news/about-ripe-ncc-and-ripe/the-ripe-ncc-has-run-out-of-ipv4-addresses">The RIPE NCC has run out of IPv4 Addresses</a> : Le RIPE NCC vient d'annoncer avoir attribué son dernier bloc d'IP v4 en /22. La réserve d'IPv4 est donc épuisée mais pour autant cela ne veut pas dire que toutes les IPv4 sont utilisées. Par ailleurs le RIPE NCC précise que de nouveaux blocs devraient voir le jour au fur et à mesure que des organisations revendent des plages inutilisées ou cessent leur activité. Le mécanisme d'attribution se fera alors sous la forme d'une liste d'attente. Ce n'est donc pas l'IPcalypse même si on s'en rapproche de plus en plus et s'il faut prévoir de passer à IPV6 de plus en plus rapidement.</li>
</ul>
<h3 id="container-et-orchestration">Container et Orchestration</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.redhat.com/en/blog/red-hat-introduces-open-source-project-quay-container-registry">Red Hat Introduces open source Project Quay container registry</a> : De la même manière que RedHat publie l'upstream d'Ansible Tower avec le projet AWX, RedHat va fournir l'upstream de Quay (registry docker) et Clair (scanner vulnérabilités) sous le nom de <a rel="noopener" target="_blank" href="https://projectquay.io/">Project Quay</a></li>
<li><a rel="noopener" target="_blank" href="https://helm.sh/blog/helm-3-released/">Helm 3.0.0 has been released!</a> : si tout le monde attendait la suppression de tiller, ce n'est pas la seule nouveauté. Le billet donne aussi plein de liens sur la migration vers helm 3, la politique de support de Helm 2 (bug & sécurité pour 6 mois et sécurité uniquement les 6 mois suivants), etc.</li>
<li><a rel="noopener" target="_blank" href="https://techcrunch.com/2019/11/13/mirantis-acquires-docker-enterprise/">Mirantis acquires Docker Enterprise</a>, <a rel="noopener" target="_blank" href="https://www.docker.com/press-release/docker-new-direction">Docker Restructures and Secures $35 Million to Advance Developer Workflows for Modern Applications</a> et <a rel="noopener" target="_blank" href="https://www.docker.com/blog/docker-next-chapter-advancing-developer-workflows-for-modern-apps/">Docker’s Next Chapter: Advancing Developer Workflows for Modern Apps</a> : Mirantis rachète la branche "Entreprise" de Docker Inc et les actifs associés (employés et propriété intellectuelle). Docker Inc va se focaliser sur l'expérience utilisateur (Docker Desktop, Docker-Compse, Docker-Apps, etc). Pour cela, en plus d'une restructuration du capital, ils ont sécurisé 35 millions de dollars. Il est quand même étonnant de voir qu'à court terme, en dehors de la vente à Mirantis, Docker Inc n'a plus de sources de revenus...</li>
<li><a rel="noopener" target="_blank" href="https://autoize.ch/what-docker-inc-reorganization-means-for-docker-swarm/">What Docker Inc’s Reorganization Means For Docker Swarm</a> : Suite à l'annonce précédente, il est légitime de se demander ce que va devenir Swarm. Le produit est donc géré par Mirantis et ces derniers ont embauché la personne en charge de Swarm et lui ont apparemment donné des garanties de pérénité du projet. Il conviendra de rester prudent sur le sujet même si j'espère que le projet Swarm continuera à exister. En effet, il est bien pratique et léger dans beaucoup de cas qui ne requiert pas Kubernetes.</li>
<li><a rel="noopener" target="_blank" href="https://github.com/rancher/k3s/releases/tag/v1.0.0">k3s 1.0</a> : k3s, la version allégée mais certifiée de k8s atteint la version 1.0. Très pratique pour faire du k8s sur des raspberry pi et assimilés.</li>
<li><a rel="noopener" target="_blank" href="https://github.com/chmouel/kss">KSS - Kubernetes pod status on steroid</a> : un petit script python qui permet d'avoir un status d'un pod et de son/ses container(s)</li>
</ul>
<h3 id="data">Data</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.confluent.io/blog/intro-to-ksqldb-sql-database-streaming/">Introducing ksqlDB</a> : Confluent, l'entreprise derrière Apache Kafka et la Confluent Platform sort une nouvelle version de ksql qui est renommé <a rel="noopener" target="_blank" href="https://ksqldb.io/">ksqlDB</a>. ksql se voit donc ajouter un connecteur sql pour des enrichissements depuis des sources de données externes, ainsi qu'un système de requêtage dynamiques de topics Kafka pour le présenter sous la forme d'une base de données et prendre en compte les changements au fur et à mesure qu'ils arrivent. Ce n'est donc pas une base de données à proprement parler mais nommer les choses en informatique, c'est une chose compliquée...</li>
</ul>
<h3 id="outillage">Outillage</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://jenkins.io/blog/2019/11/22/welcome-to-the-matrix/">Welcome to the Matrix</a> : Le plugin Declarative Pipeline se dote d'une propriété <code>matrix</code> qui va permettre de faire la même action avec des configurations différentes plutôt que d'avoir un jenkinsfile pour chaque option/déclinaison du job. Le parallelisme semble supporté par défaut et un système d'inclusion/exclusion permet de mieux définir la combinaison des possibles. Dans l'exemple donné qui croise des systèmes d'exploitation et des navigateurs, cela permet par ex de ne pas lancer le job utilisant Micrsoft Edge sous Linux (<a rel="noopener" target="_blank" href="https://www.omgubuntu.co.uk/2019/11/its-official-microsoft-edge-is-coming-to-linux">même si...</a>).</li>
</ul>
<h3 id="tech">Tech</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://opensource.zalando.com/tech-radar/">Zalando Tech Radar</a> : Zalendo publie son Tech Radar <a rel="noopener" target="_blank" href="https://www.thoughtworks.com/radar">à la ThoughtWorks</a> et open source <a rel="noopener" target="_blank" href="https://github.com/zalando/tech-radar">l'outil de rendu</a> pour que chaque société puisse publie son tech radar</li>
<li><a rel="noopener" target="_blank" href="https://www.thoughtworks.com/radar">ThoughtWorks Tech Radar Vol 21 - Nov 2019</a> : La dernière édition du Tech Radar Thoughtworks en 4 grands axes : techniques, platformes, outils, langages & frameworks. Va falloir lire le PDF pour aller apprécier cette édition.</li>
</ul>
<h3 id="time-series">Time Series</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.infoq.com/articles/redis-time-series-grafana-real-time-analytics">How to Use Redis TimeSeries with Grafana for Real-time Analytics</a> (<a rel="noopener" target="_blank" href="https://www.infoq.com/fr/articles/redis-time-series-grafana-real-time-analytics">version française</a>) : Mise en oeuvre du module <a rel="noopener" target="_blank" href="https://oss.redislabs.com/redistimeseries/">RedisTimeSeries</a> et exploitation des données au travers de Grafana.</li>
<li><a rel="noopener" target="_blank" href="https://www.liip.ch/en/blog/time-series-prediction-a-short-comparison-of-best-practices">Time Series Prediction - A short introduction for pragmatists</a> : une introduction aux différents algorithmes de prévision sur des données temporelles. L'article montre que l'on peut obtenir des résultats assez probants avec des moyens assez simples et sans se comliquer la vie.</li>
<li><a rel="noopener" target="_blank" href="https://towardsdatascience.com/using-gradient-boosting-for-time-series-prediction-tasks-600fac66a5fc">Using Gradient Boosting for Time Series prediction tasks</a> : une autre introduction assez pédagogique à la prédiction basée sur des séries temporelles avec l'outil <a rel="noopener" target="_blank" href="https://xgboost.readthedocs.io/">XGBoost</a> et en appliquant le <a rel="noopener" target="_blank" href="https://en.wikipedia.org/wiki/Gradient_boosting">Gradient Bootsting</a>.</li>
</ul>
Web, Ops & Data - Octobre 20192019-10-30T09:30:00+02:002019-10-30T09:30:00+02:00
Unknown
https://cerenit.fr/blog/web-ops-and-data-octobre-2019/<p>Rendez-vous le 5 Novembre prochain à la <a rel="noopener" target="_blank" href="https://www.meetup.com/fr-FR/Paris-Time-Series-Meetup/events/265669047/">seconde édition du Paris Time Series Meetup</a> consacré à <a rel="noopener" target="_blank" href="https://www.quasardb.net/">QuasarDB</a> pour des cas d'usages autour de la finance et des transports.</p>
<h3 id="cloud">Cloud</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://segment.com/blog/the-10m-engineering-problem/">The $10m engineering problem</a> : retour d'expérience intéressant sur l'optimisation de sa facture cloud et donc l'accroissement de sa marge opérationnelle.</li>
</ul>
<h3 id="container-et-orchestration">Container et Orchestration</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://bravenewgeek.com/whats-going-on-with-gke-and-anthos/">What’s Going on with GKE and Anthos?</a> : Si on rapproche ça avec le fait que Google ait gardé le lead sur knative plutôt que de le confier à une fondation, on peut avoir quelques sueurs froides sur le potentiel lock-in ou alors d'une offre k8s à 2 vitesses (GKE tel qu'on le connait actuellement et Anthos GKE avec des fonctionnalités & souscriptions additionnelles...). La seule limite que je vois à ça pour le moment est le fait que Google a vendu k8s comme runtime universel de workload et qu'ils ont besoin de garder cela pour piquer des parts de marché à AWS & Azure...</li>
<li><a rel="noopener" target="_blank" href="https://blog.nobugware.com/post/2019/traefik-2-0-with-kubernetes/">Traefik 2.0 with Kubernetes</a> et <a rel="noopener" target="_blank" href="https://blog.nobugware.com/post/2019/advanced-traefik-2-0-with-kubernetes/">Advanced Traefik 2.0 with Kubernetes</a> : pas encore implémenté mais a priori tout ce qu'il faut savoir pour passer de Traefik 1.x vers Traefik 2.x sous Kubernetes</li>
<li><a rel="noopener" target="_blank" href="https://helm.sh/blog/2019-10-22-helm-2150-released/">Helm 2.15.0 Released</a> : dernière version stable à apporter des nouveautés a priori avant migration vers la version 3.0. La version 2.x va passer en maintenance (correctifs de bugs & sécurité) et s'éteindra progressivement (6 mois après la release de Helm 3, elle ne prendra que des correctifs de sécurité et fin du support au bout d'un an). En attendant, cette version apporte notamment le paramètre <code>--output <table|json|yaml></code> à certaines commandes. Pratique quand on manipule les sorties de Helm dans des scripts...</li>
<li><a rel="noopener" target="_blank" href="https://medium.com/flant-com/comparing-ingress-controllers-for-kubernetes-9b397483b46b">Comparing Ingress controllers for Kubernetes</a> : une comparaison de 11 Ingress Controller (Nginx, Traefik, Kong, HAProxy, etc) sur une douzaine de fonctionnalités.</li>
</ul>
<h3 id="big-data">(Big) data</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.jesse-anderson.com/2019/10/why-i-recommend-my-clients-not-use-ksql-and-kafka-streams/">Why I Recommend My Clients NOT Use KSQL and Kafka Streams</a> : la gestion des états et la capacité à pouvoir savoir à quel offset d'un topic kafka reprendre sa consommation peut être un sujet surtout dans le cadre d'une grosse volumétrie qui peut empêcher que le cas de reprendre la consommation du topic depuis son origine. Si Kafka Streams était doté de ce fameux "checkpoint" cela pourrait simplifier la chose. L'autre cas étant sur l'absence de "shuffle sort" utilisé dans des contexte analytiques. Du coup Kafka streams crée des topics supplémentaires pour le besoin et cela peut nuire au bon fonctionnement de votre cluster.</li>
<li><a rel="noopener" target="_blank" href="https://www.youtube.com/watch?v=5i3H_vvpBTw">Change data capture in production with Apache Flink - David Morin & Yann Pauly</a> : un retour d'expérience très riche et très complet sur l'utilisation de Flink chez OVH, les problématiques qu'ils ont rencontré et comment ils ont itéré sur leur pipeline d'ingestion de données. La version française donnée à DataOps.rocks devrait être disponible sous peu.</li>
</ul>
Web, Ops & Data - Septembre 20192019-09-26T08:30:00+02:002019-09-26T08:30:00+02:00
Unknown
https://cerenit.fr/blog/web-ops-and-data-septembre-2019/<h3 id="container-et-orchestration">Container et Orchestration</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.containo.us/traefik-2-0-6531ec5196c2">Traefik 2.0</a> : la version tant attendue du reverse proxy "cloud native" <a rel="noopener" target="_blank" href="https://traefik.io">Traefik</a> sort en version 2.0 avec une réécriture complète et plein de nouvelles fonctionnalités : support du reverse proxy pour tcp et plus uniquement http, introduction des "<em>middleware</em>" pour de la configuration plus flexible, une CRD Traefik pour Kubernetes, un nouveau dashboard, le support du déploiement en mode canary, "<em>mirroring</em>" de traffic, etc. Il y a un <a rel="noopener" target="_blank" href="https://docs.traefik.io/migration/v1-to-v2/">guide de migration</a> pour passer de la V1 à la v2.</li>
<li><a rel="noopener" target="_blank" href="https://blog.containo.us/announcing-maesh-a-lightweight-and-simpler-service-mesh-made-by-the-traefik-team-cb866edc6f29">Announcing Maesh, a Lightweight and Simpler Service Mesh Made by the Traefik Team</a> : l'équipe Containous, qui est derrière Traefik, sort sa solution de Service Mesh : <a rel="noopener" target="_blank" href="https://mae.sh/">Maesh</a>. Elle respecte la spécification <a rel="noopener" target="_blank" href="https://smi-spec.io/">Service Mesh Interface</a> (SMI) et a pour principal intérêt pour moi de ne pas modifier les objets kubernetes pour se déployer en mode sidecar (contrairement à Istio pour ne pas le nommer).</li>
<li><a rel="noopener" target="_blank" href="https://www.redhat.com/fr/topics/microservices/what-is-a-service-mesh">Qu'est-ce qu'un Service Mesh ?</a> : article d'information/rappel sur ce qu'est un Service Mesh et son intérêt dans une architecture micro-services.</li>
<li><a rel="noopener" target="_blank" href="https://blog.rook.io/rook-v1-1-accelerating-storage-providers-5b9e8d5901d8">Rook v1.1: Accelerating Storage Providers</a> & <a rel="noopener" target="_blank" href="https://ceph.io/community/rook-v1-1-ceph-features/">Rook v1.1: Ceph CSI, Bucket Provisioning, External Clusters, and much more!</a>: rajout du support de Yugabyte, passage du support de EdgeFS d'alpha à beta, pleins d'améliorations pour Ceph, dont la gestion des clusters Ceph externes au cluster Kubernetes.</li>
<li><a rel="noopener" target="_blank" href="https://kubernetes.io/blog/2019/09/18/kubernetes-1-16-release-announcement/">Kubernetes 1.16: Custom Resources, Overhauled Metrics, and Volume Extensions</a> & <a rel="noopener" target="_blank" href="https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.16.md#kubernetes-v1160-release-notes">Release Notes</a> : Passage en GA des CRD, des admissions webhooks, Refonte des métriques, le redimensionnement des volumes passe de alpha > beta, Support ipv4/ipv6 au niveau pods & services, dépreciation des api <code>extensions/v1beta1</code>, <code>apps/v1beta1</code> et <code>apps/v1beta2</code>, plein de fonctionnalités pour les conteneurs Windows, etc.</li>
<li><a rel="noopener" target="_blank" href="https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/">Deprecated APIs Removed In 1.16: Here’s What You Need To Know</a> : ce qu'il faut savoir sur la dépréciation des API listées ci-dessus</li>
<li><a rel="noopener" target="_blank" href="https://discuss.kubernetes.io/t/announce-security-release-of-kubectl-versions-v1-16-0-1-15-4-1-14-7-and-1-13-11-cve-2019-11251/7993">[ANNOUNCE] Security release of kubectl versions v1.16.0 / 1.15.4 / 1.14.7 and 1.13.11 - CVE-2019-11251</a> : une nouvelle faille sur <code>kubectl cp</code> et cette commande semble supprimée dans la version 1.16.</li>
</ul>
<h3 id="data">Data</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://kafka-tutorials.confluent.io/">Say Hello World to event streaming</a> : Confluent publie des tutoriels sur Kafka, Kafka Streams et KSQL pour illustrer différents cas d'usages avec le code associé. Ils ont l'air assez bien fait.</li>
</ul>
<h3 id="time-series">Time Series</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.influxdata.com/blog/release-announcement-telegraf-1-12-0/">Release Announcement: Telegraf 1.12.0</a> : Telegraf, le collecteur de métriques/logs passent en version 1.12 avec 13 nouveaux plugins dont un pour <a rel="noopener" target="_blank" href="https://github.com/influxdata/telegraf/tree/master/plugins/inputs/docker_log">l'ingestion des logs docker</a> et plein d'autres améliorations. L'autre grande nouveauté est l'arrivée des plugins - il est possible d'ajouter des plugins à Telegrad de façon dynamique ; il n'est plus nécessaire de recompiler telegrad avec ces plugins en son sein.</li>
</ul>