CérénIT

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

Web, Ops & Data - Aout 2017

cloud docker microsoft aws cncf lambda serverless kubernetes linux windows elasticsearch kibana index search fullstack rethinkdb flash openweb api sécurité checklist certificat hpkp revocation performance tiers publicité

Cloud

Container & Orchestration

Documentation

  • Read & Write The Doc : les slides d’un talk donnant de bonnes pratiques sur la manière et les pratiques à adopter/éviter en matière de documentation.

Elasticsearch

  • Installing the Elastic Stack on Windows : Dans le cadre de la sortie de Elasticsearch 5.5, le support de l’installateur Windows est officiel. Ce billet montre comment installer Elasticsearch, Kibana et Filebeat sous un environnement Windows.
  • Taking A Look At Kibana’s Time Series Visual Builder : la future version 6 de Kibana va se doter d’un visualisateur orienté données temporelles (time series). L’auteur du billet rappelle que c’était un point faible de Kibana jusqu’à présent (vis à vis de Grafana notamment), que les essais avec Timelion ne répondaient que partiellement à ce besoin mais que là, Elastic semble être sur le point de rattraper son retard. A évaluer même si une plateforme TICK+Grafana (Telegraf, InfluxDB, Chronograf, Kapacitor) demandera moins de ressources qu’une stack Elastic/Kibana avec certes des capacités d’indexation moins forte mais le besoin n’est pas forcément là…
  • Elasticsearch: la grande migration : retour d’expérience des équipes Tech de M6 Web sur la migration de leur cluster Elasticsearch de la version 1.7 vers 5.2.
  • Small, Medium, or Large - Scaling Elasticsearch and Evolving the Elastic Stack to Fit : Elastic publie un billet intéressant donnant différents types de configuration & architectures pour des besoins autour d’ELK allant de simple à très complexe et fournir des pointeurs vers différentes ressources utiles.
  • Starting Down the Path of APM for the Elastic Stack : les prémices de la fonctionnalité APM (Application Performance Monitoring) d’Elastic suite au rachat d’Opbeat. Pour le moment, il s’agit de la pré-sortie des version serveurs et des clients ; pour la nouvelle UI, il va falloir attendre encore un peu mais des dashboards sont déjà accessibles via Kibana.
  • Introducing Index Sorting in Elasticsearch 6.0 : Dans sa version 6.0 à venir, il sera possible de définir des index triés dans Elasticsearch. Cette définition du tri se fera lors de la création de l’index. Si cela doit permettre de sortir des résultats plus rapidement, dans certains cas, cela peut pénaliser sérieusement la performance d’Elasticsearch. A utiliser à bon escient !

Full Stack

  • Développeur full stack ? Oui… mais… : enfin un bon article démystifiant le concept parfois fumeux de “full-stack” : “Quand nous parlons de profil full stack, cela signifie que le développeur est spécialisé dans certains domaines, tout en ayant des connaissances sur d’autres sujets. En général, nous considérons un développeur full stack comme maîtrisant au moins 3-4 sujets. Mais cela ne couvre pas l’ensemble des besoins.”

NoSQL

Open Web

Sécurité

  • API Security Checklist : une check-list pour les aspects sécurité d’une API qui reprend les principaux points: authentification, traitement des entrée/sorties, infrastructure, etc.
  • CSP Cheat Sheet : Une page de présentation rapide et consise des options de configuraiton liée à CSP (Content Security Policy)
  • Revocation is broken : excellent billet sur les problèmes liés à la révocation de certificats et les nouvelles pistes à venir pour mieux traiter ce sujet.
  • I’m giving up on HPKP : l’auteur explique en quoi HPKP (HTTP Public Key Pinning) est compliqué et dangereux à mettre en place ; à la fin, le jeu n’en vaut pas la chandelle et qu’il vaudrait mieux ne pas tenir compte de cette pratique pour donner une bonne note aux configurations de sécurité des sites web. Il indique aussi les alternatives à venir et leurs avantages sur la solution actuelle.

Web Performance

Web, Ops & Data - Juillet 2017

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

API

Cloud

Container & orchrestration

  • Kubernetes 1.7: Security Hardening, Stateful Application Updates and Extensibility : nouvelle version de Kubernetes avec son lot d’améliorations coté sécurité (communication réseau, gestion des secrets, etc) et stockage principalement.
  • Announcing Docker 17.06 Community Edition (CE) : cette version apporte essentiellement le multi-stage builds, à savoir la capacité de construire une image docker à partir de plusieurs conteneurs intermédiaires. Ces conteneurs intermédiaires permettent par ex de compiler les différents éléments d’un programme. Pour un programme en go par ex, on peut imaginer un premier conteneur qui build le programme à partir des sources et le conteneur final ne contient que le binaire go.

Documentation

  • Making history: writing the docs that need to be written : l’auteur explique l’intérêt qu’il voit à documenter les choses, à raconter l’histoire à l’aune de son expérience sur le projet RabbitMQ. Du partage de connaissance, expliquer les raisons et les logiques de développement, éviter de refaire les mêmes erreurs ou encore la capacité d’accueillir de nouveaux membres dans le projet, je rajouterai le fait de pouvoir oublier ce qui a été fait. En effet, une fois documenté, on peut revenir sur le sujet facilement et libérer sa mémoire pour d’autres sujets (et éviter la dépendance à sa personne).

Frontend

  • Why Angular 2/4 Is Too Little, Too Late : “AngularJS was a decent idea in 2012 but in 2017, the JS ecosystem has surged past Angular in maturity, flexibility, and productivity. Thanks to webpack, NPM on the front-end, and a mature ecosystem of tooling and libraries, it is quite easy to maintain a large, flexible, well-engineered SPA with React, Vue, or other lightweight JS libraries, even at enterprise companies with large teams” Tout est dit, React a gagné.

Management

  • Combien de développeurs mettre sur un projet : Si la réponse est le moins possible et idéalement un seul, l’intérêt de l’article porte surtout sur le fait de mesurer la productivité au niveau de l’entreprise et plus au niveau du projet. Ce qui change la perspective…
  • La frugalité, le graal de l’entreprise innovante : faire simple (KISS), garder le focus (MVP), en petites équipes autonomes et responsables (agile, lean), prioriser (kanban, agile, lean), et aller à l’encontre des habitudes du toujours plus de ressources / complexité / … et qui sont au final votre véritable ennemi et ne vous garantissent pas le succès de votre projet.

Redis

Sécurité

Vie Privée

Web, Ops & Data - Juin 2017

branche terraform iaac elastic solr serverless mysql sécurité test tick lean

Agile

  • Feature Branching is evil ! : 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.

DevOps

  • Terraform Layering : Pourquoi et comment ? : 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.

Elastic

  • Welcome Opbeat to the Elastic family : Elastic se lance sur le marché de la performance applicative (APM) en acquérant la société Opbeat. 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.
  • Designing the Perfect Elasticsearch Cluster: the (almost) Definitive Guide : 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.
  • Top 15 Solr vs. Elasticsearch Differences : 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.

Infrastructure

  • Serverless vs Micro-Service avec infrastructure “maison” : 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.

MySQL

Sécurité

Tests

  • k6 : 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)

TICK (Telegraf, InfluxDB, Chronograf, Kapacitor)

Bonus : Lecture de l’été

  • #hyperlean – Ce que signifie l’avènement du numérique : 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.

Web, Ops & Data - Mai 2017

dokcer container vm elastic html5 json feed micro-service postgres

Conteneurs

  • Docker dans un contexte hybride Windows et Linux : si vous l’avez raté, le retour d’expérience suite à une mission autour de docker dans un environnement Windows et Linux tant au niveau des VMs hôtes que les OS de conteneurs.
  • Container isolation gone wrong : un exemple intéressant où des conteneurs a priori indépendant et isolés se marchent l’un sur l’autre au travers des appels au noyau linux. Même si chaque container est “relativement” isolé des autres, il ne faut pas oublier qu’ils reposent tous sur le même kernel parent.
  • Containers, VMs… Comment ces technologies fonctionnent et comment les différencier? (Quentin Adam) : l’article précédent m’a rappeler cette vidéo de Quentin Adam à Devoxx expliquant les différences entre containers et VMs. Un conteneur est un process linux relativement isolé les uns des autres mais rien de plus. Les plus ciniques pourraient dire que cela ressemble à de l’hébergement mutualisé d’il y a quelques années avec Apache et mod_php ;-)

Elasticsearch

  • X-Pack alternatives : X-Pack est un ensemble de produits additionnels pour ElasticSearch couvrant les besoins de Sécurité, Monitoring, Alterting, Reporting, Graph et Machine Learning. Ce produit est soumis à licence et de mémoire, le prix est assez salé. Le billet liste différentes alternatives suivant les besoins (non testées).
  • Construire un bon analyzer français pour Elasticsearch : un tutoriel assez progressif sur la mise en place d’un analyser français pour vos données dans Elasticsearch. Très pédagogique !

HTML5

  • It’s time for 2.0! : Polymer, le framework (?) initié par Google et permettant d’utiliser les Web Components sort en version 2.0. Une éternité que je n’avais plus entendu parler de Polymer. Le point intéressant étant de voir que les “polyfills” requis pour faire fonctionner Polymer réduisent significativement au fil du temps et de l’implémentation requis par les Web Components dans les différents navigateurs.

JSON

  • JSON Feed : Un Feed RSS/Atom au format JSON plutôt que XML. On a pu tous en rêver à un moment ou à un autre ou le réaliser à la volée via une conversion XML vers JSON. Voilà une première spécification.

Micro-service

  • Enough with the microservices : les micro-services, c’est tendance, tout le monde veut en faire à tort ou à raison. Pour autant, faire des microservices, ce n’est pas simple et ce n’est pas la panacée ou la “balle en argent” qui va résoudre tous vos problèmes. Le billet revient sur les défis d’une approche microservice pour conclure qu’avant d’envisager des micro-services, il vaudrait mieux déjà savoir gérer un monolythe modulaire. La modularité peut déjà répondre à beaucoup d’enjeux de scalabilité, découplage, etc sans avoir besoin de rentrer dans le monde des micro-services et des défis techniques et humains associés.

Postgres

  • Why Use Postgres (Updated for Last 5 Years) : ou la revue rapide de toutes les fonctionnalités qui vous feront aimer et utiliser Postgres comme base relationnelle.
  • Postgres 10.0 beta1 : la fabuleuse base de données Postgres continue son bonhomme de chemin avec des avancées sur la réplication logique, du partitionning, de la recherche full text sur le stockage JSON & JSONB, un rôle dédié au monitoring, etc.
  • Les branches if/else/endif dans psql (PostgreSQL 10) : Avec Postgres 10, le client pourra exécuter des boucles conditionnelles (if/else if/else/end) sur la base d’expressions SQL.

Docker, dans un contexte hybride Windows et Linux

docker swarm container windows linux

Suite à une mission, synthèse sur la possibilité à date de gérer des conteneurs Linux et Windows avec Docker.

Contexte

Les tests ont été réalisés, début mai 2017, sur les environnements suivants :

  • VM Ubuntu 16.04 LTS, à jour, avec Docker 17.03-ee
  • VM Windows Serveur 2016, à jour, avec Docker 17.03-ee.

En début de mission, il était supposé qu’une application métier en C# pourrait migrer vers ASP.net Core (la version opensource de .Net et sa déclinaison ASP) et donc sur un conteneur Linux. La suite nous prouva que toutes les APIs ne sont pas (et ne seront pas forcément) dans la version opensource de .Net et qu’il nous fallait envisager des conteneurs Windows à court terme et une infrastructure hybride Windows & Linux, tant au niveau des hôtes que des conteneurs.

Support de Windows dans le monde des conteneurs.

Avant d’aller plus loin, il faut bien avoir en tête la jeunesse du support de Windows dans le monde des conteneurs. Il faut distinguer deux niveaux de supports de l’OS Windows :

  • Support de Windows comme machine hôte et au sein de laquelle seraient exécutés des conteneurs,
  • Support de Windows comme OS de conteneur, celui-ci s’exécutant sur une machine hôte Windows et/ou Linux

Support de Windows comme machine hôte :

  • Docker Toolbox : annoncé en Aout 2015 avec le pré-requis de Virtualbox pour avoir une VM linux en intermédiaire, le projet est maintenant abandonné au profit de Docker for Windows.
  • Docker for Windows 10 : disponible depuis Juillet 2016, il permet d’exécuter soit des containers windows, soit des containers linux mais pas les deux en même temps.
  • Docker for Windows Server 2016 : disponible depuis septembre 2016. Il ne supporte que des conteneurs Windows.
  • Kubernetes supporte, en version alpha, Windows Server 2016 depuis la version 1.5 (décembre 2016). Néanmoins, toutes les fonctionnalités de Kubernetes ne sont pas encore implémentées à date : Kubernetes 1.5 supporting production workloads & Windows Server Support Comes to Kubernetes
  • Rancher supporte Windows en version expérimentale depuis la version 1.3 (Janvier 2017) ; Support de Windows dans Rancher

Support de Windows comme OS de container :

  • disponible depuis l’été 2016 pour Docker,
  • Depuis fin 2016 pour Kubernetes en version alpha,
  • Depuis début 2017 en version expérimentale pour Rancher 1.3+.

Dans le cadre de la DockerCon d’Avril 2017, Docker et Microsoft ont annoncé le support des conteneurs Linux sous Microsoft Server 2016 via Hyper-V. Il devrait alors être possible de pouvoir lancer simultanément des conteneurs Linux ET Windows sous Windows Server 2016. Il n’y a pas de date connue pour la sortie de la version supportant cette nouveauté. Il faudra surveiller les prochaines releases trimestrielles de Docker pour savoir quand cela sera utilisable de façon “stable”.

En somme, en continuant notre test plus loin, nous savons que nous entrons dans un monde immature avec un support incomplet.

Cluster Swarm hybride Windows/Linux

La première surprise fut de voir qu’il était possible de créer un cluster Swarm avec un noeud Windows et un noeud Linux sans pré-requis particulier.

Il faut ensuite créer manuellement le réseau overlay pour son application (ce sera supporté dans docker-compose 1.13+, version 3.2 du format). Si vous utiliser docker-compose, il faudra alors spécifier ce réseau comme un réseau externe afin que l’application s’y attache à son lancement.

Afin de piloter le déploiement des conteneurs sur les bons hôtes, il convient d’ajouter des labels (ou de s’appuyer sur des labels existants comme node.platform.OS). Ainsi, un conteneur Windows se déploira sur un hôte Windows et idem pour du Linux.

Jusque là, tout va bien mais c’est là que les limitations se font sentir :

  • Le réseau “Overlay”, permettant de ne faire qu’un réseau virtuel avec l’ensemble des noeuds d’un cluser Swarm, n’est supporté que depuis février 2017. Il faut donc s’assurer d’avoir une VM à jour et le patch correspondant.
  • Le “Routing Mesh”, qui permet d’avoir de publier un service sur un port donné et d’accéder à ce service depuis n’importe quel noeud du cluster depuis l’extérieur, n’est pas encore supporté.
  • Le Service Discovery sous Swarm se fait normalement via des IPs Virtuelles. Ce mode n’est pas supporté par Windows et il faut se rabbatre sur du DNS Round Robbin. Ce mode sera utilisable dans un fichier docker-compose en version 1.13+ et le format 3.2+. En attendant, il faut déployer les services manuellement.
  • Enfin, pour exposer des ports, il est obligatoire de les publier au niveau de l’hôte faute de quoi vos conteneurs ne pourront pas communiquer ensemble. L’allocation des ports est dynamique par défaut mais semble être figeable (non testé sous Windows).

Donc au final :

  • Swarm, en dehors d’apporter une résolution DNS, n’apporte pas grand chose pour le moment. Si les ports sont figeables et sous réserve de ne pas avoir plusieurs instances d’un même composant pour cause d’unicité de port, alors cela permettrait de faire un peu plus de choses.
  • Docker-compose en version 1.13 et le format 3.2+ permettrait de piloter une application déployable sur un cluster Swarm en étant capable de gérer la partie réseau et le endpoint dnsrr. Il faudra attendre la prochaine version stable de docker-ee sous Windows pour le valider.

Bon à savoir également :

  • Published Ports On Windows Containers Don’t Do Loopback. Cela vous évitera de perdre du temps à comprendre pourquoi votre conteneur ne répond pas sur localhost sur votre poste windows.
  • Pour une docker registry privée supportant les images Windows, il faut une version 2.5+ de la Docker Registry. La version actuelle est 2.6+

Une série de trois vidéos, publiées il y a quelques jours, montrent bien ce qu’il est possible de faire avec Swarm à ce jour.

Pour conclure, il est possible d’utiliser des conteneurs Windows mais que ce n’est pas encore la panacée. Cela reste néanmoins prometteur et les annonces de Microsoft vont dans le bon sens. Il va falloir attendre quelques mois pour envisager cela plus sereinement.

Update 16/8/2017 : La version 17.06 entreprise edition semble résoudre les limites évoquées précédemment.

20 21 22 23 24