Quantcast
Channel: DevOps – Publicis Sapient Engineering – Engineering Done Right
Viewing all 255 articles
Browse latest View live

Revue de presse

$
0
0

KubeCon + CloudNativeCon EU 2018 – Day 0

$
0
0

Cette semaine se tient à Copenhague la « KubeCon + CloudNativeCon EU 2018 », soit 2 conférences en une : la KubeCon, conférence dédiée à Kubernetes, et la CloudNativeCon, évènement consacré à l’environnement « Cloud Native » gravitant en particulier autour de la CNCF (Cloud Native Computing Foundation).

Ayant la chance d’être présent parmi les 4100 participants, je vous livrerai mes retours sur ce blog, et ceci démarre dès maintenant avec le « Jour 0« . L’évènement ne commence en effet que ce mercredi, mais ce mardi était néanmoins occupé par divers regroupements, ateliers, ainsi qu’une session de lightning talks à laquelle j’ai eu le plaisir d’assister.

Arrivée

La conférence se déroule au Bella Center, tout comme la DockerCon EU 2017 sur laquelle nous avions d’ailleurs écritsur ce blog. A seulement 2 heures d’avion de Paris, c’est parti :

Lightning Talks

A peine arrivé, les hostilités commencent : session de lightning talks !

 

Qu’est ce que ces « Lightning talks » ? Le principe est simple : des talks courts qui s’enchaînent sans répit pour l’auditoire. Et par court, on entend vraiment courts : 5 minutes par talk !

Une quinzaine se sont succédés (voir la liste avec tous les détails ici) et dont voici l’agenda :

 

  • Chaos Engineering In Practice – Paul Jones, Capgemini UK
  • Not One Size Fits All, How to Size Kubernetes Clusters – Jeff Sloyer & Dan Berg, IBM
  • Why you Should Really Pay Attention to K8S Security Best Practices – Benjy Portnoy, Aqua Security
  • Schedule the Scaling of Your Kubernetes Resources Using kube-start-stop – Lili Cosic, Weaveworks
  • A Desktop GUI for your First Kubernetes Deployment – Alessandro Pilotti, Cloudbase Solutions
  • Kubernetes is Blowing Up – Ron Miller, TechCrunch
  • Scaling Distributed Deep Learning with Service Discovery: How CoreDNS Helps Distributed TensorFlow Tasks – Yong Tang, Infoblox Inc.
  • Tips for Operating Kubernetes with OpenStack Cloud Provider – Yang Yu & Yifeng Xiao, VMware
  • Extending Kubernetes with gRPC – Vladimir Vivien, VMware
  • TSDB: The Engine behind Prometheus – Goutham Veeramachaneni, IIT Hyderabad
  • I Got your RBAC – kube-rbac-proxy – Frederic Branczyk, CoreOS
  • The State Of FaaS on Kubernetes – Michael Hausenblas, Red Hat
  • Extending Istio Service Mesh with Envoy v2 APIs for Stateless and Stateful Services – Dmitri Chtchourov & Tim Swanson, Cisco Systems, Inc
  • Istio by Example – Josef Adersberger, QAware
  • What I Wish I’d Known about Fluentd with Kubernetes – Bryan Boreham, Weaveworks
  • Over-engineering My Home with Kubernetes – Matthias Grüter, Spotify

 

Qu’en retenir ? Je vais tenter de vous en fournir un résumé digeste en :

  • limitant les résumés à 2 lignes
  • donnant les quelques liens d’éléments que j’ai moi-même noté pour future investigation et qui sont donc susceptibles de vous intéresser
  • ne mentionnant pas les talks n’ayant pas d’apport particulier ou pouvant être résumés par leur titre

Chaos Engineering In Practice – Paul Jones, Capgemini UK

Résumé : Le Chaos Engineering poursuit son chemin, et Kubernetes en est un excellent terrain de jeu car il est fait pour être contacté programmatiquement.

Liens :

  • kube-monkey, une implémentation du Chaos Monkey de Netflix pour Kubernetes au lieu d’AWS EC2
  • chaos-monkey-spring-boot, qui découvrira automatiquement vos classes annotées pour Spring et ira y introduire des latences, erreurs, et autres joyeusetés usuelles du chaos engineering
  • powerfulseal, un autre Chaos Monkey pour Kubernetes sachant également introduire des erreurs de nodes entiers

Why you Should Really Pay Attention to K8S Security Best Practices – Benjy Portnoy, Aqua Security

Résumé : Les problématiques de sécurité sur Kubernetes sont au centre des préoccupations, mais le point central reste la section dédiée de la documentation officielle.

Liens :

Schedule the Scaling of Your Kubernetes Resources Using kube-start-stop – Lili Cosic, Weaveworks

Résumé : On retrouve vite avec Kubernetes les mêmes problématiques que sur des VMs habituelles, à savoir « j’ai envie d’éteindre mes environnements de dev la nuit et le week-end ». C’est notamment à ce point que répond kube-start-stop, avec comme plans pour le futur d’intégrer la gestion de timezones ainsi que de proposer un chart Helm officiel.

Liens :

A Desktop GUI for your First Kubernetes Deployment – Alessandro Pilotti, Cloudbase Solutions

 

Résumé : Ce talk prenait le parti intéressant de comparer la montée en puissance sur les conteneurs côté Dev et côté Ops : d’un côté une avancée graduelle via les Dockerfiles, manifests Kubernetes, Helm charts, Draft, etc. et de l’autre Minikube puis… de réels clusters avec un nombre conséquent de choix à réaliser. Il présentait kubinstaller comme GUI permettant le côté « découverte » de ces différentes options en tant que « manière simple de fournir une expérience utilisateur guidée ».

Liens :

Avec bien sûr en bonus le XKCD obligatoire ciblé en l’occurrence sur les installeurs de cluster Kubernetes (kubeadm, kops, kubernetes-anywhere, EKS, ACS, AKS, GKE, Magnum, Kubespray, kops, Juju, Kismatic, etc.) :

 

Scaling Distributed Deep Learning with Service Discovery: How CoreDNS Helps Distributed TensorFlow Tasks – Yong Tang, Infoblox Inc.

Résumé : Packing de TensorFlow + CoreDNS dans des scripts Cloud Init afin d’avoir 80% des bénéfices d’un système distribué pour un coût moindre.

Extending Kubernetes with gRPC – Vladimir Vivien, VMware

Résumé : Positionnement très intéressant de gRPC en terme de spécification d’APIs pour des plugins, avec notamment pour exemples CRI, KMS, ou encore le modèle de plugins de CSI.

TSDB: The Engine behind Prometheus – Goutham Veeramachaneni, IIT Hyderabad

Résumé : Présentation des améliorations apportées par TSDB, la nouvelle Time Serie Database derrière Prometheus. Rapide exemple : pour 5 millions de time series actives, à des intervalles de 30 secondes et avec 1 mois de rétention, on passe de 7TB de métriques à stocker sur disque à 600GB, soit 12 fois moins depuis Prometheus 2.0 grâce à TSDB !

I Got your RBAC – kube-rbac-proxy – Frederic Branczyk, CoreOS

Résumé : Partant d’une problématique simple telle que « comment autoriser uniquement Prometheus à scrapper mes endpoints /metrics », ce talk présentait les challenges d’authentification et d’autorisation entre des services tournant sur Kubernetes et la manière dont y répond kube-rbac-proxy au niveau HTTP.

Liens :

The State Of FaaS on Kubernetes – Michael Hausenblas, Red Hat

Résumé : « Is Function-as-a-Service really the « VBA of cloud native computing ? »

Liens :

Extending Istio Service Mesh with Envoy v2 APIs for Stateless and Stateful Services – Dmitri Chtchourov & Tim Swanson, Cisco Systems, Inc

Résumé : Démonstration d’Envoy avec une application faite pour servir de référence d’application distribuée : beatrak

Liens :

 

Istio by Example – Josef Adersberger, QAware

Résumé : Déplacement des problématiques présentes sur toute application vers l’infrastructure afin d’éviter une surcharge de dépendances, notamment pour la partie routing et chaos engineering (latence, fault injection, …) via Istio et une superbe démonstration live.

Liens :

Over-engineering My Home with Kubernetes – Matthias Grüter, Spotify

Résumé : Clou du spectacle, un talk à la fois drôle, original et intéressant présentant un setup de domotique basé sur Home Assistant hébergé sur Kubernetes. « I’m now a YAML engineer and my bedroom is now Cloud Native, nice! »

 

Conclusion

Rendez-vous prochainement pour la suite de cette KubeCon + CloudNativeCon !

Si vous souhaitez en savoir plus sur certains points, n’hésitez pas à contacter les auteurs des talks directement ou à laisser un commentaire sur cet article.

Un jeudi à Devoxx, découvrez le retours des Xebians !

$
0
0

Un jeudi à Devoxx, découvrez le retours des Xebians !

Pour cette nouvelle édition de Devoxx France, les Xebians étaient présents. Ils vous proposent à travers cet article de découvrir leurs avis sur certaines des conférences présentées :

Retrouvez leurs avis sur les conférences du vendredi ici.

Keynote

La e-residence estonienne et l’entrepreneuriat sans frontieres

Arnaud Castaignet nous présente le programme e-Residency cree par le gouvernement estonien en 2014.En effet l’Estonie a mis en place un service administratif en ligne pour toutes les transactions administratives ou presque (à l’exception du mariage, du divorce et des transactions immobilières).

Outre les avantages d’un tel service, une telle infrastructure a permis l’émergence de nouvelles notions, telles que l’e-residence (quelqu’un qui n’existe que par la trace informatique dans le système administratif estonien). Cela permet à n’importe quel individu dans le monde d’avoir une cyber identité estonienne, et peut ainsi lui permettre d’entreprendre diverses activités à distance, par exemple de créer une entreprise. De nombreux entrepreneurs ont franchi le pas et peuvent ainsi créer un commerce dans l’UE, tout en restant dans leur pays d’origine.

La vidéo est disponible ici.

 

Le Smart Building : par où commencer ?

Olivier Selles, le speaker de cette keynote, ne vient pas du monde de l’informatique mais celui du bâtiment. S’il est venu à Devoxx, c’est pour nous présenter une étude prospective sur l’avenir des liens entre le monde de l’IT et celui de la construction.

Olivier Selles part d’un constat sombre pour le secteur de la construction : c’est un secteur déclinant.
En effet, les durées de construction s’allongent, les erreurs se multiplient. C’est même un des rares secteurs de l’économie où la productivité diminue ! En outre, les bâtiments modernes ne plaisent pas au public : celui-ci préferera toujours un bâtiment Hausmannien malgré tous ses défauts à un bâtiment moderne.
Un autre problème est que ce secteur méconnait totalement le secteur de l’IT. L’un des seuls secteurs qui investit moins que le bâtiment en pourcentage dans l’IT est … la chasse !

Du coup, Olivier Selles nous présente une solution qui va non seulement marier le monde de la tech et celui de la construction mais aussi, et surtout, a la capacité de faire rebondir l’industrie du bâtiment : le Smart Building. Ce concept recouvre toutes les idées d’application des nouvelles technologies à la construction pour rendre les bâtiments plus intelligents. L’exemple typique est « The Edge » à Amsterdam, qui est considéré comme un des bâtiments les plus intelligents du monde.
Pour rentrer un peu plus dans les détails, le speaker défini le terme SMART par l’équation suivante :

SMART = Communication + Décision

En effet, pour rendre un bâtiment intelligent, il faut d’une part installer des capteurs et les faire communiquer afin de collecter un maximum de données ; et d’autre part, il faut prendre des décisions pour réagir à ces données.
L’auteur donne plusieurs exemples d’application dans différents domaines :

  • Gestion des salles de réunion : si leur gestion se fait de plus en plus informatiquement, un batiment intelligent peut aller plus loin en pré-chauffant les salles avant les réunions, ce qui optimise la consommation énergétique. Il peut aussi repérer les salles réservées mais vides pour les rendre de nouveau disponibles à la réservation.
  • Sécurité : au lieu d’utiliser des cartes magnétiques d’entrée comme on le fait actuellement, dans le futur, on pourra intégrer les progrès modernes en reconnaissance d’images pour savoir qui entre et qui sort du bâtiment.
  • Maintenance / Exploitation : si l’on prend l’exemple de toutes les ampoules d’un bâtiment, il existe actuellement plusieurs stratégies de maintenance : on peut remplacer une ampoule à chaque fois qu’elle grille ; ou on peut remplacer préventivement une ampoule dès qu’elle atteint un certain âge. Grâce aux technologies modernes, on pourra, de plus en plus utiliser une nouvelle stratégie : la maintenance prédictive. En effet, grâce aux capteurs connectés et aux avancées dans l’analyse des données, on peut détecter (voire apprendre) les signes avant-coureurs d’une panne et remplacer uniquement les pièces qui présentent ces signes. Par exemple, dans le cas des ampoules, un des signes avant-coureurs de la fin de vie est l’instabilité de la tension aux bornes de l’ampoule.
  • Économie positive : par exemple, dans des régions agricoles riches en colza, on peut tout à fait imaginer un bâtiment intelligent dans lequel l’énergie soit fournie par la combustion de l’huile de colza. Cette combustion produira aussi du CO2 qui servira à alimenter une brasserie au sous-sol et un plant de tomates sur le toit. Ces tomates serviront ensuite à la cantine du bâtiment. On privilégie ainsi les circuits courts, on économise l’énergie et on soutient l’économie locale.

Si les promesses du Smart Building sont nombreuses, il y a tout de même beaucoup d’obstacles avant que les bâtiments intelligents ne s’imposent dans les nouveaux projets de construction. L’un des principaux obstacles est le manque de compétences informatiques dans les entreprises de construction. Ce manque de compétences est encore plus criant dans le domaine de la sécurité des nouvelles infrastructures informatiques des constructions. En effet, qui dit informatisation dit souvent problèmes de sécurité. Et déjà, en 2016, une équipe de chercheurs en sécurité informatique ont piraté des ampoules connectées d’un bâtiment à Beer-Sheevah (Israel), prouvant que le problème n’est pas que théorique

Du coup, le speaker pose une dernière question : qui va répondre aux défis technologiques et sécuritaires que pose le Smart Building ? Il voit quatre types d’acteurs qui pourraient y répondre :

  • des RSSI (Responsables de la sécurité des systèmes d’information) qui s’occuperont des SI des bâtiments comme on s’occupe des SI d’entreprise,
  • les entreprises du bâtiment (Bouygues, Eiffage,…) qui imposeront leurs solutions,
  • les GAFAM (Google, Apple, Facebook, Amazon, Microsoft) qui risque eux-aussi d’imposer leurs solutions en apportant leur savoir faire technique (ce qui leur permettra aussi de récupérer encore plus de données sur nos usages),
  • les développeurs eux-mêmes, qui pourront apporter une solution collaborative par le biais de programmes open-source.

C’est clairement cette dernière hypothèse que le speaker préfère, il conclut donc sa présentation par un appel aux développeurs présents pour bâtir de façon collaborative les constructions intelligentes de demain.

Le Smart Building est donc peut-être un futur enjeu majeur pour la croissance des entreprises informatiques. Il prouve en tout cas que la révolution numérique du monde n’est pas terminé puisqu’il reste encore des secteurs entiers de l’économie qui gagneraient à utiliser les nouvelles technologies, et c’est en cela que cette Key note était passionnante.

Vidéo de la conférence

Web, JS, HTML5 et UX

Conférence – Et si Mario était UX Designer…

Alexandra Nemery et Sarah Colmon

Au travers du prisme du jeu vidéo, le duo UX Designer / Product Owner de ce talk nous a démontré par l’exemple quelques uns des grands principes de l’UX.

Il a été question d’éviter des « pièges UX » présents dans certains jeux vidéos récents, mais aussi de s’inspirer de l’excellence intuitive de certains jeux comme le tout premier Super Mario.

Ce talk était de bonne qualité, avec des arguments qui tenaient la route. Les différents profils des deux speakers permettent d’enrichir leur argumentation.

Ajoutez à cela un quizz via Kahoot, des références bibliographiques pour compléter les takeaway, et un support bien conçu, et vous obtenez la recette d’un talk qu’on a plus qu’envie de revoir.

La vidéo est disponible ici.

Conférence – La toile en VR

Florent Berthelot et Barthelemy Jonathan nous présentent comment réaliser facilement une application de réalité virtuelle pour le web.

La réalisation de scènes 3D en web se fait via la combinaison de la balise <canvas> et de l’api webGl. Problème : il est assez fastidieux de réaliser le moindre objet, à titre d’exemple, la réalisation d’un simple cube oblige le développeur à écrire 24 lignes de coordonnées.
La librairie Three.js permet de tout simplifier, mais celle-ci ne gére que la 3D, il manque toujours l’aspect VR.
Pour palier ce manque l’api webVR a vu le jour. Elle est exploitée notamment par deux frameworks :

  • ReactVR : le framework React ne produit pas de html ou de component mobile mais du Three.js
  • A-frame : Mis en place par Mozilla, il n’y a pas besoin de connaitre Javascript puisque tout se fait via des markups

Dès lors la présentation devient une succession de comparaisons entre les deux frameworks, Florent s’occupant de ReactVR et Barthelemy de A-frame.
Leur but est de créer une voiture et de pouvoir la déplacer (une dodge pour ReactVR et Kit pour A-frame)
Les cas d’usages présentés :

  • Réalisation de formes géometriques simples,
  • Import audio,
  • Import de modèles (.obj),
  • Interactions,
  • Déplacements.

Dans tous ces exemples, les deux frameworks s’avèrent être relativement simples d’utilisation et similaires, avec une légère préfèrence pour l’approche full markup.
Finalement, la killing feature sera proposée par A-frame qui fournit un mode debug riche. Il permet de voir en temps réel les differents objets de la scène ainsi que leurs compositions à l’instar de ce que propose les IDEs de game engine moderne (unity, unreal engine …) là où ReactVR ne propose rien d’autre que les modes debug des naviguateurs et l’inspecteur de code javascript.

La présentation bien rythmée et instructive se terminera malheureusement sans question faute de temps, à titre personnel j’aurai aimé savoir s’il n’est pas préférable de passer directement par un moteur de jeu comme Unity et les assets WebVR, ainsi que d’avoir quelques exemples d’utilisation concrète de ces frameworks.

La Video de la conférence est maintenant disponible.

Java, JVM, Javas SE/EE

Conférence – Effective Java, Third Edition: Keepin’ it Effective

L’un des plus gros contributeurs (et auteurs) du langage Java est venu pour nous donner un avant goût de son livre Effective Java, Third edition. 4 ans après la sortie de Java 8, Joshua Bloch se concentre sur les bonnes pratiques avec les lambdas et les Streams.

On retiendra par exemple :

  • L’utilisation de lambdas pour ajouter du comportement aux instances spécifiques d’une Enum tout en évitant de créer des sous-classes.
  • Choisir le plus succinct entre lambda et lambda ref.
  • Préférer déclarer des interfaces fonctionnelles standard (comme BinaryOperator, parmi les 43 existantes) qui sont plus parlantes pour un utilisateur de votre code. Exceptionellement, on pourra préférer des interface spécifiques mais universellement connues, comme Comparator ; dans un certains contexte, ça sera plus clair au niveau des intentions qu’une BiFunction<T,U,R>.
  • Utiliser l’API Stream judicieusement.
    • Est-ce que cela simplifie vraiment le code ? Dans l’exemple donné de la recherche des N premiers nombres de Mersenne, oui ; mais dans la recherche de groupes d’anagrames dans un dictionaire, non ! Au passage, petit tacle involontaire sur Java en faveur de Scala, puisqu’on remarquera qu’une String en Java n’est pas supportée comme Stream de caractères, mais plutôt d’entiers courts non-signés (représentation interne du char natif en Java).
    • Attention au parallélisme : dans l’implémentation de Stream par défaut, l’exemple des N premiers nombres de Mersenne va nécessiter le calcul des n – 1 prédécesseurs pour chaque itération n < N, d’où la transformation de votre CPU en grille-pain et d’un ralentissement très rapide de la progression (temps marginal exponentiel). Au contraire, le calcul des N nombres premiers sur un ensemble déterminé va bénéficier pleinement d’un Stream parallèle.

Nous avons tous été déçus ne pas pouvoir revenir avec un ou deux exemplaires dédicacés… :troll:

La vidéo est disponible ici.

DevOps, Agilité, Méthodologie & Tests

Conférence – DevOps As A Service : approche globale et rationnelle du CI/CD pour les entreprises

Jonathan Roquelaure

Les contraintes de déploiement logiciel ne sont pas les mêmes selon qu’on est un éditeur d’applications mobiles ou un industriel de l’avionique. Aussi, la culture d’entreprise, les savoirs présents et la géographie sont autant de paramètres supplémentaires à prendre en compte quand on veut mettre en pratique les principes DevOps pour l’intégration continue.

Que font les grosses entreprises qui se lancent dans cette transformation ? Avec quels résultats ? Jonathan propose des morceaux choisis de ce qu’il a pu voir expérimenté chez les clients de JFrog avec qui il traite.

Les problématiques abordées vont du Pokemon Dilemma des choix technologiques offerts aux difficultés d’adoption par les employés en passant par la création d’outillage dédié et les besoins nouveaux qui émergent.

On repart avec quelques pistes à explorer et des phrases choc qui permettront de garder le cap :

  • Tout système complexe produira toujours des résultats imprévisibles, il faut donc bâtir un modèle qui réagira au mieux à l’imprévisible ;
  • Harmonisation et standardisation plutôt que centralisation ;
  • « DevOps is a mindset, not a toolset » ;
  • Exposez la surveillance et les mesures faites sur vos outils ;
  • Les gens font confiance à leur pairs, trouvez des avocats du changement parmi eux ;
  • Démarrez petit mais représentatif, pensez grand ;
  • Comptez au moins 1 à 3 ans pour réussir la transformation.

La vidéo est disponible ici.

Conférence – Prise de décisions asynchrone, pourquoi et comment ?

Mais comment font donc les intervenants des projets open-source pour se concerter et prendre des décisions efficaces sans jamais se rencontrer en vrai ? Comment se fait-il que les réunions, de plus en plus nombreuses en entreprise, perdent en efficacité ?

Autant de questions auxquelles Bertrand Delacrétaz tente de répondre dans sa conférence.

L’idée derrière la prise de décision asynchrone est qu’il n’est pas obligatoire d’être tous réunis pour échanger, communiquer et prendre des décisions dans un but commun. Les technologies modernes fournissent en effet de nombreux outils qui nous permettront ainsi de transmettre et décider sans que les différents acteurs soient réunis au même endroit ou ne serait-ce que disponibles au même moment. Pour ce faire, Bertrand propose la mise en place d’un canal de décision partagé asynchrone (slack par exemple) et un outil de diffusion partagé (Bertrand prend les exemples de Jira et de Git).

Bertrand découpe la prise de décision en 4 phases :

  • le brain-storming : chacun expose ses idées ;
  • les options : les différentes idées sont observées, clarifiées et triées suivant leur faisabilité et leurs avantages ;
  • le consensus: les différents protagonistes convergent vers un accord concernant la décision à prendre ;
  • la décision: la décision est actée, puis on historise les éléments qui ont mené à cette décision.

Les avantages de découper les réunions en 4 étapes, séparées dans le temps sont nombreux : outre le fait que les intervenants peuvent être en remote, ils ont également plus de temps pour réfléchir, pour comprendre les problématiques, chercher des informations et formuler leurs opinions. De plus, les réunions physiques ont souvent des coûts cachés : fragmentation de la journée de travail, participants peu ou pas impliqués, etc.

Pour illustrer ses propos, Bertrand nous présente des exemples concrets avec la gestion du projet Cordova ou bien avec le gouvernement Suisse.

La prise de décision finale a ainsi souvent lieu plusieurs jours après le workshop, laissant ainsi un temps de réflexion et de maturation.

Il est également, possible d’avoir des réunions hybrides : elles seront préparées en asynchrone (l’ordre du jour sera précisé à l’avance, les éventuelles demandes de recherche effectuées au préalable, etc).

La vidéo est disponible ici.

Quickie – Améliorer la qualité du code source à l’aide de la Complexité Cognitive

Inutiles, les métriques de code ? En tous cas, la fameuse complexité cyclomatique a du plomb dans l’aile : Xavier Bourguignon de SonarSource expose un exemple qui montre clairement que sur deux codes avec la même complexité cyclomatique, l’un est acceptable, l’autre peu lisible. L’idée de SonarSource est alors d’introduire la complexité cognitive, qui prend en compte le niveau d’imbrication de la ligne de code qui augmenterait la complexité cyclomatique. Exemple : un « if » ajoute 1 à la « cyclo ». S’il est à l’intérieur d’un autre « if », on ajoute 2.

Ensuite, des techniques très classiques de refactoring sont données pour réduire cette métrique :

  • collapsing des if/else/if,
  • return dans les if sans else,
  • switch à la place d’une cascade de if/else,
  • utiliser le « multicatch » pour simplifier le traitement des exceptions,
  • dans un finally avec de nombreuse release de ressources, créer une fonction « releaseQuietly » pour tout remplacer,
  • lire le livre Clean Code de Robert C. Matin.

Si cette métrique est une bonne nouvelle pour le code Java, malgré le support officiel de Scala qui va bientôt arriver dans SonarSource, la programmation dans un style plus fonctionnel ne bénéficiera d’aucune analyse supplémentaire spécifique. Si ajouter une lambda ajoutera bien de la complexité, aucun autre critère n’aidera la « FP ». Pourtant, l’imbrication des paramètres « types » a autant d’importance que celle du code…

La vidéo de la conférence est disponible ici.

Architecture, Performance et Sécurité

Conférence – #RetourAuxSources : les cookies HTTP

Hubert Sablonnière

En partant des attributs de base des cookies, Hubert explique avec pédagogie les subtilités, limites et largesses de leur fonctionnement. On découvre alors un véritable jeu du chat et de la souris sécuritaire au travers de quelques démonstrations de failles (CSRF, XSS, etc.) et les contre-mesures désormais associées (mise en œuvre de la « Same Origin Policy », apparition des propriétés Secure, HttpOnly, SameSite, etc.).

Le ton est léger, le discours riche en enseignements. En bref, une conférence de référence pour quiconque voudrait (re)découvrir les problématiques associées aux cookies.

Conférence – DDD & Event Sourcing à la rescousse pour implémenter la RGPD ?

Guillaume Lours et Jérôme Avoustin

La RGPD entre en vigueur dans quelques semaines pour quiconque exerce une activité professionnelle sur le sol de l’UE ou traite des données de citoyens de l’UE.

Guillaume et Jérôme ont expliqué simplement les tenants et aboutissants d’un certain nombre de points que cette réglementation définit, notamment :

  • « Privacy by Design » : la protection des données personnelles doit faire partie intégrante du logiciel dès sa conception ;
  • consentement éclairé nécessaire pour traiter toutes données personnelles ;
  • conditions d’anonymisation et de pseudonymisation des données ;
  • obligation de déclaration des fuites de données constatées ;
  • sanctions financières importantes en cas de manquement.

Une fois les bases de la RGPD posées, un certain nombre de concepts liés au DDD sont vulgarisés pour permettre d’entrer dans le vif du sujet : comment l’Event Sourcing peut apporter une réponse intéressante, à défaut d’être clefs-en-main, aux problématiques de la RGPD. Guillaume et Jérôme exposent alors quelles étapes ils suivent actuellement pour transformer une application CRUD qui ne devrait pas l’être en une application basée sur les évènements. Chaque avantage de l’Event Sourcing vis-à-vis du CRUD est abordé, avec en toile de fond l’utilité vis-à-vis de la RGPD :

  • facilité de test ;
  • versionning d’aggrégats ;
  • débogage et reproductibilité améliorés ;
  • opérations de compensation pour implémenter les rollbacks ;
  • traçabilité gratis.

L’accent était mis sur la compréhension des mécanismes de base en prenant soin de ne pas apporter de vocabulaire parfois chargé en Fear Factor comme les « Bounded Context », les fonctions de décision, fonctions d’évolution, etc. J’ai trouvé cette approche parfaite pour vulgariser les principes exposés. On ressort de cette conférence avec l’envie d’implémenter de l’« Event Sourcing » pour en approfondir les concepts et une recette empirique pour transformer un mauvais CRUD.

La vidéo est disponible ici.

Quickie – Spectre et Meltdown, 15 min pour tout comprendre


Dans cette vulgarisation des exploits Meltdown et Spectre, Alexis Duque rappelle le fonctionnement des CPUs modernes avant d’expliquer le fonctionnement de ces deux attaques. Pour chacune, il donne également les moyens d’atténuation (mitigations).

Intéressante pour sa pédagogie, la présentation résume bien les « take away » des différents articles sortis sur le sujet :

  • Les CPUs modernes (depuis le Pentium Pro pour Intel) peuvent exécuter les instructions dans un ordre différent de celui prévu par le programme, et même d’essayer de deviner la prochaine instruction afin de commencer à l’exécuter plus tôt ; le tout afin d’optimiser le pipelining (le but étant de ne jamais laisser le pipeline se vider, afin de ne pas gâcher des cycles CPU).
  • Spectre/meltdown appartiennent à la catégorie des attaques par canal auxiliaire (side channel attack) : un canal auxiliaire est un moyen utilisé par un attaquant pour transmettre une information via un moyen qui n’a pas été prévu pour cela au départ ; ici c’est le cache CPU.
  • Meltdown utilise le fait que le CPU peut avoir déjà exécuté un instruction avant de contrôler si elle est autorisée. Évidemment, si elle est finalement interdite, le CPU remet les registres dans l’état précédent et abandonne l’instruction, mais c’est trop tard pour le cache qui, par effet de bord, contient la valeur interdite. L’attaquant, qui n’a pas le droit d’accéder à cette valeur, va créer dans son code un tableau rempli des valeurs possibles pour le résultat à l’appel interdit. Il va ensuite parcourir le tableau en mesurant les temps d’accès. Si une valeur du tableau est récupérée plus rapidement que les autres, c’est qu’elle est déjà dans le cache, donc c’est la valeur retournée par la fonction inderdite !
  • Spectre utilise la prédiction de branche. L’attaquant utilise une simple condition pour exécuter plusieurs fois la même branche de son programme. Le CPU apprend donc à exécuter en avance les instructions de cette branche. Puis l’attaquant change la condition: le CPU va faire une erreur de prédiction, car il a déjà exécuté la banche « habituelle » et doit désormais exécuter l’autre. Comme dans Meltdown, on dispose de moyens pour mesurer l’effet produit sur le cache.
  • Ces attaques permettent de lire l’intégralité de la mémoire du noyau.
  • Les moyens d’atténuation sont logiciels.
  • Les chercheurs commencent juste à s’intéresser à ce type d’attaque « hardware ». D’autres pourraient sortir et forcer les fondeurs à trouver une nouvelle manière de concevoir des CPU.

En revanche, si vous avez déjà lu des articles sur le sujet, vous n’apprendrez rien. Les 15 minutes d’un quickie ne sont pas suffisantes pour parler de toutes les variantes et de donner tous les détails permettant de comprendre en profondeur.

La vidéo est disponible ici.

Conférence – Monitor Kafka Like a Pro

Survoltée, Gwen Shapira présente avec Xavier Léauté le sujet du monitoring Kafka : quelles métriques suivre ? Pourquoi ? Que signifient-elles ? Quels problèmes puis-je résoudre ? La présentation était dense et fournie en REX clients types, afin d’illustrer un problème typique et les métriques qu’il faut regarder pour en déterminer la cause.

Elle a illustré ses propos par des retours d’expérience avec des clients qui se retrouvent au pied du mur face à des dysfonctionnements d’un cluster Kafka (broker qui ne redémarre plus ou qui n’arrive plus à rejoindre le cluster, etc).

Le plus intéressant était certainement le pragmatisme des explications, qui donnaient en filigrane une méthodologie pour savoir comment trouver la cause d’un problème sur un cluster Kafka avec applications clientes. Les speakers ont bien insisté sur le fait que l’impressionnant dictionnaire de métriques sert davantage à anticiper et à remettre en fonctionnement rapidement, plutôt que simplement au post-mortem.

Les outils d’aide à l’analyse étaient l’autre take away ; passé le flash-publicité sur Confluent Control Center, les speakers nous lâchent gceasy.io pour décoder des logs du garbage collector, Flamescope pour le temps passé par fonction avec toute la pile d’appel, des options extras de JVM comme « PreserveFramePointer » pour faciliter l’analyse des dumps, etc.

Les recommandations données ciblaient aussi bien les brokers Kafka eux-mêmes que l’utilisation des API clients de consommation/production. Gwen a également donné des take away pour se lancer dans les métriques Kafka, aussi bien pour des novices que des experts.

Voici un condensé des métriques à observer sur un cluster :

  • les traditionnels CPU/RAM/disk IO/net IO pour toutes les machines,
  • les métriques JMX pour toutes JVM,
  • latence de requêtes sur les applications clients,
  • les métriques spécifiques aux brokers,
  • les métriques spécifiques aux topics,
  • lag relatif par partition (consumer offset lag),
  • offset de fin de chaque topic/partition.

En conclusion, si vous avez du Kafka en prod ou même si vous envisagez d’en installer ou d’en utiliser, voici une conférence indispensable à voir et à revoir.

La vidéo est disponible ici.

Conférence – gRPC, échanges à haute fréquence !

David Caramelo et Carles Sistare nous racontent leur expérience sur Ogury, une plateforme de data mobile engrangeant une grande quantité de données basée sur une architecture micro-services.

Ils nous expliquent que cette architecture, qui prend de plus en plus d’ampleur dans les architectures modernes amène avec lui une problématique : comment limiter l’impact de la latence des requêtes HTTP lors des différents appels aux services ?

Leur objectif est de trouver un moyen d’optimiser au maximum ces requêtes afin d’améliorer les temps de réponse, qui même si unitairement ne représente pas une grande quantité de temps perdus, cela devient un goulot d’étranglement bien visible dès lors qu’une grande quantité de requêtes est effectuée, ce qui arrive rapidement dans le cas de la collecte de data.

La question s’est donc posée : doit-on conserver le modèle REST communément utilisé ou bien trouver une alternative ?

Les problèmes principaux de REST sont :

  • Il n’est pas possible de réaliser un flux en streaming de données, chaque requête est synchrone.
  • REST ne représente pas un contrat d’API formel et la moindre modification peut être compliquée à propager.
  • Les payloads à fournir et les requêtes TCP à ouvrir et fermer font qu’il est gourmand en bande passante.

Plusieurs solutions ont alors été étudiées :

  • Websocket :
    • + : Il est possible de maintenir un flux de données.
    • – : Il est compliqué de faire du healthcheck et est plutôt conçu pour du web.

  • Swagger :
    • + : On peut s’en servir pour générer du code et ainsi simplifier la propagation des modifications d’API et avoir une documentation constamment à jour.
    • – : C’est un modèle REST.
  • Apache Thrift :
    • + : Il utilise le RPC et permet la génération de code pour la maintenance.
    • – : La communauté et le suivi est beaucoup trop faible.

Après avoir étudié ces alternatives, les speakers ont décidé de s’intéresser à gRPC.

gRPC, framework RPC, travaille sur l’optimisation des 3 premières couches du modèle OSI, c’est-à-dire la couche Application, Présentation et Session.

  • Pour la couche Application, gRPC utilise par défaut HTTP/2, afin de profiter de sa capacité à faire du multiplexage de requête.

  • Pour la couche Présentation, il utilise un framework nommé Protobuf, qui représente la plus grosse optimisation en réduisant au maximum les payload envoyés lors des requêtes.

  • Pour la couche Session, il utilise le protocole RCP qui donne un large choix de méthode de communication qui va de la requête synchrone à une communication full duplex.

Protobuf permet avant chaque requête de sérialiser les payloads avant d’envoyer l’information sur le réseau grâce à un fichier de configuration commun partagé entre le client et le serveur, qui permettra à ce dernier de dé-sérialiser le payload et retrouver l’information qui a été réceptionnée, cette sérialisation par exemple permet de transformer un payload de 17 octets à un payload de seulement 3 octets, ce qui n’est pas négligeable quand on traite plusieurs millions de requêtes.

La communication full duplex grâce à RCP ainsi que l’utilisation de HTTP/2 et de Protobuf leur a permis de réduire de 50% les temps de réponse nécessaire à la réalisation des appels à leurs différents services.

La vidéo est disponible ici.

Big Data, Machine Learning, IA & Analytics

Conférence – Génération de code, moteur Catalyst… Démystifions Apache Spark !

Lors de cette conférence, Marc Alonso et Adrien Besnard nous expliquent comment Spark, le framework de calcul distribué, procède pour transformer une requête SQL en code généré.

La présentation commence par des rappels de base sur Spark :

  • le RDD (Resilient Distributed Dataset) est l’équivalent d’un itérateur distribué ;
  • les DataFrame et Dataset offrent un DSL de manipulation de données distribuées et bénéficient des optimisations du moteur d’exécution SQL de Spark.

Puis Tungsten est évoqué : il s’agit du nom du projet visant à améliorer drastiquement les performances du moteur d’exécution de Spark en termes d’utilisation mémoire et processeur. L’un des grands axes de ce projet est la génération de code à la volée.

S’ensuit une démonstration de génération de code avec un exemple simplifié :

  • définition d’une chaine de caractères contenant une définition d’une classe ;
  • utilisation de URLClassLoader ;
  • instanciation par réflexion (newinstance) ;
  • explicitation de la solution pour faire le pont entre le code compilé et généré : l’utilisation d’interfaces (compilées) dans le code généré.

Enfin, il est présenté comment Spark exécute une requête SQL. Schématiquement, le moteur Catalyst passe par les transformations suivantes :

Requête SQLSequence[Token]AST (Abstract Syntax Tree) → LP (Logical Plan) → OLP (Optimized Logical Plan) → PP (Physical Plan) → Iterator[Row] (RDD)

Les grandes étapes sont les suivantes :

  • analyse lexicale : permet de passer de la requête SQL brute à une Sequence[Token], où un Token est un mot-clé plus une ou des valeurs ;
  • analyse sémantique : permet d’obtenir l’AST ;
  • calcul du plan d’exécution logique : résolution des attributs et des types de données ;
  • calcul du plan d’exécution logique optimisé : application de règles mathématiques prouvées. Exemple simple : appliquer un filtre avant une jointure permet de la rendre moins coûteuse ;
  • plan physique : plusieurs plans physiques (avec les opérateurs de Spark) sont calculés et celui avec le meilleur coût est sélectionné ;
  • génération de code.

Marc et Adrien concluent la présentation en synthétisant : la génération de code permet d’améliorer les performances en profitant de divers éléments (JIT, pipelining, etc.) mais n’est possible que sur certains opérateurs, avec comme exception notable les UDF (User Defined Functions). Pour ces dernières, ils recommandent de toujours privilégier les fonctions déjà fournies par Spark lorsque c’est possible.

Bon visionnage.

Conférence – Helpdesk on steroids : How a chatbot and 1 person support 10,000 daily users

Les deux speakers de chez Pictarine ont présenté les étapes de la création de leur chatbot. Pictarine est une application qui permet de rassembler les photos de différents réseaux et de créer des albums collaboratifs. La plupart de ses utilisateurs se trouvent aux USA, et vu le décalage horaire, cela posait des problèmes pour le support. C’est là où l’idée de chatbot est apparue.

Les développeurs ont créé l’outil en plusieurs phases. Ils ont utilisé le framework Dialogflow (anciennement api.ai), de Google. Dans la première phase, ils ont implémenté le fake chat, pour récolter le maximum de questions possibles (et oui, l’interlocuteur ne répondait jamais). Vient ensuite une étape manuelle de catégorisation des questions et de création des réponses associées. Dès qu’ils ont réussi à récolter 200 intents (la correspondance entre la question de l’utilisateur et la réponse du système) la première version du chatbot a été mise en production. Le travail de récolte et de catégorisation continuait jusqu’a 60 % de réponses exactes. Les développements suivants concernaient l’integration du contexte (une fonctionnalité fournie par Dialogflow) pour améliorer l’experience utilisateur. Ainsi le bot a commencé à suivre le sujet tout au long de la conversation (ex. : « quel est le format de l’image ? -> quel est son format ? »).

Aujourd’hui le bot traite de nombreux tickets – il est même capable de les fermer tout seul – et la seule personne du support passe maximum 2 h par jour pour compléter les réponses du chatbot ou bien pour gérer les sujets comme le remboursement qui n’entre pas dans les sujets des intents. L’historique des échanges avec les clients est sauvegardé ce qui rend le service plus efficace et une relation avec le client réussie.

Mobile, IoT

Conférence – La sécurité dans l’IoT : difficultés, failles et contre-mesures

Alexis Duque, Doctorant à l’INSA de Lyon, nous propose lors de cette conférence un tour d’horizon sur l’état de l’IoT dans le monde. Les objets connectés se multiplient à toute vitesse et les problèmes de sécurité qu’ils rencontrent, en faisant un récapitulatif des 10 causes principales de la faible sécurité de ces appareils, issue principalement des fabricants qui sous-estiment la nécessité d’une haute sécurité pour ces objets connectés et la méconnaissance des utilisateurs sur le sujet.

Gartner estime que d’ici 2020, il y aura plus de 20 milliards d’objets connectés en circulation dans le monde. Autant d’appareils qui peuvent potentiellement être piratés et utilisés à des fins malveillantes, telles que l’attaque via le botnet Mirai qui a permis de réaliser des attaques de type DDoS en septembre et octobre 2016 contre le journaliste Brian Krebs ainsi que la société Dyn mettant à mal plusieurs sociétés pendant plusieurs heures (Ebay, Twitter, Netflix, Github et PayPal notamment) en réalisant des attaques pouvant aller jusqu’à 623 Go par seconde. Tout cela grâce à des objets connectés accessibles depuis internet dont les utilisateurs n’avaient pas pris la peine de changer le mot de passe par défaut ou de n’utiliser que des mots de passe faibles.

Cela amène le speaker à nous faire un récapitulatif des 10 principales causes des problèmes de sécurité.

  1. Les mots de passe faibles : les mots de passe par défaut ou bien des mots de passe beaucoup trop simples du genre azerty123.

  2. La transmission des identifiants trop faible : envoie des mots passe en clair sur le réseau, des id de sessions exposées dans les URL et toute autre méthode permettant la subtilisation des mots de passe

  3. Les services réseau non sécurisés : les ports ouverts inutilement sur une machine, un accès wifi inutile.

  4. Les problèmes de chiffrement : c’est le cas des réfrigérateurs connecté Samsung, dont les données de connexion aux services Google utilisés n’étaient pas suffisamment chiffrés et ont pu être subtilisés.
  5. Les problèmes de confidentialité : c’est le cas des attaques de type Man in the Middle, où l’attaquant se place entre l’utilisateur et l’objet (ou serveur) afin de subtiliser les identifiants lors du transit de l’information sur le réseau.

  6. L’insécurité des interfaces web : une interface administration d’un outil qui est accessible par internet et qui serait sujet à des attaques de type XSS.
  7. L’insécurité des interfaces mobiles.
  8. Les problèmes de configuration : les accès par défaut sont par défaut root ou l’utilisateur à plus de droits que ce qui est nécessaire.

  9. Les problèmes logiciels ou firmwares : Les absences de mises à jour de sécurité qui exposent les objets à des failles qui sont révélées au public.

  10. La faible sécurité physique : un accès physique à l’objet qui permet d’attaquer via les ports USB ou autre interface (JTAG, Bus Pirate, etc).

Un des problèmes avec les objets connectés est la faible puissance de calcul de ces derniers, ce qui limite aussi grandement leur capacité à utiliser des moyens de chiffrement avancés qui requièrent souvent une capacité de calcul non négligeable.

Alexis Duque nous explique aussi les soucis liés à la technologie Bluetooth v4, qui présente une facilité de piratage déconcertante à cause de son faible niveau de sécurité, bien que corrigé avec la v4.2 qui utilise un algorithme nommé ECDH pour Elliptic Curves Diffie Hellman. Malheureusement, il semblerait que 80% des appareils n’appliquent pas cette implémentation. De plus, aucune méthode d’appairage ne protège des attaques de type MITM (Man in The Middle).

La dernière version de la technologie Bluetooth (la V5) appelée aussi BLE pour Bluetooth Low Energy, n’améliore pas spécialement la sécurité introduite par la 4.2, mais améliore simplement la quantité d’énergie nécessaire à son bon fonctionnement ainsi que sa portée.

La dernière partie de la conférence se concentre sur les bonnes pratiques de la sécurité dans l’IoT qui sont :

  • La sécurité par le design : mettre au cœur de la conception les notions de sécurité.
  • Réaliser une analyse des risques que peut subir un objet (langage, design, protocoles).
  • Concevoir les façons dont un appareil pourra se mettre à jour, notamment pour les correctifs de sécurité.

  • Chiffrer toutes les communications et les méthodes d’authentification avec des méthodes de cryptographie standards.

  • Ne pas partager les clés de chiffrement entre différents appareils.

  • Restreindre les accès, que ce soit pour l’utilisateur connecté ou bien le matériel.
  • Assurer la confidentialité des données qui sont utilisées.

Néanmoins, le speaker n’est pas complètement alarmiste sur les objets connectés et conclut avec le futur des objets connectés, tels que le lightweight Crypto for IoT (LWC), une méthode de chiffrement suffisamment sécurisée et ne demandant pas de grandes ressources de calcul qui simplifiera le chiffrement des données et des communications, l’amélioration globale de la sécurité (que ce soit d’un point de vue logiciel ou matériel), l’arrivée des concepts de secure boot, déjà implémenté dans les smartphones ainsi que la sensibilisation générale des différents acteurs sur ce domaine.

Découvrez la vidéo de la conférence.

Langages alternatifs

Conférence – Le code d’aujourd’hui est-il libéré du style impératif à la von Neumann

Thomas Jaskula nous présente son analyse de l’évolution des style de langage : Historiquement, le style de code impératif a été choisi pour répondre aux contraintes techniques des processeurs construit dans les années 50. Or, en 77, John Backus publia un papier où il critique le style impératif imaginé par von Neumann, et propose de nouvelles pistes de langage et d’architecture.

Malgré la percée dans langage fonctionnels et orientés objets, fort est de constater que notre code reste dans les schémas de pensées de von Neuman.

Les raisons sont multiples : les ingénieurs ne sont pas formés à de nouveaux mode de pensées, les architectures existantes sont trop lourdes pour être migrées en d’autre styles, et les langages alternatifs manquent de support marketing pour être promus.

La vidéo est disponible ici.

Tools-in-Action – un Loof ça va, de Loof bonjour les dégâts 😜

Pour cette édition de Devoxx, Nicolas De Loof est venu en famille avec son fils Thomas pour nous parler de l’apprentissage du code chez les jeunes générations et de transmission entre un père et son fils. Thomas 13 ans, déjà très à l’aise devant une salle quasi comble, nous a présenté ses différentes expérimentations du code qu’elles soient poussées par son père, rencontrées à l’école ou liées à ses propres initiatives.

Thomas a commencé par présenté Scratch, logiciel de programmation par bloc qui permet d’animer un avatar très facilement. Il nous a également parlé de son expérience avec les Lego Mindstorm, qui ressemble à du Scratch mais en vrai avec un robot que l’on peut programmer. Nicolas nous confie que les ambitions de son fils dépasse parfois ses capacités ce qui le pousse à expérimenter mais qui peut aussi parfois être frustrant lorsque l’on arrive pas faire ce que l’on veut. Thomas s’est ensuite essayé à la programmation en C avec un Raspberry Pi avec pour objectif de faire clignoter les décorations de Noël. Le passage d’un langage de programmation par bloc au C n’a pas été chose facile, malgré les conseils de son père (« Tu n’as qu’à utiliser un IDE comme Eclipse ! »), cela ressemblait finalement davantage à une punition !

Nicolas a alors décidé de laisser son fils expérimenter par lui même et c’est ce qu’il fit pour offrir à son père un cadeau d’anniversaire mémorable ! Thomas a en effet développé une aventure complète dans MineCraft en apprenant grâce à des tutos sur Youtube. Il s’est approprié les concepts de base de la programmation (comme une boucle ou un wait) avec des blocs d’actions. Nicolas ne pouvait pas espérer plus beau cadeau 🙂.

Bien qu’un peu en décalage par rapport aux autres présentations de la journée, j’ai adoré ce retour d’expérience et je vous invite vivement à voir la vidéo une fois qu’elle sera disponible.

Découvrez la vidéo.

 

 

 

KubeCon + CloudNativeCon EU 2018 – Day 1

$
0
0

Je vous présentais hier le « Day 0 » de cette KubeCon + CloudNativeCon EU 2018, c’est donc désormais logiquement le tour du Day 1 !

J’ai découvert un énorme problème lors de ce premier jour de KubeCon + CloudNativeCon : il y a tellement de talks passionnants que l’on a en permanence l’impression de faire un sacrifice. Avec une quinzaine de présentations en parallèle, même après un premier tri avec le critère « talks très intéressants et pertinents pour moi« , on se retrouve systématiquement avec 6-7 talks parmi lesquels choisir. Osons l’admettre, il y a bien pire comme problématique et ce n’est que partie remise pour les vidéos qui seront disponibles après l’évènement !

Allons donc aujourd’hui encore à l’essentiel : des rapides résumés de ce que j’ai humblement trouvé pertinent, et des liens pour ceux qui voudraient approfondir.

Commençons ainsi par le point le plus logique : les Keynotes d’ouverture !

Keynotes d’ouverture

Dan Kohn ouvre le bal en tant que directeur exécutif de la CNCF, rappelant que l’intégration continue est la base et que Kubernetes sera le cadet de vos soucis sans une CI digne de ce nom.

2 nombres à retenir de cette présentation :

Quelques rappels de liens susceptible de vous intéresser :

Keynote: CNCF Project Update

Vient ensuite un tour d’horizon des projets de la CNCF et de leurs évolutions récentes, orchestré d’une main de maître par Liz Rice, avec un focus tout particulier sur SPIFFE/SPIRE, un standard ainsi qu’un framework de gestion d’identité Cloud Native, ainsi que NATS, un système de messaging.

 

 

Surprise de cette keynote : Kelsey Hightower se joint au rendez-vous, alors qu’il avait annoncé plus tôt dans l’année avoir annulé tous ses engagements en tant que speaker pour l’année. En tous cas, sa performance sur scène est magistrale : si un jour vous avez l’occasion de le voir en conférence, ne passez pas à côté ! Lors de cette brève intervention, il nous rappelle via son désormais célèbre projet No Code que le meilleur moyen de créer des applications sécurisées et totalement fiables est de ne pas écrire de code et de ne rien déployer nulle part.

 

Keynote: CNCF 20-20 Vision – Alexis Richardson

Pour conclure les keynotes de la matinée, Alexis Richardson présente la vision de la CNCF pour le futur. Un futur où l’on a dépassé la vision « run my container » pour aller jusqu’à « run my code », qui est en soi le cœur de toute le mouvement Functions as a Service. Mais également un futur où l’on continue de construire ensemble en tant qu’industrie, dans une optique centrée sur les utilisateurs des technologies que nous créons. Une vision qui fait d’ailleurs écho aux valeurs de Xebia, amplement représentées ici.

Présentations

Vous résumer en détail chaque talk auquel j’ai pu assister serait superflu : les slides sont disponibles en ligne et les vidéos le seront prochainement. Allons directement à ce qui m’a marqué. En voici donc 2 très instructifs !

Continuously Deliver your Kubernetes Infrastructure – Mikkel Larsen, Zalando SE

Tout le monde parle de Continuous Deployment. Kubernetes est un des facteurs facilitant cette approche, comme les autres orchestrateurs de manière générale. Mais ceci ne concerne que les applications qui vont venir se poser sur ces orchestrateurs.

Qu’en est-il des clusters Kubernetes eux-mêmes ? Comment les gérer proprement, de manière efficace et moderne, afin de gérer la création et la mise à jour de clusters comme l’on gère nos applications ?

C’est le challenge relevé par Zalando, avec un retour très intéressant de leur migration vers Kubernetes sur AWS.

Les points à retenir :

  • Faisant écho à la keynote d’ouverture de Dan Kohn sur l’importance de la CI : il faut bien évidemment tester les clusters Kubernetes automatiquement afin de s’assurer de leur bon fonctionnement. Et quel heureux hasard : Kubernetes lui-même possède ses tests end-to-end et il n’y a donc « plus qu’à » lancer ceux-ci pour valider le fonctionnement d’un cluster.
  • Le rolling upgrade des nœuds Kubernetes pose vite le problème du draining des nœuds existants : quand supprimer ceux-ci ? Au final, ils se contentent de définir un timeout et simplement tuer les nœuds même s’il n’ont officiellement pas fini de drainer leurs connexions.
  • Ne pas seulement tester la nouvelle version lors d’une upgrade ! Il est indispensable de tester l’upgrade en elle-même : créer un cluster en version N puis le mettre à jour vers la version N+1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Quelques projets open-source en lien avec cette présentation :

 

From Data Centers to Cloud Native – Dave Zolotusky & James Wen, Spotify

Dans la room « Case Studies » présentant un nombre impressionnant de retours d’expérience pertinents, Spotify a présenté leur migration de leurs propres datacenters vers le cloud, puis finalement vers une approche plus « Cloud Native ».

 

Leur migration vers Kubernetes se résume notamment en 6 étapes graduelles :

  1. 1 cluster avec 1 service, live pendant 1 heure
  2. 3 services sur un cluster partagé
  3. Alpha : services volontaires sur un cluster partagé
  4. 2 services à fort traffic sur un cluster partagé
  5. Beta : self-service, migration des services par les équipes responsables elles-même sans interaction avec l’équipe d’infrastructure
  6. « Golden Path » : manière documentée de construire un service sur cette infrastructure applicable par n’importe quel service de Spotify

Une approche qui montre qu’il est possible de faire évoluer tout « legacy », avec bien sûr à chaque étape de nouvelles contraintes, fonctionnalités et plus d’automatisation !

 

 

Mentions honorables

Parmi les présentations auxquelles j’ai pu assister, 2 valent également la peine d’être évoquées brièvement :

Keynotes de clôture de la journée

Enfin, pour conclure cette journée comme elle a commencé, un lot de keynotes tout aussi exceptionnel que le matin s’est tenu devant les 4100 personnes de cette KubeCon + CloudNativeCon EU 2018.

Olivier Beattie ouvre la marche courageusement avec un retour d’expérience sur un récent incident de production lié à Kubernetes et Linkerd à Monzo. Un retour très instructif et qui fait preuve d’une ouverture exceptionnelle, à la fois en tant qu’organisation que techniquement et humainement.

Je vous passe les détails techniques mais vous invite très fortement à les découvrir dans le post-mortem publié après l’incident.

gVisor

Enfin, une keynote à annoncé officiellement gVisor, une solution à mi-chemin entre les conteneurs et les machines virtuelles visant à fournir le même isolation que ces dernières avec l’outillage et les avantages des conteneurs.

gVisor a été open-sourcé le matin même par Google et continuera sans aucun doute d’être évoqué durant le reste de cette KubeCon + CloudNativeCon !

Conclusion

Cet article ne fait qu’effleurer la surface des choses évoquées durant cette journée. Pour en savoir plus, n’hésitez pas à vous diriger vers les slides, les vidéos une fois celles-ci en ligne, ou à laisser des commentaires sur cet article.

À demain pour de nouvelles aventures à cette KubeCon + CloudNativeCon EU 2018 !

 

 

 

Un vendredi à Devoxx, découvrez le retours des Xebians !

$
0
0

Pour cette nouvelle édition de Devoxx France, les Xebians étaient présents. Ils vous proposent à travers cet article de découvrir leur avis sur certaines des conférences présentées.

Découvrez d’ores et déjà leurs retours sur les conférences du jeudi.

 

Keynote

French Road

Pendant la keynote, Emmanuel Pesenti nous a présenté une initiative citoyenne, « French Road », dont il est Président du conseil d’administration. Il s’agit d’un projet de construction d’une nation numérique européenne. L’Europe et donc la France ont pris beaucoup de retard dans le développement numérique. Le projet consiste à créer une identité numérique de chaque citoyen qui se matérialise par une carte à puce qui leur permettraient d’accéder aux divers systèmes publics : voter, gérer les paiements des impôts, des dossiers médicaux, inscrire les enfants à l’école et autres.

Emmanuel Pesenti liste les nombreux bénéfices :

  • Simplification de la vie de 500 millions d’usagers européens.
  • Concentration des efforts sur la création de valeur ajoutée humaine et de plaisir.
  • Accélération de la création de valeur.
  • Baisse des coûts de gestion administrative liés aux redondances.
  • Endiguement du mauvais usage de l’argent public.
  • Plus de citoyens aux urnes avec le e-Vote possible.
  • Le modèle européen capable d’inverser le rapport de force avec les GAFA et BATX.
  • Ajout d’un degré de liberté dans l’orientation des politiques publiques.

Le projet fait aussi face aux grands défis, comme la centralisation et la sécurisation de nombreuses données. Plus d’information sur le site officiel du projet French Road.

La vidéo est disponible ici.

L’ordinateur quantique

David Rousset, «Program manager» chez Microsoft a proposé durant ce talk une introduction à l’informatique quantique.
Vous en entendrez surement parler de plus en plus. Microsoft a d’ailleurs commencé à former ses développeurs à la programmation quantique.
Mais pourquoi l’informatique quantique ? Pour mieux le comprendre il faut revenir à la loi de Moore. Cette loi selon laquelle le nombre de transistors augmenterait de façon exponentielle à intervalle de temps régulier. Une loi qui se confirme depuis son énoncé en 1965 par Gordon Moore.
En effet, en 1971, un transistor faisait 10 microns de large soit
le centième d’un millimètre. En fin 2017, nous avons atteint la taille de 10 nanomètres pour un transistor et on compte désormais 10 milliards de transistors sur un seul microprocesseur.
Le problème, c’est que cette loi atteint peut-être ses limites car il deviendra difficile de fabriquer des transistors plus petits. Car en effet, en dessous de 10 nanomètres, les lois de la physique classique changent, laissant place aux lois de la physique quantique. Plusieurs s’accordent donc sur le fait que l’ordinateur quantique pourrait être la solution à ce problème.
 
Le calculateur quantique repose sur 4 principes fondamentaux :
  • Principe de superposition : un système de type entrée-sortie est linéaire.
  • Une interprétation probabiliste.
  • La dualité onde-corpuscule :
    principe selon lequel tous les objets physiques peuvent présenter parfois des propriétés d’ondes
    et parfois des propriétés de corpuscules.
  • L’état quantique :
    ce qui quantifie ce que l’on peut savoir d’un système quantique.
  • L’effet tunnel : c‘est un effet purement quantique, qui ne peut pas s’expliquer par la mécanique classique.
La physique quantique nous ouvre donc les portes d’un nouveau monde, élargissant ainsi le champs des possibles.
Vous pouvez dès aujourd’hui vous essayer à la programmation quantique avec quelques liens pour vous aider à démarrer :
  • Microsoft Q# – Quantum development Kit
  • IBM Quantum experience
  • Google Quantum Computing Playground

Pour conclure, David nous a initié tout en douceur et de façon claire au monde de l’informatique quantique tout en nous faisant prendre conscience de son importance dans un futur pas si lointain.

Découvrez vite la vidéo de sa conférence.

Software Heritage: pourquoi et comment préserver le patrimoine logiciel de l’humanité

Roberto Di Cosmo, docteur en informatique issu de l’école normale supérieure de Pise, nous parle de son association Software Heritage, une association à but non lucratif qui a pour objectif de récolter, classer et archiver la totalité des codes sources libres présents sur internet.

Il nous rappelle que le code, au-delà du fait d’être exécuté par une machine pour être une interface entre l’utilisateur et un document numérique, représente une forme de littérature du XXIe siècle.

Un code source, avant d’être exécuté doit être rédigé pour être lu.

Grâce au mouvement du logiciel libre, les sources ne sont plus jalousement stockées dans les coffres forts des entreprises et détruits quand il devient inutile, mais est disponible et partagé sur Internet.
Di Cosmo donne en exemple l’algorithme permettant le calcul de la racine carrée inverse rapide, qui est communément attribué à John Carmack le créateur de Doom, bien que ce dernier dément et attribue la paternité de ce code à Terje Mathisen

Cet exemple illustre parfaitement le principe d’un code source qui a évité de sombrer dans l’oubli grâce au partage et à la mise en ligne sous licence open source.

Il donne aussi l’exemple du programme ayant permis le lancement de la mission Apollo 11 auquel Margareth Hamilton a contribué. Ce sont pas moins de 60.000 lignes de codes qui ont été retrouvées, numérisées et qui sont désormais disponibles à tous, car disponible sur Github.
Le dernier exemple est le noyau Linux, qui est libre, et qui représente approximativement 20 millions de lignes de code.

Le code source contient la connaissance

Cependant, le problème avec le code source, c’est qu’il n’existe aucun catalogue central, tout le monde utilise des gestions de sources différentes (sourceforge, google code, gitlab, gitorious, github, bitbucket. etc.). Actuellement le meilleur moyen de trouver un code source, c’est de demander à un moteur de recherche générique (Google, Qwant)
De plus, une donnée numérique est une chose extrêmement fragile, une clé USB perdue, un accident dans un datacenter ou une attaque suffit à entrainer la destruction de données, ou bien même la fermeture pure et simple d’un outil par son propriétaire, tels que gitorious ou google code, qui conservaient respectivement 100.000 et 1.500.000 repos à leur fermeture.

Le speaker part d’un constat simple : il n’existe pas d’infrastructure de recherche pour récolter et analyser les codes sources existants.

La mission de l’association Software Heritage est le suivant : collecter, préserver et partager le code source de tous les logiciels existant, afin d’améliorer les codes futurs.

À l’heure actuelle, l’association a récupéré 80 millions de projets, qui représentent 4 milliards de fichiers pour 1 milliard de commits.

Pour terminer, il nous explique leur façon de fonctionner : ils réalisent pour chaque plateforme de gestion de code source, un adaptateur différent afin de communiquer avec et récolter les projets et ils réalisent un traitement où ils réalisent un graphe afin de réaliser l’historique du code et rationaliser le tout afin de ne pas avoir besoin d’avoir la bonne version de git ou de mercurial. Leur objectif est la conservation à long terme et l’absence de dépendance à une version d’un logiciel qui évolue dans le temps.

Il termine cette présentation avec quelques chiffres : Software Heritage représente 150To de données brutes ainsi que 10 To de graphes.

Cette présentation a permis de mettre en lumière ce point bien souvent ignoré qui est la transmission de l’histoire du code, histoire à laquelle nous contribuons tous à plus ou moins grande échelle.

La vidéo est maintenant disponible.

Web, JS, HTML5 et UX

Quickie – Gatsby, le magnifique générateur de site statique !

Par Steve Alves

Devoxx n’est pas juste une conférence dédiée à l’écosystème des applications ou sites dynamiques mais elle propose aussi des conférences sur les sites statiques ! Mais qu’est-ce qu’un site statique ? Il s’agit d’un site n’ayant pas de backend, c’est-à-dire n’ayant pas de contenu “dynamique”, comme une page de login par exemple. Ce type de site se prête bien aux blogs, à la documentation ou à un site “vitrine” d’une entreprise. L’offre est éclectique en la matière et s’est stabilisée autour de la JAM stack. JAM se veut l’acronyme de : Javascript – API – Markdown. Ce n’est pas une stack comme serait la MEAN stack par exemple mais plus un ensemble de bonnes pratiques permettant de générer des sites statiques qui se veulent :

  • performants : les pages sont générées côté serveur (Server-Side Rendering),
  • sécurisés,
  • scalables.

Ainsi, Florent le Gall présentait un nouvel arrivant dans ce domaine: Gatsby. Ce générateur repose sur la stack suivante : React – GraphQL – N’importe-quelle-source-de-contenus-comme-un-CMS-ou-Markdown qui se veut dans l’air du temps.

Le speaker est ensuite entré un peu dans le détail d’utilisation du framework via du live coding. Nous avons pu voir que Gatsby reposait sous un système de Page et de Templates prenant la forme de composants React.

La présentation fut rafraîchissante. Même si le speaker n’a fait qu’effleurer la surface du fait du type de présentation (un quickie), cette dernière a été suffisamment bien amenée et construite pour donner envie d’essayer Gatsby.

Découvrez la vidéo ici.

Conférence – NodeJS: 5 bonnes raisons pour lesquelles vous devriez y jeter un oeil (même si vous êtes un dév Java)

La conférence animée par Alexandre Victoor et Thierry Abaléa, développeurs chez Fluo, a eu non seulement pour but de présenter la plateforme NodeJS à ceux qui ne la connaissent pas encore, mais aussi, et surtout de convaincre les développeurs Java qui ont souvent une mauvaise image de Javascript de s’intéresser à cette plate-forme.
Pour atteindre ce but, les speakers vont présenter, ce qui pour eux sont les 5 principales raisons pour lesquels, tout le monde devrait s’interesser à NodeJS :

1- Simplicité

Une fois que les bases du langage JavaScript sont comprises, la comprehension de NodeJS ne pose pas de grands problèmes. Par exemple, pour exécuter un fichier : une simple commande « node  » suffit. Le système de modules de NodeJS est lui aussi très simple et les modules de base ont été conçus pour être minimaux.
Ils ont ensuite insisté sur ce qui est peut-être la seule complexité de NodeJS : le fait que la plupart des opérations se fassent de manière asynchrone. Il s’agit en fait de la motivation principale du developpement de NodeJS : il a en effet été conçu pour être la solution la plus simple permettant à ce qu’aucune entrée/sortie ne soit bloquante, et permettre ainsi des applications hautement performantes. Sous le capot, NodeJS repose donc principalement sur la combinaison du moteur V8 pour éxecuter rapidement du Javascript, et la bibliothèque libuv qui permet d’implementer les opérations asynchrones.

2 – Légereté

Autre grand avantage de NodeJS est sa lègereté. Son empreinte mémoire est faible, et il est rapide à démarrer. Il est aussi basé sur un seul thread. Ce qui peut être problématique dans certains cas d’usage, car on veut parfois maximiser l’usage des CPUs. Mais heureusement NodeJS possede les modules child_process et cluster qui permettent tout de même de faire des programmes multi-threads, même si ce sont en réalité des programmes multi-processus.

3 – Le JS moderne

C’est peut-être le point le plus critiqué par les développeurs back : le langage JavaScript, lui-même. Ce langage est la souvent la cible de nombreuses moqueries : il est non-typé, il a des conditions d’égalité confuses([] == 0, 0 == « 0 », mais [] != « 0 »), oblige souvent à coder salement, etc. Mais, ces dernières années, JavaScript s’est beaucoup amélioré : les dernières normes de JavaScript ES6 et ES2018 on apporté de nombreuses fonctionnalités pour coder proprement.
Mieux : de nouvelles solutions permettent de typer JavaScript. La première est Flow de Facebook, qui est une sorte de type-checker de Javascript : il analyse le code afin de découvrir des bugs en inférant les types des différentes variables de Javascript.
La seconde est TypeScript qui est carrément une extension de Javascript permettant au développeur de typer le code Javascript. Il lui ajoute aussi de nombreuses fonctionalités : des interfaces, des décorateurs, etc…. Par exemple, pour les javaïstes qui aiment le codage d’API  » à la Spring Boot« , c’est-à-dire basé sur des annotations, il existe pour NodeJS, le framework Nest qui repose sur les mêmes principes et qui utilise les décorateurs de TypeScript pour remplacer les annotations de Java.

4 – L’écosystème

L’écosystème autour de NodeJs est énorme surtout vis-à-vis de sa relative jeunesse (Ryan Dahl publie NodeJS en 2009). Ainsi, un programmeur NodeJS dispose des outils suivants :
– gestion des dépendances : npm ou yarn,
– formattage de code : Prettier,
– outils de tests : Jest,
– IDE : plusieurs, mais les speakers ont une préférence pour Visual Studio Code, qui dispose d’un environnement Javascript et TypeScript complet (avec debugger),
– Debugger/Profiler : il y a un programme que beaucoup de gens possèdent et qui peut servir de debogueur, de profileur à un programme Javascript : Chrome ! (Avec la page « chrome://inspect« ),
– Framework Web : Express (qui dispose aussi de nombreux plugins) et Koa,
– Bases de données : NodeJS peut se connecter à quasiment toutes les bases : aussi bien les bases relationnelles (SQL Server, PostgreSQL, Sqlite, Oracle, MySql) que les autres (Redis, ElasticSearch, Cassandra),
– Et aussi : il peut s’intégrer avec Kafka, RabbitMQ, etc. Il y a des modules pour faire des API GraphQL ou REST,

C’est à ce moment-là de la réunion que les speakers indiquent que NodeJS n’est pas non plus un « silver bullet », NodeJS souffre de quelques problèmes. En particulier, pour certains besoins spécifiques de performance, l’architecture de NodeJS pourrait ne pas être adaptée.

5 – Et surtout…

Les deux animateurs donnent la raison ultime pour s’interesser à NodeJS : Quand une technologie émerge, tout developpeur un tant soit peu curieux devrait s’interesser à elle. Il n’y a donc aucune raison de ne pas s’intéresser à NodeJS !

Slides de la présentation

Vidéo de la conférence

 

Java, JVM, Javas SE/EE

Conférence – Nouvelle génération de tests pour projets Java

Vincent Massol nous présente les outils de test qu’il a mis en place sur son projet XWiki pour faire passer ses tests automatisés à la vitesse supérieur :

  • une couverture de tests automatisée avec une stratégie d’effet de seuil,
  • des tests de compatibilité ascendante,
  • du mutation-testing,
  • des tests d’environnements.

La couverture de test de ses projets est calculée automatiquement à chaque pull-request, et bloque le merge si la modification fait baisser le pourcentage de couverture du module. À chaque merge, le seuil à atteindre est ainsi progressivement augmenté

La compatibilité ascendante signifie que chaque version reste compatible avec la précédente, moyennant un besoin d’adaptation mineur. Pour cela, les éléments annotés @Deprecated lors de la précédente version ne sont pas supprimés mais déplacés dans un package à part : le module deprecated, à l’aide du plugin maven Revapi

Les tests par mutations (voir le quickie « Mutation-testing – comment évaluer la qualité de vos tests ») permettent de « tester les tests » : un plugin (pitest) modifie une copie du projet et vérifie que les tests automatisés réagissent à ces modifications. L’inconvénient est que les tests par mutations sont très lents, inconvénient que l’auteur corrige en utilisant l’extension à pitest « descartes »

Vincent utilise également le plugin Dspot, qui propose des assertions complémentaires aux tests déjà existants.

Les tests par environnements permettent en fait de simuler le lancement du programme sur différents environnements, à l’aide de docker et jenkins.

En conclusion,Vincent nous donne un dernier conseil : vous ne pourrez pas tout mettre en place. Du moins, pas sur tout les projets. Choisissez quelles sont les métriques les plus importantes à vos yeux, en fonction du contexte et du projet, et cherchez à automatiser l’extraction, l’analyse et le contrôle de ces métriques.

La vidéo est disponible ici.

Conférence – Apache Maven and Java 9

Cette conférence présentée par Robert Scholte, président du projet Maven, avait pour thème la coexistence de Maven avec le système de modules introduit dans Java 9.

Contrairement à une idée reçue, Maven a toujours fonctionné nativement avec Java 9, sous réserve de disposer d’une version du plugin compiler suffisamment récente.

Le talk s’est principalement concentré sur les apports de la communauté Maven au projet Jigsaw en matière de gestion de conflits dans le classpath, aux problèmes qui subsistent et aux bonnes pratiques qui permettent de les éviter (en particulier, une lib modularisée ne doit pas dépendre de libs dont les noms de modules sont auto-générés).

La problématique de mise en commun des configurations des modules (côté Java 9) et des dépendances (côté Maven) a été abordée lors de la phase de questions, mais la réponse apportée en décevra beaucoup : non, Maven n’évoluera pas pour prendre en compte cette redondance des informations. En effet, les deux paradigmes ont été jugés trop différents ; une revue en profondeur du modèle des POM serait nécessaire pour adapter Maven, et cela viendrait casser tous les projets existants.

Découvrez la vidéo ici.

Conférence – Lazy Java

La paresse, c’est bien. Dans le code, ça sert toujours : reporter l’évaluation d’un code à plus tard, séparer description et exécution, traiter un flux de données infini ou « presque infini » (streaming), faire de la récursion terminale (tail-recursion)…

C’est pourquoi Mario Fusco nous explique comment importer dans Java ce concept qui lui est étranger. Java est plus impératif et toujours strict, sauf dans quelques cas notables :

  • les opérateurs logiques paresseux ||, &&,
  • la structure de contrôle if/else (au passage, connaissez-vous un langage dans lequel les deux branches du if/else sont toujours évaluées ?),
  • les structures for/while,
  • les Stream de Java 8.

Au contraire, dans des langages comme Scala, la paresse est reine : on passe des paramètres call by name, qui ne sont évalués que s’ils sont utilisés (là où un paramètre normal est évalué avant son passage sur la pile, avant l’appel de la fonction réceptrice), la tail-recursion est déclarable et vérifiée par le compilateur, des variables peuvent être déclarée lazy, etc.

Parmi les exemples donnés par Mario, on peut retenir :

  1. Les Stream créés de manière récursive (exemple : Stream de nombres premiers). C’est impossible en Java normalement, car cela nécessite de faire 2 opérations terminales, hors les Stream Java n’en supportent qu’une, après le Stream est… terminé ^^. Son exécution est alors lancée, on ne peut plus ajouter d’autres opérations. En Scala, c’est possible grâce à un opérateur de concaténation paresseux: `#::`. Pour le faire en Java, il faut créer une implémentation de liste récursive (définie comme head+tail), mais avec un lambda de type Supplier pour la queue.
  2. On remarquera que les lambdas servent aussi à remplacer (de manière plus verbeuse, certes) les paramètres call by name
  3. La tail recursion en Java doit passer par une « fonction trampoline« 
  4. L’injection par annotation (à la Spring) : c’est immédiat par définition, avec l’énorme inconvénient de transformer un problème de compilation en problème d’exécution. Pour nous sauver en Java, il faut implémenter une monade Reader (par ailleurs bien connue des langages plus fonctionnels comme Scala, Haskell, etc.). On initialise la monade avec un objet et une fonction d’injection et ensuite les opérations sont passées en paramètre de la fonction map. Ne cherchez pas à comparer avec un framework d’injection/IoC, ça ne sert ici qu’à montrer comment faire lorsqu’on doit repousser la décision d’injection au dernier moment, sans empêcher de coder la logique métier. De manière générale, la monade Reader sert à fournir un environnement à un traitement paresseux ; c’est une notion utile et même importante dans les langages fonctionnels.

J’ai personnellement apprécié cette conférence pour sa démarche « rendons Java plus puissant avec des concepts existant dans les langages fonctionnels » (ou au moins « moins stricts/impératifs »). Il y avait d’autres conférences dans la même veine. J’ai désormais l’impression que la maturité de Java fait qu’une grande partie des développeurs historiques s’intéressent à d’autres langages avec des paradigmes différents, et que de plus en plus de bons principes de programmation « étrangers » ruissellent dans Java.

La vidéo est disponible.

DevOps, Agilité, Méthodologie & Tests

Conférence – Un CTO paie toujours ses dettes !

Par Steve Alves

Cette conférence était un retour d’expérience sur le refactoring de la solution de paiement chez Videdressing. Le speaker (Hervé Lourdin) nous a présenté le périple mené afin de construire une solution plus robuste.

Tout d’abord, il s’est attardé sur les causes de cette remise en question : l’échec d’ajout d’une nouvelle forme de paiement (Paypal). Pour cela, le chemin suivant a été emprunté.

En premier lieu, les problèmes ont été identifiés et personnifiés sous la forme des « 4 cavaliers de l’apocalypse », qui sont :

    1. la complexité alarmante du code amenant une explosion des temps estimés,
    2. le grand nombre de bugs,
    3. le manque d’attrait technique de la plateforme actuelle amenant une difficulté de recrutement,
    4. les “héros” (experts de la plateforme) fatigués et jouant uniquement le rôle de “pompiers” au lieu d’être des vecteurs de partage de la connaissance.

Ensuite, ces derniers ont été présentés, accompagnés d’un plan d’action (gel des nouveaux développements de features pour une durée de plusieurs mois), au product manager et aux investisseurs. L’accent a été mis sur l’impact financier direct (temps de développement) et indirect (difficulté de recrutement). Ayant eu leur accord, le projet pu démarrer. Néanmoins, vu que personne ne maîtrisait réellement le scope fonctionnel de ce module, une typologie de cette dernière a été créée. Ce qui a permi de remettre à plat le fonctionnement de la solution ainsi que de distinguer le vrai fonctionnement du système des croyances des personnes l’utilisant . Cela a amené une uniformisation du vocabulaire et des termes fonctionnels.

Ensuite, une roadmap et des stories ont été créées. Afin de conserver la motivation des différentes parties prenantes (les développeurs) ou impactées (le service client), le speaker nous a montré quelques solutions utilisées comme la code review pour partager la connaissance technique et fonctionnelle, l’industrialisation des déploiements via Docker ou l’affichage du taux d’avancement.

Enfin, le speaker nous a présenté quelques effets tels le partage de la connaissance et des bonnes pratiques de développement ; sans compter la baisse du nombre de bugs reportés et des réclamations clients. En définitive, cette conférence fut très intéressante à plus d’un point. Outre le fait qu’elle permet d’avoir un post-mortem inspirant d’une problématique que beaucoup d’entreprises connaissent (la dette technique incontrôlable), elle apporte un regard détaillé sur le quotidien d’un CTO de PME. En effet, ce poste ne devient plus un poste purement technique mais de plus en plus managérial, communicationnel et stratégique à mesure que l’entreprise croît.

La vidéo est disponible.

Conférence – Je me lance et deviens CTO !

En quoi consiste le métier de CTO dans une startup ?

En effet, les occupations d’un CTO varient énormément suivant le niveau et la taille de l’entreprise

Dans une startup, la première étape est de choisir son CEO.

Le CEO est celui qui porte la vision du produit. Le CTO est celui qui est capable de transformer les ressources mises à sa disposition (argent, materiel, personnes) en cette vision.

À noter qu’une idée moyenne, mais brillamment exécutée, aura plus de valeur qu’une bonne idée mal exécutée : votre CEO doit donc, en plus de sa vision de l’idée, connaitre le marché, avoir un plan marketing, un réseau, etc.

Quant au partage des parts et au calcul des salaires… Il n’y a pas vraiment de règles. Mais de manière générale, les parts sont données comme une compensation du risque pris par un des associés ou du salaire non-touché. C’est donc à voir en fonction de votre contexte personnel si vous préférez un salaire à des parts de la société.

En raison du temps passé ensemble par le CEO et le CTO, il est important que la confiance se créée, que les personnalités s’accordent… et que tout ce qui a été entendu et négocié entre associés soit noté dans le pacte d’associés, une sorte de contrat de mariage entre les différentes parties. Par exemple, quid du partage des parts, si l’un des associés est malade 50% du temps ? Que faire si la cohabitation ne se passe pas bien ? Que faire en cas de faute grave d’un des associés ?

Autre que la réalisation technique, de nombreuses autres tâches s’ajouteront à votre rôle de CTO de startup : recrutement, juridique, management, administration, etc.

La vidéo est maintenant disponible.

Conférence – La recette du test par un grand pâtissier

Démystifions ensemble le métier de QA !

En effet les QA ont tendance à être confondus par les développeurs avec des Business Analystes.
Les Business Analystes pensent que le travail des QA est de réaliser leurs scénarios de tests.
Les Business Managers imaginent qu’avec un QA dans leurs équipes, ils n’auront plus jamais de bug de prod.

Amandine Fournaise nous présente également le métier du grand pâtissier Pierre Hermes : il écrit ses recettes, mais ne les cuisine pas : c’est sa brigade de sous-chefs qui prépare les pâtisseries.

Elle nous propose donc de ré-imaginer le métier de QA ainsi : imaginons un testeur qui ne teste pas.

En effet, QA est l’abréviation de Quality Assurance : Contrôleur de qualité. Mais pas testeur. Alors, comment contrôler la qualité des livrables sans tester ?

Pour ce faire, notre QA a donc mis en place des outils automatisés de tests de non-régressions et End-to-End, des stratégies de tests, et un vocabulaire commun entre les QA et les développeurs.

Découvrir la vidéo.

Architecture, Performance et Sécurité

Conférence – Stream all things (patterns of modern data integration)

Gwen Shapira nous a présenté les challenges classiques de l’intégration de données ainsi que les patterns qui permettent d’y répondre.

Pour commencer, nous avons eu droit à un petit récapitulatif de l’historique de l’intégration de données lors de la dernière dizaine d’années, avec en particulier deux évolutions majeures :

  • Avec l’apparition de Hadoop et le passage du paradigme de data warehouse à celui de data lake, la définition de la structure des données ne se fait plus au moment de leur écriture (schema on write) mais au moment de leur lecture (schema on read), ce qui aboutit au déplacement de la responsabilité de l’interprétation des données vers l’ingénieur logiciel.
  • Avec l’apparition de Kafka, les batchs, exécutés à intervalles réguliers, ont été remplacés par des flux de données qui permettent de propager les événements au moment où ils se produisent.

Les différentes problématiques abordées :

  • Stream of events
    Tout ce qui se passe dans le système peut être considéré comme un flux continu d’événements immuables et ordonnés. Chaque événement a potentiellement des usages divers, ce qui aboutit à des échanges complexes quand les canaux de communication sont nombreux et hétérogènes. Kafka vise à concentrer la gestion de ces flux d’événements tout en assurant une excellente scalabilité.
  • Keep events compatible
    L’introduction des événements permet de découpler publicateurs et consommateurs. Entre eux, c’est le schéma des événements qui sert d’API, de contrat. Il est donc fondamental d’assurer que les événements restent compatibles.
    La notion de schema registry vise à répondre à cette problématique : utilisé au niveau des sérialiseurs, le schema registry permet d’adapter ou de rejeter les événements considérés comme incompatibles.
  • Ridiculously parallel transformations
    Dans les cas d’utilisation simples, c’est-à-dire quand toutes les opérations sur les événements sont stateless (ex : filtres), il est recommandé d’utiliser Kafka de la manière la plus simple qui soit : dans une logique dite de « hipster stream processing » en référence aux vélos des hipsters californiens, qui n’ont ni vitesses ni freins.
  • Streaming data enrichment
    Les opérations stateful (ex : jointures) sont complexes à gérer, dans la mesure où elles nécessitent la gestion d’états. Le hipster stream processing n’est donc plus adapté, et l’adoption d’un framework tel que Kafka Streams est recommandée. Kafka Streams absorbe la complexité de ces opérations grâce à un cache intégré pour la gestion des états.

Pour résumer, cette conférence nous aura donné une idée de certains concepts importants de l’intégration de données, de manière claire et très abordable.

La vidéo est disponible.

Conférence – A Brief, Opinionated History of the API

Joshua Bloch est quelqu’un à qui Java doit beaucoup. Il est à l’origine de l’instruction assert ou encore de la lib java.lang.Math ! C’est également l’auteur de Effective Java.
À travers sa longue expérience, il nous fait part avec beaucoup d’humour d’une question intéressante qui lui est parvenue : «comment le concept d’API s’est développé dans l’histoire de l’informatique», question posée par un juge fédéral, certes, mais pas moins intéressante pour autant !
Il nous décrit donc sa réponse et les recherches qu’il a menées au travers de la conférence A Brief, Opinionated History of the API.

Il commence par le tout début, à l’ère du premier ordinateur électronique en 1949, l’EDSAC. Les premiers programmes et l’emploi de tâches répétitives mènent très rapidement à l’invention de la sous-routine et de recueils de sous-routine, que l’on nomme toujours aujourd’hui «librairies». Joshua s’étonne qu’à cette époque déjà, les problématiques de réutilisation, simplification et maintenance de code sont déjà clairement exposées et restent des sujets d’actualité.

La notion explicite d’API semble apparaître pour la première fois dans un papier de 1968. Joshua donne plusieurs définitions équivalentes dont «une extension d’un langage de programmation». Librairie de sous-routine et API sont finalement très proches. C’est surtout les concepts de portabilité et compatibilité de versions qui vont différencier les deux, mais cela n’avait pas raison d’être à l’époque du premier (et unique !) ordinateur et des premiers programmes.

Que peut-on considérer comme une API ? La librairie standard C (libc) ? Les appels systèmes Unix ? Le jeu d’instructions d’un processeur ? Le langage d’impression PostScript ? Le BIOS ? Le protocole d’échange de fichiers SMB ? Les librairies de classes Java 2 ? Tous ces exemples (et bien d’autres) répondent à la définition !

Joshua finit sur l’aspect légal : tous les exemples d’APIs cités ont connu une ou plusieurs réimplémentations. Mais s’agit-il pour autant d’une violation de droit d’auteur ? Le droit d’auteur peut-il être même considéré dans le cadre de la création d’une API ?
L’affaire «Oracle versus Google» concernant la réécriture des APIs Java a déjà fait couler beaucoup d’encre et les décisions prises pourraient bien servir d’exemple pour le futur.

Selon Joshua, la réimplémentation des APIs est souvent une nécessité et de nombreux projets incontournables (Android dans le cas du procès cité) n’auraient jamais vu le jour sans. Interdire la réécriture d’API pourrait avoir des conséquences très lourdes sur l’industrie informatique.

La vidéo est disponible.

Big Data, Machine Learning, IA & Analytics

Conférence : Construire votre propre système de recommandations avec Apache Spark

Christophe Jolif et Othmane Laousy (IBM) ont présenté l’implémentation d’un système de recommandations en utilisant le framework Apache Spark.

Aujourd’hui, de plus en plus de produits grand public (plutôt qu’internes pour les entreprises) implémentent les systèmes de recommandation pour aider les utilisateurs à prendre des décisions. Ce système trouve son utilité surtout quand le choix est vaste et les décisions complexes (comme par exemple Amazon ou Netflix). Dans l’introduction, Christophe Jolif explique les deux approches principales dans le monde des algorithmes de recommandations :

  • basée sur le contenu : les recommandations seront calculées grâce aux informations sur les centres d’intérêt des utilisateurs et le contenu des produits à recommander ;
  • basée sur le filtrage collaboratif : les recommandations seront calculées grâce aux historiques des notations des autres utilisateurs.

L’exemple utilisé tout au long de la conférence est un système de recommandation sur la plate-forme des bots (imaginaire) . Pour créer un bot, l’utilisateur peut choisir un bot existant, un bot partagé par ses collègues ou bien créer un bot from scratch. Pour aider les utilisateurs à faire le choix, deux questions se posent :

  • Si je veux choisir un bot existant (ou partagé) : quel bot utiliser ?
  • Si je veux créer mon propre bot : quelle doit être ma prochaine action dans la construction d’un bot ?

Le framework utilisé pour les deux solutions s’appelle Apache Spark.

Pourquoi Apache Spark?

Apache Spark est un framework de calcul distribué. Un de ses avantages est le traitement en mémoire permettant d’obtenir une grande rapidité de calcul. Il est facilement accessible avec des API en Python, Scala, Java et R. MLib, une des librairies du framework, contient plusieurs algorithmes de machine learning qui permettent de répondre au besoin d’un système de recommandations : Alternating Least Square (ALS) et Frequent Pattern Growth (FP-Growth).

Othmane Laousy a présenté son implémentation dans un notebook, outil d’exploration et de prototypage souvent utilisé par les data scientists. Dans sa démonstration, il a montré les étapes de pré-traitement de données ainsi que l’implementation simple des deux algorithmes :

  • ALS : une technique de la factorisation matricielle qui permet d’extraire les facteurs latents. Les facteurs serviront à la prédiction des notations manquantes
  • FP-Growth : une technique qui permet de modéliser les séquences et par la suite de générer des règles d’associations

Les orateurs nous ont rappelé également que le modèle devait être ré-entrainé. Il suggère deux critères de ré-entrainement du modèle : par fenêtre temporelle ou bien par nombre de données reçues.

Pour finir, les orateurs ont brièvement décrit l’étape cruciale de chaque modèle de machine learning : la mise en production. Une des considérations à prendre en compte est le départ à froid (recommandations pour les nouveaux utilisateurs). Dans ce cas, là ils proposent de développer les recommandations basées sur la popularité ou bien l’utilisation des autres attributs d’un compte d’utilisateur (âge, sexe, département…).

La présentation a été très dynamique. Même si les orateurs ne sont pas entrés dans les détails des algorithmes, la conférence fournit une bonne base, clairement expliquée pour faire l’implémentation simple soi-même avec l’aide d’Apache Spark.

Découvrir la vidéo.

Conférence – Algorithmes distribués pour le Big Data, saison 3 : une histoire du temps

Pour conclure cette dernière journée de Devoxx, Duy Hai Doan se proposait de nous présenter quelques algorithmes de gestion du temps utilisés par des acteurs majeurs de la Data. Cette problématique est cruciale dans les systèmes distribués, dans la mesure où elle permet de garantir l’ordre des événements.

Les algorithmes présentés sont ceux qui sont utilisés respectivement par Apache Kafka Idempotent Producer, Google Spanner et CockroachDB. A noter que l’algorithme HybridTime, qui sert de base à Apache Kudu, n’aura finalement pas été présenté faute de temps.

  • L’horloge de Lamport est un algorithme théorisé en 1978 dont le principe plutôt simple nous fournit un ordre partiel uniquement, c’est-à-dire qu’il n’est pas possible d’ordonner les événements qui ne partagent pas un lien de causalité.
    Il est utilisé par Kafka pour donner l’ordre des événements pour une partition donnée ; tous les événements d’une partition étant causalement liés, cela permet de gérer le cas où des messages arrivent dans le désordre (pipelining).
  • True Time est un algorithme élaboré par Google, qui remet en cause des notions établies telles que le théorème CAP.
    L’API True Time qui en résulte a pour particularité de ne pas fournir une date, mais un intervalle auquel la date appartient à coup sûr, en prenant en compte la marge d’erreur. A partir du moment où deux intervalles sont disjoints, il est donc possible de déterminer à coup sûr l’ordre de précédence entre deux événements. En utilisant un système de verrou pessimiste au niveau de l’ensemble du système, Google Spanner garantit que tous les intervalles sont disjoints et peut donc assurer l’ordre des événements.
    Pour déterminer l’intervalle et faire en sorte qu’il soit le plus petit possible, True Time est basé sur la présence d’une horloge atomique et sur une synchronisation par GPS, qui permettent des synchronisations temporelles fréquentes et précises, les potentielles failles de chacune de ces deux solutions se compensant respectivement. Le défaut principal de la solution réside dans son prix, une horloge atomique n’étant pas à la portée de n’importe qui.
  • HLC (Hybrid Logical Clock) a la même base que l’horloge de Lamport, la notion de temps logique, mais y adjoint une composante causale dans l’objectif est d’ordonner les événements concurrents. La théorie s’en trouve considérablement complexifiée.
    HLC est utilisé dans CockroachDB, avec une approche différente de celle de Spanner, dans la mesure où chaque écriture est effectuée puis potentiellement annulée, tandis que Spanner dispose d’un système de verrou pessimiste.
    HLC peut être considéré comme le « True Time du pauvre ». En effet, il ne nécessite pas l’acquisition d’horloges atomiques, mais présente plusieurs défauts, comme le fait d’imposer la manipulation de certaines notions au niveau des messages métier échangés entre les serveurs, ou le risque de chutes de serveurs en cascade (ceux-ci étant tués en cas de divergence trop importante).

Pour conclure, c’était une présentation plutôt claire, quoiqu’un peu trop rapide sur la fin, de ce que plusieurs solutions ont sous le capot pour répondre à une problématique primordiale, avec leurs différents avantages et inconvénients.

La vidéo est disponible. Bon visionnage !

 

Revue de presse

$
0
0

La revue de presse hebdomadaire des technologies Big Data, DevOps et Web, architectures Java et mobilité dans des environnements agiles, proposée par Xebia.

Objets connectés

KubeCon + CloudNativeCon EU 2018 – Day 2

$
0
0

 

Il y a quelques temps, je vous présentais sur ce blog les retours sur la KubeCon + CloudNativeCon, et plus précisément sur le « Jour 0 » ainsi que la première réelle journée de conférence.

Il est désormais l’heure, avec un léger délai, de se pencher sur la deuxième journée de cette KubeCon + CloudNativeCon !

Keynotes d’ouverture

La journée commence comme s’est finie la précédente : Liz Rice et Kelsey Hightower mènent les keynotes tels des chefs d’orchestre (c’est le moins que l’on puisse dire, ces keynotes matinales étant toutes axées sur Kubernetes !).

 

Keynote : Kubernetes Project Update – Aparna Sinha, Group Product Manager, Kubernetes and Google Kubernetes Engine, Google

Cette première keynote nous propose un rapide passage sur les évolutions de Kubernetes, avec comme thèmes principaux la sécurité ainsi que la gestion d’applications stateful.

Google en profite pour présenter quelques détails sur gVisor annoncé la veille par Kelsey Hightower sur scène; détails que vous pouvez retrouver sur l’article de blog qui y est dédié.

 

Cette keynote a sans doute été l’un des meilleurs moments de cette conférence, et je pèse mes mots.
Sara Wells, Technical Director for Operations and Reliability au Financial Times, résume lors de sa keynote 70 % des messages que je cherche à transmettre à nos clients chez Xebia.
Qui penserait, en entendant « Financial Times », à « Kubernetes en production » ? La surprise a été totale : des technologies modernes, et une approche qui l’est tout autant, bien que restant pragmatique. La présentatrice
maîtrise son sujet sur le bout des doigts tout en faisant passer des messages clés de manière limpide.

 

Je ne peux que vous conseiller de regarder la vidéo, dont j’ajouterai le lien sans faute dans l’article de clôture sur cet évènement.
Ces 3 points de sa présentation résument selon moi les messages clés :
  • Choisissez des technologies sans surprise
  • Dépensez votre pouvoir d’innovation avec sagesse
  • Métriques de succès :
    • Temps passé à garder le cluster en bonne santé
    • Nombre de commentaires sarcastiques sur Slack

Keynote : Software’s Community – Dave Zolotusky, Software Engineer, Spotify

Suite à sa présentation de la veille (dont je vous avais déjà parlé) sur la migration de Spotify vers une approche Cloud Native, Dave Zolotusky nous propose ici un talk radicalement différent.
Pas de technique ce matin : un axe communauté et collaboration. Dave nous rappelle
à tous le
s messages clés suivants, que j’ai le plaisir de retrouver dans les valeurs de Xebia et que je souhaiterais continuer à propager tant ils sont importants :
  • Communiquez et Partagez ! Notre industrie n’en ressortira que grandie et nous avons tous à apprendre les uns des autres
  • Ayons le courage de participer aux différentes initiatives : nous avons tous notre pierre à apporter à l’écosystème

Présentations

Entre les keynotes et les présentations, j’ai pu trouver un moment afin de pouvoir vous partager cette vue représentative à la fois de l’effervescence de la conférence ainsi que de son confort et ambiance détendue et amicale :

The Path to GPU as a Service in Kubernetes – Renaud Gaubert, NVIDIA

Je ne pourrais résumer cette journée sans vous parler de Renaud Gaubert, ami avec lequel j’ai pu me rendre à cette conférence. Il se trouve que celui-ci a le plaisir de travailler pour NVidia, et pas sur n’importe quelle sujet : l’implémentation de la gestion des GPU dans Kubernetes !

Il nous propose un talk dressant le panorama des problématiques liées à l’orchestration et la conteneurisation avec des GPU : un sujet qui en est encore à ses premiers pas mais qui avance à pleine allure sous la poussée des géants :

  • Distribution d’entraînement de modèles de Deep Learning
  • Gestion des GPU au niveau du Runtime (Docker, CRI-o…) et device plugin Kubernetes
  • Problématiques liées à l’orchestration des ressources GPU elles-mêmes : blue/green deployment, résilience par rapport aux données chargées, queues de jobs utilisateurs…
  • Monitoring de GPU de manière moderne
  • Des pistes intéressantes sur les prochaines évolutions en terme de gestion de GPU par Kubernetes : un Operator ? Un Scheduler personnalisé ? L’avenir nous le dira !

Un bon rappel également que tout ceci est un énorme effort communautaire ainsi qu’un bel exemple de collaboration entre des entreprises telles que Google et NVidia dans une seule et même direction.

Envoy Internals Deep Dive – Matt Klein, Lyft

Les présentations ayant osé s’étiqueter « Advanced level » parmi les 3 niveaux référencés sur cette conférence (Beginner, Intermediate, Advanced) se font rares : seulement 14 parmis les 300 présentations ayant eu lieu sur ces 3 jour ! Le deep dive sur Envoy de Matt Klein en tant que l’un de ses créateurs fait partie de celles-ci.

Pour rappel, Envoy est un (reverse) proxy et load balancer layer 7, pensé dans une approche Cloud Native. Sa réputation lui vient principalement de 2 points : ses performances dues à une architecture logicielle en C++ extrêmement optimisée, et son utilisation par Istio, une solution de service mesh très en vogue dernièrement.

Mais cette présentation n’était pas là pour présenter ces bases; il s’agissait de détails sur les détails d’implémentation internes d’Envoy : quels sont les choix qui ont été faits sur le modèle de threading ? Comment garantir des performances maximales sur la gestion des requêtes avec un seul processus de manière asynchrone ? Comment associer à ces performances une configuration modifiable à chaud dans une optique Cloud Native ? Tant de points passionnants, qui sont malheureusement délicats à vous résumer tant ils sont complexes mais dont je peux vous donner un bref aperçu :

  • Hot restart (vous avez bien lu, restart, et non reload !)
  • Statistiques et observabilité moderne
  • Service et configuration discovery native
  • Filtering au niveau L3/L4
  • Le tout de manière ultra performante tout en restant simple d’utilisation

Ce talk m’a beaucoup rappelé celui d’Alex Crichton sur les I/O asynchrones en Rust via Tokio, qui rentrait lui aussi dans le même niveau de détail et dont je vous invite à regarder la vidéo si ces sujets vous intéressant.

Observability and the Depths of Debugging Cloud-Native Applications using Linkerd and Conduit – Franziska von der Goltz, Buoyant

Pour continuer sur le thème des service mesh, j’ai pu assister à une démonstration de Conduit. Pour rappel, les solutions dites de « service mesh » sont en réalité des reverse proxy / load balancers visant à ajouter de l’intelligence dans la gestion du trafic entre les services et non seulement le trafic externe.

Conduit peut être vu comme une sorte de « Linkerd v2″ et répond donc au même besoin. Par exemple faire des canary releases directement au niveau de l’exposition des services, router les requêtes vers les backend avec les meilleurs résultats (faible taux d’erreurs et meilleures performances), ou encore se service de ce composant central pour avoir une meilleure vision d’ensemble sur un système distribué en supplément du tracing. Tous ces exemples ont été démontrés lors de cette présentation, qui convainc sur les usages et la facilité de mise en place mais laisse cependant quelques doutes côté maturité : sujet définitivement à suivre quoi qu’il en soit !

Conclusion

Cette journée fut donc tout aussi chargée que la précédente, avec cette fois un sujet phare (malgré un biais sur le choix des talks de ma part) : les solutions de Service mesh !

Si vous découvrez l’évènement via cet article, vous pouvez consulter ceux sur le Jour 0 ainsi que le Jour 1 sur ce blog ; la troisième journée vous sera présentée prochainement.

 

KubeCon + CloudNativeCon EU 2018 – Day 3

$
0
0

 

Après les articles sur le « Jour 0 », Jour 1 et Jour 2 de la KubeCon + CloudNativeCon EU 2018, le temps est venu de nous pencher sur la troisième et dernière journée de cette conférence !

Keynotes d’ouverture

Keynote: Cloud Native ML on Kubernetes – David Aronchick, Product Manager, Cloud AI and Co-Founder of Kubeflow, Google & Vishnu Kannan, Sr. Software Engineer, Google

Commençons directement dans le vif du sujet : la gestion des GPUs dans Kubernetes est un sujet qui prend de plus en plus d’ampleur ; on l’a d’ailleurs vu lors de la seconde journée avec le talk de Renaud Gaubert. Pourquoi ? Simplement parce que le Machine Learning distribué sur du Kubernetes devient de plus en plus populaire.

Cette première keynote présentait Kubeflow, dont l’objectif est de rendre l’entraînement de modèles et leur mise à disposition via Kubernetes aussi simple que possible.

Si vous avez un cluster Kubernetes dans un coin et un Data Scientist sous la main, n’hésitez pas à tenter l’expérience !

Keynote: Running with Scissors – Liz Rice, Technology Evangelist, Aqua Security

Ne se contentant pas d’animer les keynotes, Liz Rice prend ici le premier rôle afin de nous proposer un talk axé sur la sécurité des conteneurs, d’un point de vue relativement bas niveau.

Un talk au final assez similaire à ceux que Jessie Frazelle à l’habitude de donner (par exemple au Paris Container Day l’année dernière) : explication des capabilities, de la gestion des privilèges, des points d’attention avec les volumes, des profiles SecComp. Il m’a par ailleurs plu de constater que ces points présentés sont couverts par la formation Conteneurs que j’ai créé à Xebia et que je continue de donner : je vous invite donc à venir en parler si vous souhaitez en savoir plus !

 

Keynote: Crossing the River by Feeling the Stones – Simon Wardley, Researcher, Leading Edge Forum

Cette dernière keynote de la conférence a eu de quoi surprendre par son speaker : Simon Wardley, désormais réputé pour son talk « Crossing the River by Feeling the Stones » qu’il adapte à chaque occasion de monter sur scène.

Pourquoi est-ce une surprise ? Parce que Simon Wardley n’est pas un conférencier technique, contrairement à tous les speakers de cette conférence. Il se rapproche plutôt de personnes telles que Simon Sinek (et son désormais célèbre « Start with Why »), donnant des présentations à caractère « inspirationnel » et source de réflexion.

L’adaptation de ce talk à l’occasion de cette KubeCon + CloudNativeCon se situe sur son débouché : une belle démonstration de l’évolution de notre écosystème vers le Serverless !

Présentations

Après la tendance des Service Mesh constatée la veille, cette journée s’est déroulée sous l’augure du Serverless, ou plus précisément des Functions-as-a-Service, bien que là encore biaisé par mes propres choix en termes de talks.

The Serverless and Event-Driven Future – Austen Collins, Serverless

Pour rappel, Serverless est un framework visant à faciliter le déploiement de services sur les différentes plateformes de functions as a service (AWS Lambda, Google Cloud Functions, etc). À ne pas confondre avec toute la mouvance « Serverless / Functions as a Service » dans son ensemble !

Via une live démo absolument bluffante, Austen Collins, créateur du Framework Serverless, nous montre ici sa nouvelle création : la Serverless Event Gateway. Il s’agit d’une Gateway ayant pour objectif d’abstraire les différents services de FaaS des fournisseurs de cloud notamment via l’utilisation de Cloud Events, un standard de format d’évènements en devenir annoncé précédemment par Kelsey Hightower en keynote.

Ce talk contient également une annonce : celle d’Azure Event Grid, basé sur cette Event Gateway.

Mais pourquoi vous parlais-je d’une « démo absolument bluffante » ? Pour cette raison :

 

Une démonstration se déroulant comme suit :

  1. Upload d’une image dans un bucket AWS S3
  2. … qui déclenche une lambda
  3. … qui envoie un event à l’Event Gateway
  4. … qui se charge alors de le dispatcher vers pas moins de 11 services de FaaS différents : on retrouve bien sûr AWS Lambda ou Google Cloud Function mais aussi des inconnus au bataillon tels que Nuclio Function ou SAP Kubeless function.
  5. Enfin, les fonctions sur chacun de ces services vont faire appel au service de reconnaissance d’image du fournisseur en question
  6. … pour aller au final poster le résultat de cette analyse sur Twitter

Les résultats de la live démo sont d’ailleurs visibles sur Twitter puisqu’étant le media de retour des fonctions de cette démo.

Le lien vers la vidéo sera donné dans le prochain article qui viendra vous donner le meilleur de cette KubeCon + CloudNativeCon en résumé. Une vidéo à voir !

Canary Deploys with Kubernetes, Istio and Envoy – Jason Yee, Datadog

Étant habitué à croiser des personnes de chez Datadog à divers Meetups parisiens (leurs bureaux à Paris ne cessent de s’étendre), j’ai décidé d’assister à ce talk autant pour le sujet que pour le speaker, avouons le.

Jason Yee s’est avéré être comme toutes les personnes de Datadog croisées jusqu’ici : passionné. Une passion qui transparait lorsqu’il a passé en revue les avantages et inconvénients des différents patterns de déploiement (Blue/Green, Rolling, Canary, …) au travers d’une live démo de Canary Release via Istio.

La conclusion ? Peu importe le pattern de déploiement choisi, dans tous les cas il y a un besoin impératif de monitoring afin de savoir automatiquement quand continuer ou quand rollback le déploiement. Un bon résumé des problématiques intéressantes liées aux déploiements automatisés !

Introducing Amazon EKS – Brandon Chavis & Arun Gupta, AWS

C’était une réelle surprise de voir Amazon parler d’un service qui n’est pas encore disponible globalement : EKS, pour « Elastic Kubernetes Service », un Kubernetes managé par AWS tout comme le font déjà Google avec GKE et Microsoft avec AKS.

Mais l’excitation de la surprise s’est vite calmée : bien qu’il soit intéressant d’en voir un peu plus sur EKS, le service n’en reste pas moins indisponible pour le public. Amazon n’ont rien annoncé de nouveau lors de cette présentation. Les questions se sont quant à elles souvent retrouvées confrontés à la réponse classique « Désolé, nous ne pouvons pas répondre, vous verrez quand EKS sera disponible publiquement ». Quelques détails sur l’intégration réseau avec Kubernetes ont cependant été évoqués, mais rien de révolutionnaire.

Le paroxysme de cette présentation restera sans aucun doute le fond d’écran du présentateur, ce qui en dit long sur le contenu :

Apache OpenWhisk on Kubernetes: Building a Production-Ready Serverless Stack on and for Kubernetes – David Grove, IBM Research

Nous avions testé OpenWhisk via IBM Cloud Functions il y a un an déjà chez Xebia, lors d’un de nos XKE (journée de partage mensuel entre tous nos consultants). Le bilan était plutôt mitigé… Moi-même, je n’en avais pas été particulièrement convaincu.

Mais force est de constater après ce talk de David Grove qu’OpenWhisk a bien avancé depuis : je suis resté scotché devant la démo qui nous a été présentée d’OpenWhisk sur Kubernetes.

Gestion du freeze des conteneurs afin de réduire le nombre de cold start, tracing, outils de développement générant des graphes d’exécution très sympathiques, le tout avec des performances plus qu’acceptables. Un mot : wow !

Conclusion

C’est désormais fini pour cette KubeCon + CloudNativeCon EU 2018. Un évènement qui se finit en beauté par une journée pleine de surprises et de démonstrations convaincantes.

Mais ça ne s’arrête pas là : je vous proposerai très bientôt un « take away » de cette KubeCon + CloudNativeCon, avec un résumé des grands thèmes évoqués, des annonces, et des vidéos à voir (selon moi) !

 


Le programme du Paris Container Day est disponible !

$
0
0

Après le succès de l’édition 2017, Xebia et WeScale s’associent une nouvelle fois pour vous proposer une nouvelle édition du Paris Container Day, le 26 juin prochain au New Cap Event Center à Paris.

Qu’est-ce que le Paris Container Day ?

Le Paris Container Day est LA conférence pionnière en France dédiée à l’écosystème des conteneurs et de ses bonnes pratiques.

De technologies émergentes les années passées, les conteneurs sont devenus un standard accepté. Nous avons assisté en 2017 à l’avènement de l’orchestration. La communauté s’est fédérée autour de quelques solutions, donnant ainsi naissance à une offre plus intelligible.

La question aujourd’hui n’est plus d’utiliser des conteneurs et un orchestrateur. Le défi est maintenant de les déployer à grande échelle et d’adapter nos pratiques pour vivre avec l’orchestration dans un monde qui devient Cloud Natif !

Le thème de la conférence cette année sera donc “Vivre avec l’orchestration”.

 

Cette année, plus d’interventions et des tracks organisés par niveaux de difficulté

Nouveauté cette année, les participants auront la possibilité de construire leur programme de la journée en choisissant parmi 3 types de présentations répartis selon 3 niveaux de difficultés : Débutant, Intermédiaire et Avancé.

Les participants auront le choix entre des Conférences de 45 min, des Retours d’expériences de 45 mins et des Fast tracks de 20 mins, il y en aura ainsi pour tous les goûts et tous les niveaux.

Dès l’ouverture de la conférence à 9h00 nous vous avons préparé une keynote surprise en “accord” avec l’orchestration des conteneurs. Liz Rice présentera ensuite son talk ”Orchestration – security threat or opportunity?”. Les conférences s’achèveront à 18h00 et seront suivies par un cocktail de clôture.

Le programme de l’événement est maintenant disponible sur notre site. Suivez notre twitter @ContainerDayFR pour ne manquer aucune annonce !

 

Profitez de cette journée pour rencontrer des acteurs de l’environnement des conteneurs

Initié lors de la précédente édition, un espace dédié aux sponsors de l’événement sera installé au rez-de-chaussée. Vous pourrez venir les rencontrer (Pivotal, VMware, Nginx et Aqua) et discuter de leurs dernières actualités. Les pauses et buffets prévus tout au long de la journée seront aussi l’occasion pour les participants d’échanger entre eux et avec les speakers.

Vous pouvez réserver votre place ici et retrouver toutes les informations relatives à la conférence sur notre site.

 

Infra-as-Code : pourquoi et comment coder son infrastructure ?

$
0
0

infra-as-code-programmez (2)

 

 

Dans le dernier numéro de Programmez!, retrouvez le dossier rédigé par Alexis Horgix Chotard « Infra-as-Code : pourquoi et comment coder son infrastructure ? ».

 

 

 

Infrastructure as code, de quoi parlons-nous ?

Historiquement, les serveurs peuvent être répartis en deux catégories : serveurs physiques et machines virtuelles.

Tous deux étaient installés manuellement, en démarrant sur une image d’installation. Il était ensuite possible de créer des snapshots, images instantanées de disques de machines virtuelles existantes, afin de les utiliser comme base pour ne pas réinstaller encore et toujours la même chose. Cependant ces images, ou templates, montrent vite leurs limites. Dès qu’il est nécessaire d’y apporter une modification, celle-ci se fait manuellement… posant des problèmes en termes de traçabilité, de répétition (recréation du template en cas de perte) ou tout simplement de connaissance : il est nécessaire de documenter ce qui est pré-installé sur ces images, de tenir la documentation à jour, et autres tâches fastidieuses et sources d’erreur.

Et si nous décidions de raisonner dans le sens inverse ? Écrire la documentation, puis avoir des outils en mesure de la comprendre pour configurer nos serveurs, générer nos images, et autres tâches qui n’ont aucune valeur ajoutée à être faites manuellement ?

Parlons donc d’infrastructure-as-code.

Que représente de l’infrastructure « comme du code » ?

Commençons tout d’abord par voir ce qu’est du code aujourd’hui :

  • Le code n’est, au final, qu’un descriptif textuel d’instructions dans un langage donné.
  • Cette description textuelle est comprise et transformée en actions concrètes, soit par un interpréteur soit via un compilateur.

Cette description textuelle peut (et doit) être versionnée : que ce soit via git, SVN, Mercurial ou autre.

Ce versionnement apporte un certain nombre de bénéfices. En effet, dans bien des cas, il existe toujours un point centralisant la base de code et permettant aux développeurs de regrouper et synchroniser leurs contributions au projet, typiquement Github ou Gitlab pour un projet versionné via git (qui est pourtant un système de versionnement distribué). Ce point central devient alors le point névralgique des actions découlant de la contribution de code : build, test, voire déploiement du code. Cette centralisation apporte également une certaine traçabilité : en effet, on possède un historique des modifications, qui sont datées et associées à un auteur, voire potentiellement signées cryptographiquement. Par ailleurs, on s’efforcera de ne jamais modifier l’histoire passée une fois celle-ci centralisée (git rebase puis git push –force par exemple), assurant ainsi l’intégrité de cet historique. Par ailleurs, « la doc, c’est le code » est un credo qui revient de plus en plus fréquemment, notament via le mouvement Craftsmanship.

L’infrastructure-as-code va donc consister à décrire l’infrastructure voulue textuellement, comme du code, et à versionner ce code, bénéficiant ainsi d’avantages notables tels qu’un point central pour l’automatisation de la gestion de notre infrastructure, la traçabilité de l’historique des évolutions, l’approbation de modifications ou encore une certaine forme de documentation.

En revanche, une fois cette description textuelle écrite, qu’en fait-on ?

Revenons sur notre comparaison avec le code : une fois écrit, du code est soit interprété, soit compilé. Il y a donc des outils en mesure de comprendre cette description textuelle d’instructions pour en tirer des actions / exécutions concrètes. Dans le cas d’un langage interprété tel que Python il s’agira de l’interpréteur Python lui-même, et dans le cas de langages compilés tels que le C il s’agira d’un compilateur tel que GCC ou Clang.

Pour notre infrastructure, c’est la même chose : une fois cette description textuelle écrite, il est nécessaire de posséder des outils en mesure de comprendre cette description pour les transformer en actions concrètes, sans quoi il ne s’agirait que de simple documentation.

Nous allons donc voir dans cet article quels sont ces outils, les paradigmes associés, les grands mouvements de l’infrastructure-as-code, ou encore le résultat que l’on peut aujourd’hui, en 2018, espérer atteindre avec de telles pratiques.

…et pour découvrir le reste, c’est par ici !

Afin de découvrir le dossier complet, téléchargez-le ici.

 

Pour continuer de parler Infrastructure, Conteneur, DevOps et Orchestration : rendez-vous au Paris Container Day

paris-container-dayAprès le succès de l’édition 2017, le 26 juin prochain aura lieu la 3ème édition du Paris Container Day au New Cap Event Center.

En 2017, nous vous parlions de la mise en production, cette année le thème de la conférence sera “Vivre avec l’Orchestration”.

Petite nouveauté cette année, les participants auront la possibilité de construire leur programme de la journée parmi 3 types de présentations (Conférences, Retours d’expériences et Fast Tracks) avec un niveau de difficulté technique dédié (Débutant, Intermédiaire et Avancé).

Le programme de la journée est disponible sur le site de l’événement.

Et n’oubliez pas nos TechTrends associés : Les Architectures Micro-services, Les Conteneurs et le Mouvement DevOps.

Tous les TechTrends et livres blancs de Xebia sont disponibles en téléchargement gratuit sur http://blog.engineering.publicissapient.fr/publications/.

Bonne lecture et rendez-vous au Paris Container Day !

 

Écho des TOs n°1 : From the clouds

$
0
0
photo
L’Echo des TOs #1

From the Clouds

 

Chers lecteurs, bienvenue sur ce nouveau format, l’écho des TOs.

Les Technical Officers chez Xebia font partie, aux côté des CTOs, d’une direction technique élargie. À ce titre, ils défrichent les nouvelles tendances technologiques, creusent les méthodologies associées et orientent Xebia dans la bonne direction. Régulièrement, ils communiquent en interne sur l’avancée de leur travaux. Le mois dernier, un Xebian a innocemment posé la question : “Pourquoi ne rendrions nous pas cette communication publique ?”. C’est pourquoi, nous vous la livrerons ici tous les mois, expurgée des références client et des détails trop “internes”, l’écho des TOs de la semaine.

Bienvenue sur ce premier écho des TOs, où nous parlons Cloud Native

Pour lire cet écho en musique

Why

Chez Xebia, nous sommes capables de penser et de mettre sur pied des applications aux petits oignons et respectant toutes les règles de l’art pour nos clients. Mais sont-ils vraiment en mesure de les exploiter à leur plein potentiel ? Quelques exemples :

  • C’est génial d’avoir des applications 12factor-compliant, scalables horizontalement, exposant des jolis endpoints de healthcheck etc; mais nos clients sur du on-premise sont-ils en mesure d’en tirer profit afin d’avoir des applications vraiment résilientes et scalables chez eux ?
  • C’est super d’exposer un joli /metrics mais si rien ne vient le scrapper pour agréger ces métriques, ça ne sert pas à grand chose (et c’est Ivan Beauvais avec son slot Prometheus à Devoxx qui serait déçu.)
  • C’est cool de logguer proprement, à des niveaux pertinents, dans des formats que l’on peut facilement parser, mais si l’on doit passer par une armée d’Ops de notre client pour y avoir accès, le bénéfice n’est au final que moindre

Je pense que nous pouvons, et même que nous nous devons, d’accompagner nos clients afin qu’ils puissent exploiter au mieux la qualité que nous sommes capables de produire ; certains projets tels que Ingenico y sont parvenus, mais d’autres clients moins ouverts, avec des contextes plus complexes, peinent à se laisser guider.

What

Mettons un mot sur tout ça : “Cloud Native” (oui bon d’accord, ça fait 2 mots…). On l’entend partout mais ça reste vague, et pour cause : il s’agit du regroupement d’une foule de petites choses qui, une fois mises ensemble, donnent un tout cohérent. L’aspect Cloud Native concerne à la fois la construction d’application, leur gestion, ainsi que la manière dont on doit s’organiser pour gérer ces deux points.

  • Sur la partie construction des applications, on retrouvera les points évoqués plus haut : 12factor, patterns de développement pour du Cloud, CI, Craft, etc.
  • Sur l’aspect gestion/hébergement et opération de ces applications, on parlera d’orchestration, d’infrastructure-as-code, de monitoring moderne (logging, métriques, tracing), et de bien d’autres choses encore.
  • Enfin, pour ce qui est de s’organiser pour gérer un produit Cloud Natif, on reviendra sur des bases sur lesquelles nous sommes déjà leaders telles que l’agilité, l’itérativité, l’orientation DevOps, mais aussi sur des choses plus nouvelles comme la notion de SRE, d’ ”anti-fragile”, etc.

Cela vous semble très large ? Ca l’est, et c’est bien pour cette raison que c’est intéressant et un réel challenge pour nos clients !

How

Notre pari est donc que nous soyons capables de pousser nos clients vers des manières modernes de travailler sur ces aspects. Pousser à son paroxysme l’utilisation des bénéfices du Cloud pour nos clients ayant la chance d’être chez AWS ou GCP, y éduquer les clients hébergeant leur propre infrastructure, et apporter notre vision et notre savoir faire sur un scope encore plus large. Nous avons déjà su le faire naturellement sur la partie Intégration Continue (quel client ressort d’un projet Xebia sans une batterie de tests et la CI qui va avec ?), allons désormais plus loin en aidant nos clients à rendre des choses telles que le Déploiement Continu possibles même on-premise. Des projets tels que Jobteaser avec Thomas Auffredou et Olivier Cloirec ou encore Early Birds avec Jonathan Norblin sont en plein dans ce sujet, et nous en reparlerons bientôt lors du Paris Container Day et dans un prochain article.

Tracing

Un thème revient de plus en plus fréquemment et s’inclut dans toute cette partie Cloud Native : le Tracing, et de manière plus générale l’observabilité moderne. Pour rappel, l’observabilité est actuellement souvent définie sur 3 axes :

  • Logging
  • Métriques
  • Tracing

Les 2 premiers points sont probablement clairs pour tout le monde, mais le Tracing n’est pas encore une évidence. L’idée est pourtant simple : avec l’avènement des microservices et l’utilisation de nombreux services managés, il devient de plus en plus ardu de remonter à la source d’une défaillance en cascade et d’avoir une vision d’ensemble. Comment y parvenir ? En apposant par exemple un identifiant unique à l’entrée d’une requête dans le système, et en “baladant” cet identifiant le long du traitement de cette requête.

En tant que client soucieux, je veux savoir qu’un utilisateur a fait une requête dans son browser, qui a appelé une de mes API REST, qui a elle-même contacté un service en graphQL qui a à son tour requêté 3 autres services, déposé un message dans Kafka et fait 2 appels à une base de données. Je veux également savoir combien de temps chacune de ces étapes a pris, menant souvent le Tracing à être appelé APM pour Application Performance {Monitoring,Management}.

Et bien en 2018, tout ceci est déjà possible grâce à des projets open-sources tels que Jaeger, OpenTracing ou encore OpenCensus, des services managés tels AWS X-Ray ou Google Stackdriver Trace, mais aussi de nombreuses solutions en SaaS comme AppDynamics, New Relic, Datadog, Instana, Zipkin et consors.

Dans cette liste de solutions en SaaS, le produit le plus sympa d’un point de vue technique (et personnel) est sans doute Datadog. Les retours sont systématiquement les mêmes : “leur produit est excellent, mais c’est cher lorsque l’on passe à l’échelle”.

Pour avoir longuement étudié la question, nous gagnerions probablement à présenter ce genre de services à nos clients n’ayant pas la maturité nécessaire pour les gérer eux-même.

Paris Container Day

Les conteneurs et l’orchestration étant deux éléments en plein coeur de ce sujet Cloud Native, profitons-en pour parler un peu du Paris Container Day 2018 ! Nous vous donnons rendez-vous le 26 juin prochain, au New Cap Event, pour échanger avec les 400 participants et speakers autour du thème “Vivre avec l’orchestration”. Le programme complet est disponible sur le site de l’événement.

 

Ils sont cités dans l’article (et vous les avez peut-être déjà rencontrés) : 

Ils

Alexis Horgix Chotard (l’auteur) Olivier Cloirec Thomas Auffredou Jonathan Norblin Ivan Beauvais

sont cités dans l’article (et vous les avez peut-être déjà rencontrés) :

 

Xebia et les conteneurs

$
0
0

Nous sommes fiers de dire que tout a commencé en 2014, et que depuis tout s’est emballé…

Aujourd’hui, 26 juin 2018, a lieu la troisième édition du Paris Container Day, la conférence pionnière en France dédiée à l’écosystème des conteneurs et de ses bonnes pratiques que nous co-organisons avec WeScale. Cela méritait un état des lieux.

Aujourd’hui les conteneurs chez Xebia c’est :

  • une cinquantaine de Xebians manipulent des conteneurs au jour le jour,
  • une centaine de personnes formées à Docker depuis 2016 chez Xebia Training,
  • une dizaine de projets en production à date,
  • une frise bien remplie qu’on vous invite à découvrir.

Et nous ne comptons pas nous arrêter là… Vous non plus ? Rejoignez-nous !

 

Une décennie DevOps, quels enseignements tirer ?

$
0
0

DevOps, bientôt 10 ans que ce terme existe. Il apparaît dans toutes les discussions IT mais on ne peut pas cacher que sa définition est floue pour beaucoup. Cet article de blog est l’occasion de partager quelques réflexions sur le mouvement DevOps et sur son acceptation dans les entreprises.

Un mur qui peine à tomber

Le mur de la confusion est la plus célèbre métaphore du mouvement DevOps. Il faut déconstruire le mur qui sépare les devs (qui veulent du changement) et les ops qui sont garants de la stabilité). Après des années à vivre en silo avec des objectifs non alignés, nous sommes forcés de constater que la déconstruction du mur prend du temps même si tout le monde en est conscient. L’arrivée des solutions de cloud public a fait bouger les lignes : les dev pensent pouvoir se passer des ops, ce qui est faux dans la plupart des cas car ils sont souvent loin des réalités de la production. Les ops doivent réagir à cette offre publique en proposant une alternative interne : pour faire simple, supprimer les tickets et proposer des services à la demande par API ou portail. La peur des start-ups qui uberisent de nombreux marchés a poussé les entreprises historiques à se challenger. Malgré une résistance forte, la culture des entreprises évolue et les organisations entreprennent de déconstruire le mur. D’un coté en alignant les dev sur les réalités de la production avec la fusion du support et de l’intégration dans les feature teams. De l’autre en alignant les ops sur les enjeux métiers : ce qui passe par l’arrivée d’un product owner infra qui se rapproche des dev. Cet alignement devient nécessaire avec l’évolution des métier des ops qui sont de plus en plus développeurs.

a crack in the wall by Tai, flickr

DevOps n’est pas un concept IT

C’est sans doute son problème le plus important, le mouvement DevOps n’est pas aidé par son nom. L’agilité est un terme général adapté à des méthodes de développement logiciel technique. Dans le cas de DevOps, le choix fut inverse : un terme empreint de jargon pour désigner un modèle d’organisation de l’entreprise… 10 ans plus tard, nous sommes forcés de reconnaître que le terme n’aide pas. L’entreprise ne l’assume pas et le business y voit une solution quand les initiateurs du mouvement y voyaient une nouvelle culture avec une façon de s’organiser et un nouveau management.

Une obédience technique qui complique l’appropriation

Le terme DevOps fait peur, les métiers et les managers réagissent de deux manières quand ils l’emploient : soit ils le minimisent, soit ils le considèrent comme un mouvement pour les dev et les ops. Certes le mouvement DevOps est à l’origine initié par des personnes comme Patrick Debois qui sont issues des infrastructures mais ils avaient conscience de l’importance de l’agilité et de l’alignement de l’entreprise. Le mouvement DevOps propose une façon d’organiser et de manager l’entreprise dans son ensemble. Nombre d’entreprises ont du mal aujourd’hui à se retrouver derrière cet étendard par méconnaissance. Des méthodes comme le lean startup qui partagent des valeurs communes (à commencer par la culture de la mesure) ont aujourd’hui un écho plus important coté métier et il semble que le nom et l’origine en soient en partie la cause.

Des raccourcis pris par les technophiles

Automatiser n’est pas DevOps. On ne peut que constater dans les DSI que l’amalgame persiste. Certes il existe deux types d’automatisation indissociables de DevOps : le pipeline CI/CD qui va permettre de mettre en production rapidement de manière sécurisée. Et le provisionning des infras qui permet de construire rapidement des environnements reproductibles et maîtrisés. Sans ces deux automatisations, il n’y a pas de développements agiles mais un bon niveau d’automatisation n’implique absolument pas d’être DevOps. L’obnubilation pour l’automatisation peut vite faire oublier les principes de DevOps : la collaboration, l’importance de mesurer les actions, le lean et bien sûr l’amélioration continue. On parle souvent du modèle CALMS qui se veut une alternative a ITSM dans le monde ITIL.

Le marketing des éditeurs est un miroir aux alouettes

DevOps est un buzzword et l’homme aime ce qui est magique. Il est tentant de croire qu’un logiciel va nous rendre DevOps. C’est globalement le travers des organisations quant à l’outillage. Acheter un outil semble souvent la solution. Quand bien même l’outil est de qualité, on oublie de s’assurer que les collaborateurs l’utilisent correctement, formation et accompagnement sont souvent bâclés. Derrière chaque outil étiqueté DevOps il y a des concepts implémentés mais on ne peut décemment croire qu’un outil pourra tous les abstraire. Le développement est un métier complexe, le mouvement DevOps fait travailler avant tout l’état d’esprit des équipes. On n’installe pas un état d’esprit.

DevOps est l’organisation moderne pour une entreprise

Si vous n’en êtes pas convaincus, il reste un argument massue : même SAFe en parle ! On peut être DevOps sans être SAFe mais l’inverse n’est pas envisageable. A l’instar des frameworks d’agilité à l’échelle, DevOps propose une organisation et une culture adaptées aux enjeux de l’entreprise d’aujourd’hui : centrées sur l’utilisateur du produit, permettant d’expérimenter rapidement et de pivoter si besoin. Le monde dans lequel nous vivons est complexe, il est impossible de créer le produit parfait au bon prix et dans les temps pour de nombreuses raisons. Il faut donc repenser l’entreprise pour qu’elle devienne anti-fragile, par opposition à fragile. Comme le dit Nassim Nicholas Taleb dans son livre : « L’anti-fragilité est une propriété des systèmes qui se renforcent lorsqu’ils sont exposés à des facteurs de stress, des chocs, de la volatilité, du bruit, des erreurs, des fautes, des attaques ou des échecs. » Les entreprises doivent s’organiser pour tendre vers cet idéal.

Faire le deuil de la cohérence logique.

La cohérence logique est ce qui nous pousse à ranger les choses dans des boites. Il y a une indéniable logique à mettre tous les développeurs front ensemble, tous les DBA ensemble, etc. Ce modèle a certains avantages : économie d’échelle, contrat de type centre de service, gestion de la compétence. C’est inévitable, ce mode d’organisation en silo oblige à dépenser une énergie folle en coordination et en stratégie pour satisfaire des objectifs orthogonaux. Localement, on a l’impression de faire des économies mais dans la réalité, la gestion d’un SI est trop complexe pour que ce fonctionnement en silo soit efficient et surtout rapide. L’organisation en feature team, mais plus généralement en équipe pluridisciplinaire, est aujourd’hui la seule qui semble permettre un time to market concurrentiel pour beaucoup de produits.

Transformation DevOps en cours…

Alors où en est on dix ans après ? Bonne nouvelle, la transformation sera longue mais il est indéniable que du chemin a été parcouru ! Les organisations en feature teams sont à la mode et le recul du cycle en V est visible. Il est aujourd’hui aisé pour un développeur de travailler de manière agile. Si ça n’est pas votre cas, sachez que le marché est de plus en plus mature et qu’il est possible de travailler autrement et ce partout en France. Dans les grandes entreprises leaders, les silos les plus proches fusionnent : testeurs, intégrateurs, supports rejoignent de plus en plus les équipes de développement. De même pour les MOA qui, il y a 10 ans, étaient dans le bâtiment d’à coté et qui maintenant sont membres de l’équipe. Côté ops, les métiers les plus bas niveaux comme l’infrastructure en entier ou le réseau ne sont pas dans les feature teams et n’ont pas obligatoirement vocation a y être (cf où s’arrête la responsabilité d’une feature team ?) mais le changement a commencé et ce retard sera vite comblé pour deux raisons : les solutions infrastructure-as-code arrivent à maturité grâce à des leaders comme les GAFA et autres Netflix et grâce à la maturité de l’accompagnement agile. En effet, les méthodes se précisent, s’adaptent et les profils agiles (coachs, scrum masters, product owners) sont de plus en plus nombreux. Nous sommes de plus en plus nombreux à avoir 10 ou 15 ans d’expérience dans le développement agile. Les ops utilisent ce savoir et ces compétences pour rattraper le retard à grand pas !

Revue de presse

$
0
0

La revue de presse hebdomadaire des technologies Big Data, DevOps et Web, architectures Java et mobilité dans des environnements agiles, proposée par Xebia.

 

Front

Mise en place d’une authentification avec Angular 5, nodeJs et Firebase

De nombreuses applications et sites web nécessitent de s’authentifier. Malheureusement, à l’exception des nouveaux projets, rares sont les opportunités de s’exercer à la mise en place from scratch d’un système d’authentification.

Dans une suite d’articles, Kim Maida nous montre comment mettre en place une authentification Auth0 depuis un front Angular vers un back Node.js et un Cloud Firestore database

Gamification : Frog & Flexbox

Outils essentiels au responsive design de nos sites web, les flexbox sont néanmoins parfois difficiles à appréhender . Dans une initiative originale, Thomas Park nous propose une suite d’exercices sous forme de jeu, pour nous exercer aux flexbox. A vos claviers !

 

Agilité

Agile at Scale : l’agilité à l’échelle d’une entreprise, ça se passe comment ?

Un article HBR où l’on apprend que Bosch, 3M, Riot Games et d’autres ont mis en place l’agilité à l’échelle de leur organisation. Et où l’on redécouvre toutes les difficultés d’un tel projet mais aussi tous les bénéfices que l’on peut en tirer.

 

DevOps

Jenkins pipeline : arrivée des sequential stages

Les sequential stages arrivent (enfin !) sur Jenkins. Certes, on pouvait executer des morceaux de build en parallèle depuis la version 1.2 du plugin pipeline, mais ce sont désormais des ensembles de steps entiers qui pourront être parallélisés .

Dans son dernier article, Andrew Bayer nous présente donc les sequential stages, et comment mettre du parallélisme sur votre pipeline existant

 

La XebiCon revient en 2018 !

$
0
0

La XebiCon est de retour en 2018 !

 

SAVE THE DATE: Rendez-vous le 20 novembre prochain. Cette 4ème édition aura lieu dans le cadre prestigieux du Palais Brongniart, au centre de Paris.

Qu’est ce que la XebiCon 2018 ?

La XebiCon, c’est :

  • 1 200 personnes partageant et échangeant sur les dernières actualités technologiques et méthodologiques,
  • 50 conférences techniques : des retours d’expérience clients, des découvertes technologiques, des conférences avancées permettant d’aller au cœur des sujets. D’une vingtaine de minutes à plusieurs heures, la variété des formats vous permettra de construire un programme adapté à votre rythme et à vos envies,
  • la conférence, qui parle Data en production, Data dans le Cloud, Nouvelles interfaces Web, Serverless on-premise, Intelligence artificielle, Cloud Native, Applications Temps Réel, Mobilité, DevOps, Agilité à l’échelle, Blockchain, etc.
  • le rendez-vous annuel des Développeurs, TechLead, CTO, Manageurs, Coachs Agiles, tous réunis pour partager leur vision de l’IT d’aujourd’hui et de demain,
  • un espace d’exposition où vous pourrez tester et vous éprouver sur les technologies de demain.

 

La XebiCon, c’est tout simplement une journée de partage qui vous donnera les clés pour tirer le meilleur des dernières technologies.

Vous souhaitez être au courant des dernières informations de la XebiCon ? Suivez la Xebicon sur Twitter : @xebiconfr

La XebiCon, c’est aussi pour les C-Levels et Manageurs

tech4exec-header-mailCette année, les événements Tech4Exec s’installent à la XebiCon. Les C-Levels et Manageurs pourront assister à des conférences données par des speakers de renommée internationale, ceux qui font bouger les lignes et révolutionnent le monde de l’IT.

Tech4Exec démystifiera les sujets et technologies stratégiques du moment, pour en comprendre les implications, les déclinaisons opérationnelles concrètes et leur intérêt pour l’entreprise.

Toutes les informations sur xebicon.fr/tech4Exec.

2017, le rappel

Plutôt qu’un long discours, redécouvrez l’événement en vidéo.

Et si vous souhaitez voir ou revoir les conférences, elles sont toutes disponibles : vidéos XebiCon’17.

Bon visionnage !

Profitez des billets au tarif Early Bird

Réservez votre place dès à présent et profitez du tarif Early Bird à seulement 30 euros. Il n’y en aura pas pour tout le monde !

Toute les informations sur le site, et inscription sur la Billetterie.


Focus sur la Data sur GCP chez Early Birds avec Jonathan Norblin

$
0
0

Google Cloud Platform (GCP) et la Data dans le Cloud sont des axes clés pour cette année 2018 chez Xebia.

Cela tombe bien, Jonathan Norblin intervient chez Early Birds, et pas sur n’importe quoi : un super combo des deux, de la data sur GCP s’il vous plaît !

Pour contextualiser, découvrez l’interview de Samuel Clara, Product Manager Chez Early Birds.

Maintenant, c’est à Jonathan Norblin de nous expliquer sa mission. Nous vous proposons donc un format « interview » inédit sur ce blog.

Au programme : Scala, Google Cloud Platform, Data, Craft et DevOps !

 

Jonathan, peux-tu nous présenter Early Birds ?

Early Birds propose une plateforme de personnalisation et de recommandation « as a service », qui permet à des entreprises de suggérer à leurs clients des produits ou contenus qui leur correspondent. Leurs clients sont des entreprises telles que la Fnac, Darty, Lacoste, La Redoute, etc. Early Birds propose différents types de personnalisation : recommandation de produits les plus populaires, produits similaires, mais avant tout de la recommandation personnalisée liée aux activités d’un client.

Et que fais-tu chez eux ?

J’interviens chez eux depuis le 22 janvier, notamment sur la partie data engineering, mais aussi sur des sujets craft et architecture sur GCP. Chez Early Birds, la partie technique est décomposée en 2 équipes principales :

  • la team Data, dans laquelle je suis, qui réalise toute la partie recommandation en elle-même : création de modèles de machine learning et exposition d’une API proposant des recommandations temps-réel, basées sur ces modèles précalculés
  • la team API, qui s’occupe des APIs plus généralistes : notamment celle exposée au public, en NodeJS, qui va appeler la partie « serving » gérée par la team Data. Cette équipe s’occupe aussi des imports des référentiels produits, et de la partie console qui va permettre aux clients de personnaliser leurs recommandations en fonction de règles de merchandising qu’ils définissent

Concrètement, comment se passe la partie Data et quels services de GCP utilisez vous ?

Sur l’aspect data science, un gros travail de création et d’entraînement de modèles de machine learning a déjà été réalisé. Ces modèles sont calculés à une fréquence quasi-journalière par des batchs Spark qui tournent sur du Dataproc (Spark/Hadoop managé). Pour scheduler ces batchs, nous utilisons une solution maison, mais nous sommes en train de regarder du côté de Google Cloud Composer, qui n’est en fait qu’un Airflow managé. Les modèles calculés par ces batchs sont sérialisés et stockés dans Google Cloud Storage. Derrière, notre application Scala de « serving » n’a plus qu’à charger ces modèles et exposer une API de recommandation.

Pour être très efficaces sur les recommandations (entre 2 et 15 ms), nous utilisons des machines Google Compute sur-mesure (64GB de RAM et 48 vCPU). L’application est multi-threadée pour exploiter au maximum le potentiel de ces machines.

Et quid des données desquelles vous dépendez pour les recommandations en plus de ces modèles ?

Nous utilisons principalement BigTable pour stocker les données. C’est sans doute le service de Google qui est le plus mis à contribution. C’est quasiment comme HBase, à quelques différences près, et d’ailleurs nous l’attaquons via la même API.

Quasiment tout est stocké en Protobuf dedans, ce qui permet d’avoir un typage fort car BigTable se base principalement sur des tableaux d’octets. Dans ces données, on retrouve les référentiels produits, mais aussi toutes les informations liées à un utilisateur : profil, activités sur les sites clients, etc. Dans l’application de serving, toutes les données et méta-données intéressantes sont chargées en RAM afin d’avoir des réponses aussi rapides que possible.

Du coup, après ce chargement en RAM, comment es-tu sûr d’avoir quelque chose à jour ?

Depuis peu, l’équipe API utilise Pub/Sub pour mettre à jour tout ce qui est référentiel produit. De notre côté, nous écoutons ces topics Pub/Sub pour savoir quels référentiels produits ont été mis à jour, et cela nous permet de ne réimporter que les données nécessaires depuis BigTable, et réduit ainsi la charge appliquée à ce dernier (auparavant, les référentiels produits de tous les clients devaient être rechargés).

En parlant de Pub/Sub, cet outil peut aussi jouer un rôle très interéssant de « bus de messages » que nous souhaitons exploiter pour faciliter la communication entre les différents services. Avec un intermédiaire aussi fiable, c’est plus simple de se concentrer sur l’applicatif et d’adopter une approche microservices. Un grand chantier est en train de se faire de ce côté.

À propos des services GCP que cette Team API utilise et pas vous côté Team Data, il y en a d’autres ?

Oui, ils ont besoin d’un Redis notamment pour mettre en cache des données souvent requêtées, et qui permet de ne pas surcharger BigTable. Jusqu’ici, ils avaient une machine Redis dédiée sur une instance Compute Engine vu que Google n’en proposait pas en managé. Mais c’est en train de changer : Google a sorti du Redis managé en bêta (MemoryStore) et l’équipe a participé à cette bêta !

Ils ont aussi du Dataflow sur la partie imports, qui permet de concevoir facilement et de scaler automatiquement les tâches qui demandent beaucoup de ressources. L’API d’Apache Beam permet de décrire chaque job.

Pour la partie analytique, ils utilisent également BigQuery qui est plus simple d’utilisation que BigTable, et surtout plus adapté pour ce type de requêtes.

Finalement, ils utilisent aussi GKE (Kubernetes managé). De notre côté, nous ne nous sommes pas encore penchés dessus, mais nous avons tout de même commencé à automatiser les déploiements dans des conteneurs Docker sur des machines tournant sur Container-Optimized OS. Kubernetes est peut-être l’étape suivante pour orchestrer tout cela, mais pour l’instant, nous y allons petit à petit sur cette partie.

Sur quoi travailles-tu au quotidien dans tout ceci ?

Un peu de tout : dans l’équipe Data, même si chacun a ses préférences, tout est fait pour que nous puissions participer à tous les sujets. De mon côté, étant plus attiré naturellement par les parties Craftsmanship et DevOps (notamment le pan automatisation), j’ai essayé d’apporter ces compétences à l’équipe à travers la mise en place de plusieurs choses : des tests bien sûr, à la mise en place d’un repository manager (Artifactory), d’outils de CI (Travis CI), l’automatisation de l’infrastructure (Terraform, Packer) en passant par la partie déploiement et automatisation à base de conteneurs. L’objectif ultime de ce dernier point étant à terme de faire des mises en production en un simple clic !

En parlant de tests, ça donne quoi avec des services de Google Cloud ?

Les tests d’intégration nécessitent des émulateurs de BigTable et Pub/Sub pour pouvoir être lancés localement. Google fournit bien des émulateurs de Bigtable et Pub/Sub via gcloud beta emulator bigtable par exemple, mais ce n’est pas du « vrai » local, et nous ne pouvons donc pas tester sans accès à Internet si on les utilise, ce qui est vite limitant.

En conséquence, nous utilisons des images Docker communautaires pour simuler Bigtable (shopify/bigtable-emulator:0.1.0) et Pub/Sub (knarz/pubsub-emulator:latest). C’est vraiment dommage que Google ne fournisse pas ces images officiellement. Du coup, ce n’est pas vraiment ce qu’on pourrait qualifier de clean, car on se retrouve à dépendre d’un tag latest d’une image Pub/Sub créée par un anonyme, parce qu’il n’y a rien d’autre…. Nous envisageons sérieusement de recréer nos propres images et de les héberger dans notre propre Container Registry pour avoir plus de contrôle.

Pour ce qui est de lancer les tests : nous utilisons Maven sur le projet (nous étions sur sbt avant, mais nous avons jugé que c’était trop lourd à maintenir et qu’il y avait beaucoup de défauts), et nous passons donc par le plugin docker-maven-plugin qui permet de démarrer des conteneurs avant la phase de tests et de les détruire après. C’est très pratique et cela permet de garantir des builds reproductibles, d’autant que le lancement de Maven se fait aussi à travers un conteneur Docker !

C’est la partie tests qui pose le plus de problèmes selon toi ?

Pas nécessairement non. Côté Google, c’est clairement les dépendances.

L’utilisation de tous les produits Google ensemble au sein d’un même projet donne de jolis conflits de dépendances. Entre le connecteur Spark – GCS qui utilise Guava 24 (quand on sait que Spark et Hadoop sont compatibles avec des versions 12 ou 14), les bibliothèques client comme BigTable qui s’amusent à shader des dépendances comme Netty, cela ne peut que causer des soucis ! Certains produits manquent aussi clairement de maturité : par exemple, il n’y a qu’à regarder le dépôt de Pub/Sub sur Mvn Repository : 14 nouvelles versions en bêta entre février et avril… difficile donc d’avoir une API stable dans ces conditions !

Nous avons donc eu une grosse phase de nettoyage du code, et surtout d’éclatement du projet en différents modules pour éviter à tout prix ces conflits de dépendances. C’est désormais stabilisé, mais ça a demandé pas mal de travail au niveau architecture et structure du code.

Autre point : le support de Google, qui est d’une efficacité variable. Cela peut être très rapide pour certaines questions théoriques (réseau dans notre cas), comme cela peut être très lent et fastidieux. Nous avons traîné de janvier à avril une issue sur Dataproc, avec 3 interlocuteurs différents, qui concernait des problèmes de stabilité sur les batchs de calcul des modèles, qui échouaient parfois lors de l’utilisation de nœuds préemptibles. Heureusement que les batchs ne sont pas « critiques » et que l’on peut se permettre dans certains cas de les décaler d’une journée.

C’est aussi le jeu des services managés : d’un côté très pratique car on peut démarrer un cluster Hadoop en 2 minutes, d’un autre côté il est très difficile de détecter un problème sans avoir la main sur l’infrastructure, et encore plus difficile de le corriger ! Mais d’un point de vue général, l’utilisation de services managés nous enlève quand même énormément de contraintes côté infrastructure. Du point de vue d’Early Birds, ils y sont très clairement gagnants.

Par curiosité, vous monitorez tout ça comment ?

Côté monitoring, nous utilisions New Relic, qui permettait principalement de pouvoir tracer tous les calls d’API et de voir combien de temps prenait un appel de bout en bout (à titre d’information, on ne dépasse que très rarement 50ms). Cependant, son utilisation chez Early Birds était plutôt réservée au monitoring des API NodeJS. Depuis peu, nous avons tout basculé sur Dynatrace, qui permet aussi de remonter des métriques sur la partie JVM.

Côté Google, Stackdriver (l’équivalent d’AWS CloudWatch chez Google) est aussi utilisé, dans une moindre mesure. En réalité, cela sert principalement à gérer les coûts, mais on pourrait probablement l’utiliser en complément de Dynatrace pour remonter des métriques basiques (nombre de machines démarrées sur GCE, trafic réseau, stockage utilisé, etc).

Un dernier mot Jonathan ?

En résumé, pour ce qui est des produits Google Cloud Platform, côté Data nous utilisons :

  • Dataproc pour lancer des clusters Hadoop à la volée et y lancer des batchs Spark
  • Cloud Storage pour le stockage des modèles
  • BigTable pour stocker toutes les infos clients et produits
  • Compute Engine pour nos instances de Serving (basé sur Container-Optimized OS)

Et côté team API :

  • Pub/Sub pour la mise à jour du référentiel
  • GKE pour orchestrer leurs services
  • Dataflow pour lancer des jobs d’import de référentiel (batch ou temps-réel), entre autres
  • Bigquery pour quelques statistiques

Merci Jonathan pour tous ces détails !

Conclusion

La Data dans le Cloud et GCP étant des thématiques en plein essor, vous en entendrez à nouveau parler très bientôt dans les colonnes de ce blog. Ce retour transparent d’un Xebian sur un cas client concret et sur ses aventures du quotidien est également un format que nous répéterons à l’avenir, stay tuned!

Retrouvez toutes les informations sur la DataFactory, sur le nouveau site.

KubeCon + CloudNativeCon EU 2018 – Take away

$
0
0

Après vous avoir présenté le détail de chaque journée (J0, J1, J2, J3) que j’ai pu vivre lors de cette KubeCon + CloudNativeCon EU 2018, je vous propose ici un résumé des choses à retenir de cette conférence pour ceux qui n’auraient pas le temps ou l’envie de lire tant de détails. Nous sommes quelques mois après l’évènement, les vidéos sont donc disponibles !

Les thèmes principaux

3 grand thèmes se sont dégagés lors de cette conférence :

  • Service Mesh, intimement lié à Kubernetes
  • Serverless, plus précisément les Functions-as-a-Service
  • Tracing, et Observabilité de manière générale

Ce sont les thèmes à suivre sur le devenir de l’écosystème Cloud Native ainsi que ce vers quoi notre industrie s’oriente.

Ces trois thèmes n’étant pas forcément les plus aisés à saisir du premier abord, j’ai depuis saisi l’opportunité du Paris Container Day 2018 pour les vulgariser :

 


Buzzwords at the Cloud Native era – Paris Container Day 2018 from Horgix

 

Je vous propose également dans cet article une brève présentation de chaque concept ainsi que des éléments à retenir suite à cette KubeCon + CloudNativeCon les concernant.

Service mesh

Concept

“A service mesh is a dedicated infrastructure layer for making service-to-service communication safe, fast, and reliable.

If you’re building a cloud native application, you need a service mesh.”

https://buoyant.io/2017/04/25/whats-a-service-mesh-and-why-do-i-need-one/

Les solutions de service mesh servent à inter-connecter des services à la manière d’un load balancer embarquant plus d’intelligence. Cette intelligence passe notamment par un plus grand contrôle sur le routing des requêtes, permettant de faciliter la mise en place de stratégies de déploiement (Blue/Green, Rolling upgrades, Canary release, …). Ces solutions étant vraiment pensées dans une optique Cloud Native, on retrouvera de l’observabilité moderne out-of-the-box sur chacune d’entre elles : métriques, traces, tout est présent dès le début, ce qui en fait un point idéal pour observer un système distribué dans la mesure où ce sont ces solutions de service mesh qui vont inter-connecter les composants.

A la KubeCon + CloudNativeCon

Lors de cette KubeCon + CloudNativeCon, un nombre impressionnant de talks et même une track entière y étaient dédiés !

Malgré quelques retours d’expérience d’utilisateurs directs, j’ai pu constater une plus grande part de présentations théoriques ou introductives, prouvant une fois de plus la jeunesse du sujet.

Technologies

Le concept de service mesh étant encore récent, on trouve un nombre restreint de solutions en constante évolution. En voici les quatre principales, toutes évoquées lors de ces quelques jours de conférence :

mesh

Les questions qui viennent rapidement à l’esprit (et que j’avais moi-même en allant à Copenhague) : quelle solution fait quoi ? Comment se distinguent-elles ?

  • Istio utilise Envoy. Istio est le control plane et gère des Envoy lancés en side-car des conteneurs dans chaque pod Kubernetes.
  • Conduit est une sorte de Linkerd v2. Depuis cette KubeCon + CloudNativeCon, ce devenir a d’ailleurs été officialisé et Conduit est en passe d’être mergé avec Linkerd.

Le choix se résumerait donc, pour un utilisateur ordinaire, à Conduit/Linkerdv2 ou Istio. Lequel choisir ?

  • Linkerd (et par incidence, Conduit prochainement) fait partie des projets gérés par la CNCF et est un acteur de première classe dans cet écosystème.
  • Istio est poussé par Google et se repose sur Envoy (venant lui aussi de rejoindre la CNCF), qui a déjà été mis à rude épreuve notamment chez Lyft. Matt Klein, ingénieur chez Lyft et créateur d’Envoy, a d’ailleurs réalisé une présentation sur les internals d’Envoy absolument passionnante lors du deuxième jour de cette conférence.

Pour une comparaison plus approfondie, notamment sur les points techniques, rendez-vous à la XebiCon’18 !

Serverless

Concept

Le Serverless est un sujet très vaste et dont la terminologie est ambiguë. Le terme est souvent utilisé pour parler des services « managés » mis à disposition par les fournisseurs de Cloud et qui nous abstraient toute notion de serveur. Mais ici, nous allons parler de Serverless computing, au sens « Functions-as-a-Service » (FaaS).

Le FaaS pourrait être vu comme du PaaS plus flexible, offrant la facilité de déploiement et l’abstraction de toute infrastructure tel un fournisseur de PaaS, mais de manière plus flexible et avec de l’instanciation à la demande. En effet, l’idée est de lancer un bout de code à la demande, littéralement. Une plateforme qui ne recevrait aucune requête ne coûtant ainsi que… $0. Bien sûr, la scalabilité de l’infrastructure dans son ensemble est toujours à prendre en compte dans un contexte on-premise, mais l’idée est vraiment de s’abstraire de toute notion de serveur, de VM ou même de conteneur.

A la KubeCon + CloudNativeCon

Deux points nous intéressent ici et ont été au cœur de cette KubeCon + CloudNativeCon :

  • Comment faire du FaaS on-premise
  • Comment interconnecter des fonctions chez différents fournisseurs de FaaS

Côté FaaS on-premise, j’ai pu constater une évolution fulgurante d’OpenWhisk, que nous avions testé il y a un an et demi à Xebia et qui nous avait laissé un sentiment mitigé. Force est de constater que la solution a su évoluer, et j’ai été bluffé par la démonstration et les détails de David Grove lors de son talk Apache OpenWhisk on Kubernetes: Building a Production-Ready Serverless Stack on and for Kubernetes, que je vous invite à regarder.

Pour le second, un fort accent a été mis sur deux points : CloudEvents, qui sera détaillé plus bas dans cet article, et la Serverless Event Gateway, qui a pour ambition d’être le point central interconnectant des fonctions chez différents fournisseurs via une intégration native. A noter, cette Serverless Event Gateway a été créée par les personnes derrière le Framework Serverless, bien connu des développeurs déployant déjà leur code sur AWS Lambda ou Google Cloud Functions. Parmi ces personnes on retrouve notamment Austen Collins, fondateur de Serverless, Inc., qui a présenté une démonstration magistrale de cette Event Gateway interconnectant pas moins de 11 providers de FaaS et que que je vous invite là encore à regarder.

Serverless Event Gateway,

Technologies

FaaS on-premise :

Inter-connexion :

serverless-misc

Tracing

Concept

Le Tracing est un des 3 piliers de l’observabilité moderne aux côtés du Logging et des Métriques. Tous trois ont été évoqués sans relâche lors de ces 3 jours de conférence, y compris dans les présentations dont ce n’était pas le sujet principal. Les nouveautés se concentrent quant à elles sur la partie Tracing.

L’idée derrière le Tracing est d’être en mesure de suivre une requête à travers un système distribué avec un maximum d’informations possible. L’objectif est double : préventif, en observant le système de bout en bout, et réactif, en offrant des informations en profondeur lorsque le moment est venu de débuguer un problème.

A la KubeCon + CloudNativeCon

Impossible durant ces trois jours de rater cette tendance : que ce soit les end-users avec leurs retours d’expérience incluant immanquablement du Tracing, les présentations d’outils intégrant nativement la remontée de traces au format OpenTracing, ou encore les live démo d’outils de tracing eux-mêmes, chaque track y a eu droit ! Rappelons que le Tracing évolue de plus en plus chez les différents fournisseurs de Cloud, que ce soit AWS X-Ray ou Google Stackdriver.

En revanche, la ligne semble très mince entre OpenTracing et OpenCensus, lui aussi évoqué lors de cette conférence. OpenTracing est mené par la CNCF tandis qu’OpenCensus provient directement de Google ; une confrontation qui finira en la disparition de l’un, ou en une totale interopérabilité au détriment du moins populaire des deux.

Technologies

tracing

Les annonces

Cette conférence fut riche en annonces, étant le moment idéal pour présenter de nouveaux produits ou de nouvelles fonctionnalités. En voici les 3 principales à retenir selon moi.

CloudEvents

Présenté sur scène lors d’une Keynote, CloudEvents (introduit sous le nom d’OpenEvents en 2017) est désormais officiel et se targue de vouloir standardiser le format des évènements émis et reçus par les systèmes modernes. Nous avons de plus en plus de composants qui se notifient les uns les autres, à travers différentes applications, différents fournisseurs de cloud, pour travailler de manière de plus en plus réactive. Afin de s’assurer de pouvoir créer des outils standards, cross-plateformes et pérennes, Cloud Events se veut être le standard qui définira le format de tels évènements ; sa réussite dépendra donc probablement très grandement de son adoption par des acteurs tels Amazon et Google pour les évènements émis par les services d’AWS et GCP.

Une question reste cependant en suspend après cette KubeCon + CloudNativeCon : quel est l’avenir d’OpenMessaging, projet supporté par la Linux Foundation et qui semble faire la même promesse ?

Serverless Event Gateway « as a service » via Azure Cloud Grid

Déjà annoncé en 2017 mais avec relativement peu d’intérêt, Serverless Event Gateway est désormais disponible sur Azure, le cloud de Microsoft. En effet, Austen Collins, dont nous parlions plus haut dans cet article, a annoncé lors de cette Kubecon que la Serverless Event Gateway est désormais l’épine dorsale d’Azure Cloud Grid. Il ne reste plus qu’à espérer que ce regain de popularité mènera à l’avènement de Cloud Events chez Azure et chez leurs concurrents !

gVisor

Google a annoncé gVisor lors de cette KubeCon + CloudNativeCon, tentant de prendre le meilleur de la conteneurisation et de la virtualisation : la rapidité et légèreté du premier, et l’isolation du second. Un article de blog a d’ailleurs été publié en même temps que l’annonce en keynote, et présente plus en détails leur vision de la conteneurisation et de la virtualisation.

Vidéos à regarder (avis personnel)

Pour conclure ce take away, je vous propose de vous plonger dans l’ambiance de cette KubeCon + CloudNative en regardant par vous même quatre des talks qui y étaient proposés. Ceux-ci ont été sélectionnés de manière aussi objective que possible, mais sont malgré tout classés selon mon ordre de préférence.

3 de ces 4 vidéos sont des keynotes, et sont donc accessibles tout en couvrant les points vraiment indispensables de cette KubeCon + CloudNativeCon.

Keynote: Switching Horses Midstream: The Challenges of Migrating 150+ Microservices to Kubernetes – Sarah Wells, Technical Director for Operations and Reliability, Financial Times :

The Serverless and Event-Driven Future – Austen Collins, Serverless :

Conclusion

Pour conclure, j’aimerais mentionner un point crucial à tous les thèmes abordés dans ce take-away et pourtant souvent passé sous silence : les merveilles de l’intégration continue. De tels projets ne pourraient voir le jour à une telle échelle sans une CI digne de ce nom, validant chaque outil chez de multiples providers et nous assurant, à nous end-users, des projets stables et en lesquels nous pouvons avoir une telle confiance. Dan Kohn, le directeur exécutif de la CNCF, le rappelait très bien en ouverture de l’évènement, et force est de constater suite à ces trois jours qu’il ne se trompait pas.

Je vous laisse en compagnie du Landscape de la CNCF ainsi que de leur Trail map, qui vous amèneront sans aucun doute à une réflexion éclairée en attendant la prochaine KubeCon & CloudNativeCon.

 

DevOps REX 2018

$
0
0

Il y a un mois se tenait la 3e édition de DevOps REX, conférence parisienne prenant place au Grand REX et dont l’intégralité des présentations sont des retours d’expérience autour des thématiques DevOps. En prime, le logo est un T-Rex, parachevant la métaphore filée des « REX » !

Disclaimer

Ayant participé à DevOps REX en tant que speaker l’année dernière en compagnie d’Anna Dao, présentant un retour d’expérience au sujet d’une mission chez Photobox, j’ai cette année eu l’honneur d’être sollicité pour participer à l’organisation de l’évènement.

Je vais ici vous présenter l’édition de cette année d’un point de vue participant et non comme organisateur, bien qu’évidemment teinté de cette expérience.

De nouveaux points de vue à découvrir d’urgence

On pourrait penser que les talks « DevOps » tournent rapidement en rond. En effet, une fois les piliers CALMS assimilés, il devient évident que les axes clés tournent autour de la culture et de l’humain, amenant parfois certaines personnes à résumer DevOps par « Apéro ».

Je ne les en blâmerai en pas, l’Apéro résumant bien souvent ce côté humain, et ayant moi même eu l’opportunité l’année dernière de dire devant 800 personnes « Allez boire des bières, je vous assure, ça soude les gens ».

Et pourtant, malgré ce portrait de DevOps qui peut sembler sombre et restrictif… DevOps REX continue de surprendre par sa qualité. Certains talks ont su sortir avec brio de ces sentiers battus, dont les suivants :

  • Les astreintes chez Teads
  • DevSecOps à Thales
  • DevOps dans une relation contractuelle pour Oxalide

Les astreintes chez Teads

Lorsqu’on parle de DevOps et de rapprochement des Devs et des Ops, on en arrive souvent à la question fatidique : « Qui gère les astreintes ? ».

Partons du principe que tous les incidents « bénins » sont détectés et corrigés automatiquement (merci les systèmes résilients à base de healthchecks, de métriques et d’orchestration !). Les seuls cas susceptibles de nécessiter le réveil d’une personne sont des problèmes inattendus, en profondeur, pouvant nécessiter aussi bien un développeur de l’application concernée qu’un SRE capable de déboguer les plus bas niveaux d’un système.

Teads nous propose dans ce contexte leur expérience sur la taille des équipes et leur composition : comment s’assurer que les personnes d’astreintes auront toutes les clés en main pour résoudre les potentiels incidents, et ce de manière sereine ? Partant d’une équipe d’astreinte composée en tout et pour tout du CTO, ce dernier nous présente le chemin de Teads vers une équipe composée d’Ops et de Dev, avec des binômes d’astreinte, pour un total de 12 personnes afin d’assurer une rotation qui ne soit ni stressante ni épuisante pour les concernés.

DevSecOps à Thales

En tant que consultant passant une bonne partie de mon temps à évangéliser le mouvement DevOps chez nos clients, mes poils ont pris l’habitude de se hérisser à l’audition du mot « DevSecOps », souvent dégainé à tort et à travers (tout comme « DevOps » au final).

Les orateurs de Thales ont présenté le premier talk parlant de DevSecOps qui ne me laisse pas cette désagréable sensation de bullshit. L’approche de Thales est l’incarnation de la vision de la sécurité que je rêve de voir appliquée par tout le monde : une vision rationnelle, approchant la sécurité comme de la gestion de risque (passant parfois par l’acceptation).

Leur vision de DevSecOps présentée passe, tout comme le mouvement DevOps, par l’humain et la prise en compte des aspects sécurité dès le début de la chaîne et par tous les acteurs, et non uniquement par un groupe de personnes tierces en bout de chaîne.

En bref, un sans faute à voir dès maintenant pour une approche moderne et sensée de la sécurité en 2018.

DevOps dans une relation contractuelle pour Oxalide

La concrétisation du mouvement DevOps passant par une collaboration étroite et une culture commune, celle-ci est bien souvent opposée à des relations contractuelles de type client/fournisseur. Chez Xebia, nous avons créé le contrat agile pour travailler avec nos clients dans un esprit de partenariat plutôt que de rapport de forces.

Mais qu’en est-il pour les entreprises n’ayant pas la capacité de gérer leur infrastructure et souhaitant la déléguer à un infogérant ? Comment aborder ce mouvement DevOps dans une relation entre 2 entreprises ?

Ludovic Piot, que vous avez très certainement déjà croisé si vous fréquentez les meetups parisiens, sait de quoi il parle niveau infogérance et services : il présente un talk au nom d’Oxalide tout en étant employé par Soat et en portant un t-shirt Clever Cloud !

Et les autres talks ?

Les autres présentations étaient les suivantes :

En bonus, une table ronde a été organisée avec quelques anciens speakers :

Une discussion intéressante mais de laquelle il est compliqué de tirer une conclusion autre que « la mise en place d’une organisation DevOps est différente pour chacun ».

Take away

DevOps dans les grandes organisations n’est désormais plus un mythe. BNP Paribas, le Crédit Mutuel Arkea, Thales… beaucoup de grands noms auxquels on ne penserait pas forcément en songeant à DevOps et qui semblent s’être appropriés le mouvement DevOps à leur échelle sur certains périmètres.

Le mouvement DevOps s’impose également comme une évolution sensée dans les environnements les plus hostiles : sécurité, relation contractuelle ou encore astreintes.

Par ailleurs, sachez que vous pouvez retrouver toutes les photos, les vidéos et les slides pour revivre cet événement comme si vous y étiez !

Bonus

Je ne pourrais finir cet article sans vous inciter avec extrêmement d’insistance à regarder ce court talk ayant conclu DevOps REX sur un sujet tout autre : les femmes dans la tech.

Le sujet revient régulièrement sur la table partout : meetups, discussions entre collègues, articles… Et pourtant, malgré cette omniprésence, cette présentation est la plus brillante que j’ai vue sur le sujet, abordant celui-ci sous un angle qui ne soit ni moralisateur, ni pessimiste, mais plutôt tout le contraire : plein d’espoir et de bon sens.

À l’année prochaine pour une nouvelle édition de DevOps REX !

Revue de Presse

$
0
0

La revue de presse hebdomadaire des technologies Big Data, DevOps et Web, architectures Java et mobilité dans des environnements agiles, proposée par Xebia.

Agilité

Et les tests, on y pense ?

Dans les projets agiles, les équipes ont tendance à se focaliser sur le delivery au détriment de la qualité. Cependant nous le savons tous, la qualité n’est pas négociable.

Afin de ne pas accumuler trop de dette technique il est important de garder en tête les différents types de tests et de les appliquer sans compromis.

Dans cette article, Mahfoud Amiour nous propose un acronyme, le fameux PURIFF, plutôt ingénieux et approprié pour se souvenir facilement des différents types de tests à faire dans une équipe agile.

N’oublions pas les tests End to End, on se retrouve alors avec PURIFFE ou EPURIFF.

SAFe est un cheval de troie…

Une réflexion de Chris Matt, agiliste de renom et grand contributeur du behavior driven development sur une phrase souvent entendu et que j’ai du personnellement utilisé à l’occasion: « SAFe est un cheval de Troie pour faire rentrer l’agilité dans certaines organisations. » Chris Matt prend la formulation a revers en expliquant que le Troie n’est pas l’organisation… Mais les agilistes présents dans celle-ci! En fait SAFe est le cheval qui fait entrer les cabinets de conseil traditionnels dans le monde des transformations agiles, sans en avoir l’expérience. Tel est pris qui croyait prendre…

Quelques échanges intéressants sur twitter suite à ce post. Au delà du SAFe Bashing habituel, les échanges traitent du fait qu’il faut avoir un mindset agile pour faire de SAFe un outil qui se retourne contre l’agilité.

DevOps

Toujours du « run » dans les équipes DevOps

SolarWinds a interrogé 336 responsables techniques – y compris des praticiens du devops. Dans cet article de Zdnet vous trouverez les résultats du sondage et la répartition des taches dans les équipes traditionnelles et celles qui se disent devops. Il semble comme prévu que les équipe devops sont plus orientées produits.

Data

Utiliser quel algorithme de machine learning, et dans quel cas.

Le machine learning est l’un des buzzworld les plus importants du moment, mais désigne en réalité de nombreux outils et technologies différentes, chacune répondant à des besoins différents, et nécessitant un certain nombre d’adaptations et de réglages pour répondre efficacement à un besoin donné.

Roger Huang nous présente, dans son dernier article (et ces nombreux sous-articles !), les différents types d’algorithmes de machines learning, comment utiliser et pour quel cas les choisir.

Le #XKE sketchnoté (numérique)

$
0
0

Le XKE est une journée d’échange entre Xebians, réunis une fois par mois pour parler de sujets techniques, d’agilité et plus encore. C’est une tradition qui dure depuis très longtemps à Xebia (j’ai pu remonter jusqu’à 11 ans de blog) et que j’apprécie.

Pour le XKE de mars nous avions rendez-vous dans les locaux de Publicis Sapient, une première !

Je gribouille depuis l’année dernière et ma découverte du sketchnoting. C’est une pratique alliant la prise de notes et le croquis : faire concis, dessiner et le faire pour soi. Je trouve qu’il a largement augmenté ma faculté de concentration lors de la prise de notes (mais aussi ma fatigue lors des présentations… On ne peut pas tout avoir…).

Cet article présente les outils que j’utilise (en ce moment) pour sketchnoter et trois gribouilles que j’ai faites parmi les sujets que j’ai suivis depuis le dernier XKE.

Les outils

J’ai commencé très récemment le sketchnote en numérique (directement sur l’ordinateur). Pour cela, j’utilise un écran tactile avec un stylet. Le principal objectif que je voulais avoir avec une version numérique est la facilité d’édition, tout en ayant la possibilité de partager rapidement mes écrits. Pouvoir sketchnoter directement sur l’ordinateur, éditer et avoir la possibilité de sauvegarder une version qui s’édite facilement étaient donc mes critères principaux dans le choix de mes outils.

J’utilise en ce moment le stylet Surface Pen de Microsoft avec la Surface Pro et le logiciel Bamboo Paper de Wacom. Ils répondent à tous mes critères.

Il faut savoir maîtriser l’outil, ce qui demande beaucoup d’entraînement et de temps. Pour le coup, j’ai encore pas mal d’entraînement à faire, le stylet diffère un peu de l’écriture manuscrite dont j’avais plus l’habitude.

Les sketchnotes

Passons au vif du sujet. Voici trois sketchnotes rangés par ordre chronologique.

Cloud Native Cloud par Alexis Chotard. Parfois, il est difficile de mettre des images sur des termes très techniques. Il faut penser à des associations d’idées/images dans sa tête, déjà préformatées. Saisir l’idée principale n’est pas toujours simple non plus. Il ne faut pas avoir peur du vide sur sa feuille et penser à réorganiser l’ensemble à la fin (plus facile avec l’outil numérique justement).

Micro Frontend sur le projet RED par Romain Lafourcade. Quand on sketchnote en live, il s’agit aussi de savoir synthétiser l’information quand le flux est très important. Il faut retenir l’essentiel avant que la personne elle-même ne le fasse en conclusion (ce qui parfois n’est pas le cas d’ailleurs). Même problématique pour les termes techniques aussi : je m’avance un peu mais le sketchnoting sur des sujets informatiques est un joli challenge de ce côté.

Processus de communication: une sensibilitation par Laurent Dussault. Sur la communication, je pensais très rapidement aux bulles de BD, un peu comme pour raconter une histoire. Synthétiser n’est pas facile, il y a beaucoup de mots-clés non techniques qui peuvent aussi ressortir. Cette présentation sur la communication faisait appel à beaucoup de représentations visuelles que je n’ai pas exploité.

Le sketchnote, c’est bon pour la santé

Alors, cassez-vous les dents dessus si ça vous tente ! Vous pouvez déjà essayer de sketchnoter en prenant des notes qui implique des changements de styles d’écriture, puis peu à peu en rajoutant des symboles, et enfin en s’entraînant à organiser l’information. Et toujours dans l’optique de synthétiser. Vous pouvez commencer par lire le livre référence de Mike Rohde, Initiation au sketchnote pour plus d’informations. Et pour tout ce qui a trait au dessin en entreprise, l’excellent Penser, dessiner, révéler ! de Etienne Appert. C’est une chance de pouvoir s’entraîner une fois par mois avec les XKE, en plus de tous les autres médias disponibles sur internet !

Viewing all 255 articles
Browse latest View live