CérénIT - apiLe blog tech de Nicolas Steinmetz (Time Series, IoT, Web, Ops, Data)Zola2021-12-15T09:30:00+01:00https://cerenit.fr/tags/api/atom.xmlWeb, Ops, Data et Time Series - Décembre 20212021-12-15T09:30:00+01:002021-12-15T09:30:00+01:00
Unknown
https://cerenit.fr/blog/web-ops-data-timeseries-decembre-2021/<h3 id="code-frameworks">Code & Frameworks</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.djangoproject.com/weblog/2021/dec/07/django-40-released/">Django 4.0 released</a> : compatible python 3.8+, il appot son lot de nouveautés et notamment la capacité de personnaliser un peu plus le rendu des formulaires pour ce qui me concerne.</li>
</ul>
<h3 id="conteneurs-orchestration">Conteneurs & Orchestration</h3>
<ul>
<li><a rel="noopener" target="_blank" href="http://jpetazzo.github.io/2021/11/30/docker-build-container-images-antipatterns/">Anti-Patterns When Building Container Images</a> : Jérome Petazzoni donne une liste de mauvaises pratiques et des solutions pour y remédier.</li>
</ul>
<h3 id="iot">IoT</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.raspberrypi.com/news/new-old-functionality-with-raspberry-pi-os-legacy/">“New” old functionality with Raspberry Pi OS (Legacy)</a> : la fondation Raspbery Pi annonce l'arrivée d'un OS 64 bits (enfin) mais aussi la mise à disposition d'une version legacy de Raspberry Pi OS basée sur Debian 10/Buster pour ceux qui rencontrent des problèmes avec le passage à Debian 11/Bullseye.</li>
</ul>
<h3 id="monitoring-observabilite">Monitoring & Observabilité</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://grafana.com/blog/2021/12/01/grafana-8.3-released-recorded-queries-panel-suggestions-new-panels-added-security-and-more/">Grafana 8.3 released: Recorded queries, panel suggestions, new panels, added security, and more</a> & <a rel="noopener" target="_blank" href="https://grafana.com/docs/grafana/latest/whatsnew/whats-new-in-v8-3/?pg=blog">What’s new in Grafana v8.3</a> : Ajout d'une recommendation/suggestion de panel, le nouvel alerting est déployé par défaut, Candelstick en mode beta pour les données financières et amélioration du panel GeoMap pour la version OSS.
title: "Web, Ops, Data et Time Series - NovemDécembre 2021"</li>
</ul>
<h3 id="tests">Tests</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://robotframework.org/">RobotFramework</a> : robot opensource d'automatisation tant pour des tests que des process d'automatisation robotique, il semble assez complet pour permettre de faire des tests assez complets tout en proposant une interface relativement simple. A voir ce que cela donne...</li>
<li><a rel="noopener" target="_blank" href="https://dredd.org/">Dredd</a> : pour tester vos API au format Blueprint ou OpenAPI</li>
<li><a rel="noopener" target="_blank" href="https://blog.kalvad.com/keep-calm-and-release-your-api-in-prod/">Keep calm and release your API in prod</a> : <a rel="noopener" target="_blank" href="https://github.com/taverntesting/tavern">Tavern</a> permet de tester des API HTTP via une déclariaton des scénarios en YAML. Il s'appuie sur pytests, requests et dispose d'une intégration MQTT. Le billet montre un cas d'exemple.</li>
</ul>
<h3 id="time-series">Time Series</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.senx.io/demystifying-the-use-of-the-parquet-file-format-for-time-series/">Demystifying the use of the Parquet file format for time series</a> : retour sur le format Parquet et son usage pour des séries temporelles. Au delà de l'explication, il est intéressant de mettre cela en perspective vis à vis d'InfluxData qui a prévu que son moteur de stockage Iox soit notamment basé sur Parquet.</li>
</ul>
Web, Ops & Data - Aout 20172017-08-30T09:30:00+02:002017-08-30T09:30:00+02:00
Unknown
https://cerenit.fr/blog/web-ops-and-data-aout-2017/<h3 id="cloud">Cloud</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://azure.microsoft.com/fr-fr/blog/announcing-cncf/">Microsoft joins Cloud Native Computing Foundation</a> : Microsoft continue à embrasser l'open source et cela se traduit par l'annonce indiquant que la société rejoint la Cloud Native Computing Foundation. Cette fondation héberge des projets comme Kubernetes et ses composants, ainsi que plus récemment les solutions de conteneurisation utilisée par Docker et CoreOS (containerd, rkt). <a rel="noopener" target="_blank" href="https://thenewstack.io/amazon-web-services-joins-cloud-native-computing-foundation/">Amazon (AWS) rejoint la fondation</a> également.</li>
<li><a rel="noopener" target="_blank" href="https://logz.io/blog/serverless-guide/">AWS Lambda vs. Azure Functions vs. Google Functions</a> : un rappel sur le fonctionnement des architectures serverless et des principales fonctionnalités de chacun des fournisseurs (AWS, Google, Microsoft)</li>
<li><a rel="noopener" target="_blank" href="https://aws.amazon.com/blogs/aws/aws-summit-new-york-summary-of-announcements/">AWS Summit New York – Summary of Announcements</a> : retrouver les annonces et la keynote du AWS Summit de New York.</li>
</ul>
<h3 id="container-orchestration">Container & Orchestration</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://githubengineering.com/kubernetes-at-github/">Kubernetes at Github</a> : retrospective de la migration de Github vers Kubernetes.</li>
<li><a rel="noopener" target="_blank" href="https://blog.docker.com/2017/08/docker-enterprise-edition-17-06/">Announcing the New Release of Docker Enterprise Edition</a> : au programme de cette version 17.06, notamment le support multi-architecture (Linux,Windows 2016, IBM Z Systems) qui devrait lever les limites identifiées de mon retour sur <a rel="noopener" target="_blank" href="https://cerenit.fr/blog/docker-dans-un-contexte-hybre-windows-et-linux">docker dans un contexte hybride Linux/Windows</a>. Cette version apporte également des améliorations coté sécurité (gestion de rôles, etc)</li>
</ul>
<h3 id="documentation">Documentation</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://speakerdeck.com/exirel/read-and-write-the-doc">Read & Write The Doc</a> : les slides d'un talk donnant de bonnes pratiques sur la manière et les pratiques à adopter/éviter en matière de documentation.</li>
</ul>
<h3 id="elasticsearch">Elasticsearch</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://logz.io/blog/elastic-stack-windows/">Installing the Elastic Stack on Windows</a> : Dans le cadre de la sortie de <a rel="noopener" target="_blank" href="https://www.elastic.co/blog/elasticsearch-5-5-0-released">Elasticsearch 5.5</a>, le support de l'installateur Windows est officiel. Ce billet montre comment installer Elasticsearch, Kibana et Filebeat sous un environnement Windows.</li>
<li><a rel="noopener" target="_blank" href="https://logz.io/blog/kibana-time-series-visual-builder/">Taking A Look At Kibana’s Time Series Visual Builder</a> : la future version 6 de Kibana va se doter d'un visualisateur orienté données temporelles (time series). L'auteur du billet rappelle que c'était un point faible de Kibana jusqu'à présent (vis à vis de Grafana notamment), que les essais avec Timelion ne répondaient que partiellement à ce besoin mais que là, Elastic semble être sur le point de rattraper son retard. A évaluer même si une plateforme TICK+Grafana (Telegraf, InfluxDB, Chronograf, Kapacitor) demandera moins de ressources qu'une stack Elastic/Kibana avec certes des capacités d'indexation moins forte mais le besoin n'est pas forcément là...</li>
<li><a rel="noopener" target="_blank" href="http://tech.m6web.fr/migration-elasticsearch/">Elasticsearch: la grande migration</a> : retour d'expérience des équipes Tech de M6 Web sur la migration de leur cluster Elasticsearch de la version 1.7 vers 5.2.</li>
<li><a rel="noopener" target="_blank" href="https://www.elastic.co/blog/small-medium-or-large-scaling-elasticsearch-and-evolving-the-elastic-stack-to-fit">Small, Medium, or Large - Scaling Elasticsearch and Evolving the Elastic Stack to Fit</a> : Elastic publie un billet intéressant donnant différents types de configuration & architectures pour des besoins autour d'ELK allant de simple à très complexe et fournir des pointeurs vers différentes ressources utiles.</li>
<li><a rel="noopener" target="_blank" href="https://www.elastic.co/blog/starting-down-the-path-for-elastic-apm">Starting Down the Path of APM for the Elastic Stack</a> : les prémices de la fonctionnalité APM (Application Performance Monitoring) d'Elastic suite au rachat d'Opbeat. Pour le moment, il s'agit de la pré-sortie des version serveurs et des clients ; pour la nouvelle UI, il va falloir attendre encore un peu mais des dashboards sont déjà accessibles via Kibana.</li>
<li><a rel="noopener" target="_blank" href="https://www.elastic.co/blog/index-sorting-elasticsearch-6-0">Introducing Index Sorting in Elasticsearch 6.0</a> : Dans sa version 6.0 à venir, il sera possible de définir des index triés dans Elasticsearch. Cette définition du tri se fera lors de la création de l'index. Si cela doit permettre de sortir des résultats plus rapidement, dans certains cas, cela peut pénaliser sérieusement la performance d'Elasticsearch. A utiliser à bon escient !</li>
</ul>
<h3 id="full-stack">Full Stack</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.ippon.fr/2017/08/07/developpeur-full-stack-oui/">Développeur full stack ? Oui… mais…</a> : enfin un bon article démystifiant le concept parfois fumeux de "full-stack" : <em>"Quand nous parlons de profil full stack, cela signifie que le développeur est spécialisé dans certains domaines, tout en ayant des connaissances sur d’autres sujets. En général, nous considérons un développeur full stack comme maîtrisant au moins 3-4 sujets. Mais cela ne couvre pas l’ensemble des besoins."</em></li>
</ul>
<h3 id="nosql">NoSQL</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://rethinkdb.com/blog/2.3.6-release/">Announcing RethinkDB 2.3.6: the first release under community governance</a> : après l'annonce de la mort de la société commerciale et la transition vers la Linux Foundation, une <a rel="noopener" target="_blank" href="https://github.com/rethinkdb/rethinkdb/blob/v2.3.x/NOTES.md">version de maintenance</a> qui fait plaisir à voir en espérant que le projet continuera à évoluer par la suite. Un sacré premiers pas et une version 2.4 est annoncée dans les tuyaux !</li>
</ul>
<h3 id="open-web">Open Web</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.mozfr.org/post/2017/07/Firefox-Web-fin-Flash">Firefox, le Web et la fin de Flash</a> (<a rel="noopener" target="_blank" href="https://blog.mozilla.org/futurereleases/2017/07/25/firefox-roadmap-flash-end-life/">versin anglaise</a>) : 2020, ce sera enfin la fin de Flash, Adobe l'a décidé et s'est concerté avec les éditeurs de navigateurs pour gérer sa fin de vie. </li>
<li>La même annonce, coté <a rel="noopener" target="_blank" href="https://blogs.windows.com/msedgedev/2017/07/25/flash-on-windows-timeline/">Microsoft pour IE/Edge</a>, <a rel="noopener" target="_blank" href="https://www.blog.google/products/chrome/saying-goodbye-flash-chrome/">Google pour Chrome</a> et <a rel="noopener" target="_blank" href="https://webkit.org/blog/7839/adobe-announces-flash-distribution-and-updates-to-end/">Apple pour Safari/Webkit</a></li>
</ul>
<h3 id="securite">Sécurité</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://github.com/shieldfy/API-Security-Checklist">API Security Checklist</a> : une check-list pour les aspects sécurité d'une API qui reprend les principaux points: authentification, traitement des entrée/sorties, infrastructure, etc.</li>
<li><a rel="noopener" target="_blank" href="https://scotthelme.co.uk/csp-cheat-sheet/">CSP Cheat Sheet</a> : Une page de présentation rapide et consise des options de configuraiton liée à CSP (Content Security Policy)</li>
<li><a rel="noopener" target="_blank" href="https://scotthelme.co.uk/revocation-is-broken">Revocation is broken</a> : excellent billet sur les problèmes liés à la révocation de certificats et les nouvelles pistes à venir pour mieux traiter ce sujet.</li>
<li><a rel="noopener" target="_blank" href="https://scotthelme.co.uk/im-giving-up-on-hpkp/">I'm giving up on HPKP</a> : l'auteur explique en quoi HPKP (HTTP Public Key Pinning) est compliqué et dangereux à mettre en place ; à la fin, le jeu n'en vaut pas la chandelle et qu'il vaudrait mieux ne pas tenir compte de cette pratique pour donner une bonne note aux configurations de sécurité des sites web. Il indique aussi les alternatives à venir et leurs avantages sur la solution actuelle.</li>
</ul>
<h3 id="web-performance">Web Performance</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.slideshare.net/JeanPierreVincent/performance-des-tiers-combien-cote-cet-emplacement-pub">Performance des tiers : combien coûte cet emplacement pub ? </a> : les impacts en termes de performance mais aussi de sécurité (vol de données, etc) de l'utilisation de script tiers sur votre site.</li>
</ul>
Web, Ops & Data - Juillet 20172017-07-26T09:30:00+02:002017-07-26T09:30:00+02:00
Unknown
https://cerenit.fr/blog/web-ops-and-data-juillet-2017/<h3 id="api">API</h3>
<ul>
<li><a rel="noopener" target="_blank" href="http://blog.octo.com/versionning-dapi-zero-downtime-deployment-et-migration-sql-theorie-et-cas-pratique/">Versionning d’API, Zero Downtime Deployment et migration SQL : théorie et cas pratique</a> : un retour d'expérience bien illustré sur la migration d'une API avec changement de modèle de données et ce sans downtime. Les principaux points d'écueil et les stratégies possibles sont présentées. A vous d'adapter ensuite à votre contexte.</li>
</ul>
<h3 id="cloud">Cloud</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://cloudplatform.googleblog.com/2017/07/choosing-the-right-compute-option-in-GCP-a-decision-tree.html">Choosing the right compute option in GCP: a decision tree</a> : Google fourni un arbre de décision pour la/les solution(s) à utiliser sur CGP pour votre prochain projet.</li>
<li><a rel="noopener" target="_blank" href="https://sonra.io/2017/06/28/mapping-big-data-warehouse-architecture-aws-google-cloud-azure/">Mapping AWS, Google Cloud, Azure Services to Big Data Warehouse Architecture</a> : panorama des solutions Opensource et des implémentations Cloud (AWS, GCP, Azure) pour différents besoins autour des traitements de données (ingestion, stockage, streaming, batch, machine learning, etc)</li>
<li><a rel="noopener" target="_blank" href="https://cloud.google.com/free/docs/map-aws-google-cloud-platform">Map AWS services to Google Cloud Platform products </a> : les correspondances entre les services AWS et GCP.</li>
<li><a rel="noopener" target="_blank" href="https://cloud.google.com/free/docs/map-azure-google-cloud-platform">Map Microsoft Azure services to Google Cloud Platform products</a> : la même carte en version Azure / GCP</li>
</ul>
<h3 id="container-orchrestration">Container & orchrestration</h3>
<ul>
<li><a rel="noopener" target="_blank" href="http://blog.kubernetes.io/2017/06/kubernetes-1.7-security-hardening-stateful-application-extensibility-updates.html">Kubernetes 1.7: Security Hardening, Stateful Application Updates and Extensibility</a> : nouvelle version de Kubernetes avec son lot d'améliorations coté sécurité (communication réseau, gestion des secrets, etc) et stockage principalement.</li>
<li><a rel="noopener" target="_blank" href="http://blog.docker.com/2017/06/announcing-docker-17-06-community-edition-ce/">Announcing Docker 17.06 Community Edition (CE)</a> : cette version apporte essentiellement le <a rel="noopener" target="_blank" href="https://blog.docker.com/2017/07/multi-stage-builds/">multi-stage builds</a>, à savoir la capacité de construire une image docker à partir de plusieurs conteneurs intermédiaires. Ces conteneurs intermédiaires permettent par ex de compiler les différents éléments d'un programme. Pour un programme en go par ex, on peut imaginer un premier conteneur qui build le programme à partir des sources et le conteneur final ne contient que le binaire go.</li>
</ul>
<h3 id="documentation">Documentation</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://hackernoon.com/making-history-writing-the-docs-that-need-to-be-written-1396e27fae65">Making history: writing the docs that need to be written</a> : l'auteur explique l'intérêt qu'il voit à documenter les choses, à raconter l'histoire à l'aune de son expérience sur le projet RabbitMQ. Du partage de connaissance, expliquer les raisons et les logiques de développement, éviter de refaire les mêmes erreurs ou encore la capacité d'accueillir de nouveaux membres dans le projet, je rajouterai le fait de pouvoir oublier ce qui a été fait. En effet, une fois documenté, on peut revenir sur le sujet facilement et libérer sa mémoire pour d'autres sujets (et éviter la dépendance à sa personne).</li>
</ul>
<h3 id="frontend">Frontend</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://medium.com/@chriscordle/why-angular-2-4-is-too-little-too-late-ea86d7fa0bae">Why Angular 2/4 Is Too Little, Too Late</a> : <em>"AngularJS was a decent idea in 2012 but in 2017, the JS ecosystem has surged past Angular in maturity, flexibility, and productivity. Thanks to webpack, NPM on the front-end, and a mature ecosystem of tooling and libraries, it is quite easy to maintain a large, flexible, well-engineered SPA with React, Vue, or other lightweight JS libraries, even at enterprise companies with large teams"</em> Tout est dit, React a gagné.</li>
</ul>
<h3 id="management">Management</h3>
<ul>
<li><a rel="noopener" target="_blank" href="http://www.geek-directeur-technique.com/2017/07/05/combien-de-developpeurs-mettre-sur-un-projet">Combien de développeurs mettre sur un projet</a> : Si la réponse est le moins possible et idéalement un seul, l'intérêt de l'article porte surtout sur le fait de mesurer la productivité au niveau de l'entreprise et plus au niveau du projet. Ce qui change la perspective...</li>
<li><a rel="noopener" target="_blank" href="https://medium.com/@frontier_lab/la-frugalit%C3%A9-le-graal-de-lentreprise-innovante-c2628642a05c">La frugalité, le graal de l’entreprise innovante</a> : faire simple (KISS), garder le focus (MVP), en petites équipes autonomes et responsables (agile, lean), prioriser (kanban, agile, lean), et aller à l'encontre des habitudes du toujours plus de ressources / complexité / ... et qui sont au final votre véritable ennemi et ne vous garantissent pas le succès de votre projet. </li>
</ul>
<h3 id="redis">Redis</h3>
<ul>
<li><a rel="noopener" target="_blank" href="http://www.spreaker.com/user/vhe74/episode-41-redis-avec-damien-krotkine">Episode 41 : Redis avec Damien Krotkine</a> : un épisode thématique de <a rel="noopener" target="_blank" href="http://bigdatahebdo.com/">Big Data Hebdo</a>, le podcast autour du big data, sur la solution <a rel="noopener" target="_blank" href="https://redis.io/">Redis</a>.</li>
</ul>
<h3 id="securite">Sécurité</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://scotthelme.co.uk/how-to-revoke-a-lets-encrypt-certificate/">How to revoke a Let's Encrypt certificate</a> : s'il est aisé d'obtenir de nouveaux certificats avec Let's Encrypt, il peut y voir des cas où l'on veut révoquer un certificat. Le billet explique comment procéder.</li>
<li><a rel="noopener" target="_blank" href="https://letsencrypt.org/2017/07/06/wildcard-certificates-coming-jan-2018.html">Wildcard Certificates Coming January 2018</a> : Let's Encrypt va fournir des certificats wildcard (*.domaine.tld) à compter de Janvier 2018, et ce gratuitement.</li>
</ul>
<h3 id="vie-privee">Vie Privée</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.donneespersonnelles.fr/gdpr">GDPR, les actions indispensables de conformité (étude longue)</a> : le billet rappelle les changements de contexte qui ont conduit à ce nouveau réglement. Il parcourt les principales obligations et sensibilise sur les différents sujetS. (dommage que les actions de la souris (séléction, click-droit, etc) soient interdits sur le site...)</li>
<li><a rel="noopener" target="_blank" href="http://www.spreaker.com/user/vhe74/ep42-gdpr">GDPR dans la pratique</a> : un autre épisode de <a rel="noopener" target="_blank" href="http://bigdatahebdo.com">Big Data Hebdo</a> consacré à la GDPR avec une revue de la réforme à venir avec des bonnes pratiques et aussi pour une fois une présentation de cette réforme comme étant une opportunité. La CNIL propose d'ailleurs <a rel="noopener" target="_blank" href="https://www.cnil.fr/fr/principes-cles/reglement-europeen-se-preparer-en-6-etapes">un guide en 6 étapes</a> et un <a rel="noopener" target="_blank" href="https://www.cnil.fr/fr/reglement-europeen-sur-la-protection-des-donnees-ce-qui-change-pour-les-professionnels">guide pour les professionnels indiquant les changements et impacts à venir</a>.</li>
</ul>
Web, Ops & Data - Janvier 20172017-01-25T09:30:00+01:002017-01-25T09:30:00+01:00
Unknown
https://cerenit.fr/blog/web-ops-and-data-janvier-2017/<p>Nouvelle année, nouveau format - au programme une édition mensuelle mixant brèves et des choses plus construites/élaborées (j'espère le mois prochain)</p>
<h2 id="en-bref">En Bref</h2>
<h3 id="api">API</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://larlet.fr/david/blog/2016/specifications-apis/">Specifications and APIs</a> : Réflexion sur la génération automatique de la doc d'une API avec ses avantages et inconvénients et l'idée qu'une API est avant tout un contrat passé entre son producteur et ses consommateurs.</li>
<li><a rel="noopener" target="_blank" href="https://www.youtube.com/watch?v=6onHFNqMUwY">Le design d'API REST, un débat sans fin ? (Guillaume Laforge, Devoxx FR 2016)</a> : Revue des composants d'une API, des status code et autres bonnes pratiques.</li>
<li><a rel="noopener" target="_blank" href="https://www.youtube.com/watch?v=4oLUXZXUZYc">RAML une autre façon de concevoir vos APIs RESTful (Sébastien LECACHEUR, Devoxx FR 2016)</a> : <a rel="noopener" target="_blank" href="http://raml.org/">RAML</a>, Restfull API Markup Language, est un moyen de décrire une API. Au-delà de la specs, il y a tous les outils pour concevoir, bâtir, tester, documenter et partager son API. La vidéo permet de faire un tour des capacités de RAML.</li>
</ul>
<h3 id="arm-rpi">ARM / RPi</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/">Setup Kubernetes on a Raspberry Pi Cluster easily the official way!</a> : Kubernetes, la solution d'orchestration de conteneurs, devient de plus en plus utilisable sur un enrionnement ARM (Raspberry, etc). Il faut que je réessaie ça sur mon Picocluster ; les derniers essais n'étaient pas très probant mais je n'avais pas utilisé apparemment le bon driver réseau (ie flannel et non pas weave pour ARM comme indiqué dans le billet).</li>
<li><a rel="noopener" target="_blank" href="https://github.com/hypriot/image-builder-rpi/releases/tag/v1.2.0">HypriotOS 1.2</a> avec Docker 1.13 est également disponible pour vos RPi.</li>
</ul>
<h3 id="big-data">Big Data</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://databricks.com/blog/2017/01/04/databricks-and-apache-spark-year-in-review.html">Databricks and Apache Spark 2016 Year in Review</a> : Databricks, l'éditeur de Spark, fait sa revue de l'année 2016 et des apports significatifs réalisés sur Spark : Support SQL, Structured Streaming, Spark 2.x.</li>
<li><a rel="noopener" target="_blank" href="https://speakerdeck.com/aseigneurin/introduction-to-kafka-streams-with-a-real-life-example">Introduction to Kafka Streams with a Real-Life Example</a> : l'auteur montre les limites de la combinaison Kafka+Spark (j'en ai vécu une partie) et propose son retour d'expérience sur la migration vers Kafka Streams (et conforte l'opinion que j'avais). Reste la problématique du monitoring de Kafka Streams à améliorer même si des solutions adhoc sont listées.</li>
<li><a rel="noopener" target="_blank" href="http://engineering.skybettingandgaming.com/2017/01/23/streaming-architectures/">Towards a realtime streaming architecture</a> : dans la continuité du billet précédent, retour d'expérience d'une entreprise passant de Spark+Kafka à Kafka, Kafka Streams, Kafka Connect et Akka pour faire du vrai streaming (et pas du micro-batch). Intéressant de voir qu'ils jugent Flink trop complexe pour le moment au regard de leurs besoins. Globalement, l'article montre le problème récurrent dans une architecture big data de la maitrise de l'ensemble des composants pour bien les faire fonctionner. Confluent, en apportant Kafka Streams et Kafka Connect autour de Kafka, semble avoir trouver le bon créneau combinant (une relative) simplicité technologique et performance.</li>
</ul>
<h3 id="cli">CLI</h3>
<ul>
<li><a rel="noopener" target="_blank" href="http://jpmens.net/2016/03/05/a-shell-command-to-create-json-jo/">A shell command to create JSON: jo</a></li>
</ul>
<h3 id="container-orchrestration">Container & Orchrestration</h3>
<ul>
<li><a rel="noopener" target="_blank" href="http://rancher.com/rancher-1-3-experimental-windows-support/">Rancher v1.3: Experimental Windows Containers Support</a></li>
<li><a rel="noopener" target="_blank" href="https://blog.docker.com/2016/12/understanding-docker-networking-drivers-use-cases/">Understanding Docker Networking Drivers and their use cases</a> : si le mode bridge est connu de fait, la description d'overlay et de macvlan valent le détour.</li>
<li><a rel="noopener" target="_blank" href="http://blog.octo.com/containerus-bellum-ou-la-chronique-des-hostilites-dans-lecosysteme-docker/">Containerus Bellum, ou la chronique des hostilités dans l’écosystème Docker</a> : résumé, panorama et perspectives de l'écosystème des conteneurs et des solutions d'orchestration. Si vous n'avez pas suivi le sujet en 2016, cela vous fait une belle synthèse.</li>
<li><a rel="noopener" target="_blank" href="https://blog.docker.com/2017/01/whats-new-in-docker-1-13/">Introducing Docker 1.13</a> : Diverses améliorations au programme avec notamment une uniformisation de la ligne de commande. Ce qui m'intéresse le plus c'est de pouvoir m'appuyer sur un fichier docker-compose pour déployer des containers dans un cluster docker swarm. Des améliorations de commandes, quelques autres nouvelles fonctionnalités et la sortie du mode beta pour Azure & AWS sinon.</li>
</ul>
<h3 id="devops">DevOps</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.ippon.fr/2017/01/12/10-astuces-ansible/">10 astuces Ansible</a> : revue de 10 bonnes pratiques concernant l'outil d'automatisation Ansible. Il me manquait la personnalisation du <code>logger</code> et de <code>ansible.cfg</code></li>
</ul>
<h3 id="elasticsearch">Elasticsearch</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.elastic.co/blog/numeric-and-date-ranges-in-elasticsearch-just-another-brick-in-the-wall">Numeric and Date Ranges in Elasticsearch: Just Another Brick in the Wall</a> : Elastic (5.2) permet maintenant de définir des index liés à des plages concernant les nombres (entier, flottant, long, double) et les dates. Reste plus qu'à requêter sur ces index.</li>
</ul>
<h3 id="opinions">Opinions</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://larlet.fr/david/blog/2016/tools-teams/">Tools & Teams</a> : au-delà du "Utiliser le bon outil pour la bonne tâche", c'est surtout d'utiliser les outils avec lesquelles une équipe est efficace à un instant donnée. La vision a long terme étant d'aller au-delà des outils vers les concepts afin d'avoir une compétence/expérience qui s'affranchit plus facilement des outils (qui ne sont pas éternels).</li>
</ul>
<h3 id="postgres">Postgres</h3>
<ul>
<li><a rel="noopener" target="_blank" href="http://www.craigkerstiens.com/2017/01/08/simple-but-handy-postgresql-features/">Simple but handy postgresql features</a> : Sympa le <code>\watch</code> ou <code>jsonb_pretty</code> pour respectivement surveiller le résultat d'une requête et affichrer proprement une donnée au format JSON.</li>
</ul>
<h3 id="python">Python</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://github.com/kennethreitz/records">Records, SQL for Humans</a> : comme tous les projets de <a rel="noopener" target="_blank" href="https://github.com/kennethreitz">Kenneth Reitz</a> (requests, maya, etc), une API simple pour manipuler des données (ici des requêtes SQL)</li>
<li><a rel="noopener" target="_blank" href="https://pypi.python.org/pypi/pytz">pytz</a> : World Timezone Definitions for Python - permet de faire des calculs sur les dates, la librairie gérerait également les heures d'été/d'hiver dans les calculs.</li>
<li><a rel="noopener" target="_blank" href="https://www.kennethreitz.org/essays/announcing-pipenv">Announcing Pipenv!</a> : Vous réviez d'un outil combinant pip et virtualenv et avec des options supplémentaires, Kenneth Reitz l'a fait durant un week-end...</li>
</ul>
<h3 id="securite">Sécurité</h3>
<ul>
<li><a rel="noopener" target="_blank" href="http://edu.williamdurand.fr/web-security-101-slides">Web Security 101</a> : présentation des principaux concepts, des cas d'exemples et des moyens de se prémunir.</li>
<li><a rel="noopener" target="_blank" href="https://blogs.windows.com/msedgedev/2017/01/10/edge-csp-2/">Introducing support for Content Security Policy Level 2</a> : Microsoft Edge se dote du support de niveau 2 de <a rel="noopener" target="_blank" href="https://content-security-policy.com/">Content Security Policy (CSP)</a> afin de permettre au propriétaire d'un site de mieux protéger ses clients en déclarant les ressources autorisées ou pas.</li>
<li><a rel="noopener" target="_blank" href="https://githubengineering.com/githubs-post-csp-journey/">Github's Post CSP Journey</a> : retour des équipes de Github sur l'implémentation de CSP et les points encore à adresser (spoiler : non, CSP n'est pas l'arme ultime). Ces points sont peut être des cas marginaux pour des sites classiques mais pas pour Github. Intéressant à lire.</li>
</ul>
<h3 id="web">Web</h3>
<ul>
<li><a rel="noopener" target="_blank" href="http://zurb.com/article/1460/foundation-for-sites-6-3-a-little-bit-nau">Foundation for Sites 6.3 - A Little Bit Naughty and A Whole Lotta Nice!</a></li>
<li><a rel="noopener" target="_blank" href="https://nicolas-hoizey.com/2017/01/how-much-data-should-my-service-worker-put-upfront-in-the-offline-cache.html">How much data should my Service Worker put upfront in the offline cache?</a> : si les service worker permettent de faire du cache applicatif coté navigateur, Nicolas pose la question de la stratégie de cache associée. Réflexion utile...</li>
<li><a rel="noopener" target="_blank" href="https://medium.com/@alexmngn/from-reactjs-to-react-native-what-are-the-main-differences-between-both-d6e8e88ebf24">From ReactJS to React-Native, what are the main differences between both?</a> : Pas tout à fait web, mais comparaison intéressante sur les différences entre un projet ReactJS et un projet React-Native.</li>
</ul>