Le tour de Varnish en 30 minutes

… En fait, cela aurait dû être “le tour de Varnish en 80 jours” … cela s’est avéré trop long, nous nous sommes donc repliés sur 30 minutes !

Varnish, j’en entends parler régulièrement, surtout quand il s’agit de gros, de très gros sites. Mais jusqu’à présent, je ne savais pas vraiment ce que c’était. La présentation que nous a fait Dridi Boukelmoune chez Zenika nous a éclairé sur la bête.

Le tour de Varnish en 30 minutes

Varnish, c’est quoi ?

C’est un cache HTTP. Plus exactement un reverse proxy cache HTTP. Ce n’est ni le premier, ni le seul. Pourquoi donc l’évoquer ? Comme je l’ai dit, on trouve Varnish dans les grosses, les très grosses infrastructures Internet. Car outre sa remarquable stabilité, ce sont ses performances très élevées qui ont fait la réputation de Varnish. Bien qu’issue de Varnish Software (la partie commerciale de Varnish), cette petite Vidéo fait un bon résumé de la situation.

Bref, Varnish, c’est un cache HTTP très performant car travaillant au plus près de la pile TCP/IP. 

L'architecture de Varnish

Pas d’IHM sexy pour configurer la bête. Varnish est fait pour les admmins sys barbus et se configure à l’aide d’un DSL : le VCL.

Configurer Varnish avec VCL

VCL c’est plus qu’un script de configuration, c’est un DSL qui est ensuite compilé en C. Pré-compilé, devrais-je dire, car bien sûr ce code C est lui même compilé ! Nous l’avons évoqué, Varnish est focalisé sur la performance, et on ne fait pas de choses performantes avec des mécanismes dynamiques ! Malgré tout, le changement de configuration peut être opéré à chaud.

Time to live

De base, Varnish gère son cache en TTL, mais on peut y inclure certaines variantes:

  • En fonction de l’encoding
  • En fonction du navigateur utilisé
  • En fonction de la compression

Les règles par défaut

Tout ne doit pas aller en cache ! Le VCL permet d’ajuster ces règles, mais par défaut Varnish stipule que :

  • Il n’y a pas de mise en cache d’une ressource si elle est liée à un cookie.
  • Pas de mise en cache si il y a des informations d’authentification.
  • Seules les requêtes GET et HEAD sont mises en cache. Les requêtes POST ne le sont pas.
  • Varnish gère les “variantes” en s’appuyant sur l’en-tête HTTP vary qui permet d’indiquer explicitement un élément à associer à la décision de cache.

 Invalidation ou prolongation

Au-delà de la règle de fonctionnement de Varnish, qu’il s’agisse des règles par défaut ou d’une configuration qui s’en écarte, il est possible d’exclure des ressources du cache à l’aide de plusieurs mécanismes.

L’invalidation des ressources est possible, que ce soit sur une base individuelle ou suivant une expression régulière. Elle peut être opérée en ligne de commande ou via le VCL.

L’option la plus radicale d’invalidation est la purge. La ressource est retirée du cache, il n’y a plus moyen de la ressusciter une fois cela fait.

Varnish possède aussi une notion de ban. Il permet d’invalider un objet du cache, mais sans en entrainer son nettoyage.

A contrario on peut prolonger une ressource au-delà de ce que prévoit initialement les règles de Varnish,  avec la notion de “grâce” qui permet de prolonger un contenu à priori périmé. Ce mécanisme peut s’avérer utile en cas de défaillance du back-end.

Mais comment ça fonctionne le VCL ?

Ecrire du VCL, c’est presqu’écrire du C (c’est probablement pour cela que c’est facile à compiler…). Varnish propose un certains nombre de “looks”, des template méthodes qui sont appelées par Varnish si elles sont implémentées. Il suffit alors d’implémenter la fonction en question pour s’insérer dans le cycle de vie du cache, et d’y utiliser les fonctions que Varnish met à notre disposition pour bannir un objet, par exemple.

Bien sûr, il faut pour cela connaitre le cycle de vie des objets

Varnish VCL

Et voici ce à quoi peut ressembler un bout de configuration Varnish :

sub vcl_recv {
        if (req.request == "PURGE") {
                if (!client.ip ~ purgers) {
                        error 405 "Method not allowed";
                }
                return (lookup);
        }
}

Comme on peut l’imaginer, cet élément de configuration vient “hooker” l’état recv, en suivant le pattern “template method”.

Au-delà de la configuration

Director : Varnish fait du load balancing !

Enfin, pas tout à fait du load balancing, mais presque !

Un director est un groupe de back-ends clusterisés pour lesquels on établit une stratégie de redirection. Le but premier n’est pas de faire du load balancing, mais plutôt de maximiser les chances d’obtenir une ressource.

Maintenant, on peut aussi s’en servir pour faire du load balancing !

Etendre Varnish avec les modules

Outre la possibilité qu’offre le VCL d’y introduire du code en C, la méthode la plus élégante d’étendre Varnish est d’utiliser les modules, ce qui est possible depuis la version 3 de l’outil.

Dridi a d’ailleurs écrit un article (sinon l’article de référence) sur ce sujet, sur le Blog de Zenika.

Administrer l’outil

La console

On n’est pas chez les touristes. Ici de base, l’administration c’est la ligne de commande avec varnishadm ! Certaines des opérations que l’on peut faire avec sont même scriptables pour être intégrées dans un sh. Du classique pour les admins, donc.

Le bundle commercial de Varnish propose la Vanish Administration Console (VAC) qui est un outil Web. Mais comme toujours dans ces cas là, on ne peut quand même faire l’impasse sur la ligne de commande.

La gestion des logs

C’est un sujet d’attention particulier. Le loge peuvent rapidement ralentir terriblement les traitements. Varnish a pris une option radicale à cet égard : les logs sont en mémoire et sont en binaire ! Et Varnish propose un ensemble d’outils pour y accéder et les exploiter (varnishlog, varnishncsa)

Vers l’infini et au-delà…

En résumé

Le point essentiel, celui qui fait choisir Varnish, c’est qu’il s’agit d’un cache HTTP ultra-performant à même de décharger efficacement le back-end dans le cas de sites à très fort trafic. C’est LE cas d’utilisation. Pour un site n’ayant pas un très fort trafic, Varnish sera de très peu (et plus probablement d’aucun) intérêt.

Varnish en 5 étapes

Voici la démarche condensée de mise en oeuvre que nous propose Dridi :

  1. Cacher le contenu statique
  2. Configurer la compression
  3. Cacher le contenu semi-statique
  4. Automatiser l’invalidation
  5. Améliorer le back-end

Les autres fonctions de Varnish

Bien que sa fonction essentielle soir le cache HTTP, on ne peut ignorer ce que Varnish sait faire d’autre :

  • Gérer le streaming
  • Utiliser des ACL
  • Structurer des architectures multi-tenant.
  • Tester son architecture, c’est à dire en pratique tester sa configuration VCL, avec le framework de test qui fait partie de la distribution.
  • Gérer le Edge Side Include (ESI)

Bien entendu, nous l’avons évoqué, Varnish peut servir de reverse proxy, bien que ce ne soit pas sa vocation première.

Merci Dridi !

Dridi n’est pas seulement un excellent collègue chez Zenika, son intérêt et sa maitrise croissante sur Varnish l’ont amené à en devenir un contributeur ! Il est entre autre chose l’auteur du module QueryString.

La présentation dont Dridi nous a gratifié fera partie de sa présentation des petits déjeunes planifiés sur Lyon et Paris, consacrés à Varnish. J’avoue que cette présentation en 30 minutes (30 minutes et 18 secondes, précisément) était un peu ardue pour moi, car faite un peu sans concession. C’est mon seul reproche. Elle présente clairement les fonctions et possibilités de l’outil et l’enthousiasme, la passion devrais-je dire de Dridi pour ce projet open-source font beaucoup au plaisir que j’ai eu à l’écouter.

La présentation de Dridi est accessible ici.

En épilogue, je vous propose de jeter un coup d’oeil au manuel de référence de l’outil.

Moving on…

Il n’est pas dans mes habitudes de parler de moi dans ce blog. Je vais le faire aujourd’hui, ce qui fait de ce post un texte un peu particulier.

Parler de soi n’est pas s’apitoyer. Pas nécessairement, en tout cas pas ici. Si je compte bien, c’est la première fois que je me livre à l’exercice. Un post vraiment spécial pour moi, donc.

Je suis venu te dire que je m’en vais

J’ai passé 5 ans au bureau du Scrum User Group, un peu plus, même. J’y étais depuis sa création par Luc Legardeur, jusqu’à aujourd’hui sans interruption. Cela faisait de moi l’ancien du groupe.

Et cela se termine aujourd’hui.

Etre l’ancien ne me confère aucun statut particulier, et c’est tant mieux. Par contre il n’a jamais été concevable pour moi de figurer au bureau de l’association et de rester inactif. Je vois cela comme une forme d’escroquerie : “voyez, je suis au bureau du SUG, d’ailleurs je l’ai mis dans mon profil LinkedIn (ce que je n’ai jamais fait, d’ailleurs)”. Si c’est pour ne pas contribuer aux actions de l’association…

No empty Space

Quitter un engagement de si long terme me donne une petite impression de vide, d’inconfort. Même si je suis convaincu d’avoir pris la bonne décision, lâcher cette situation réconfortante ne s’est pas fait aisément. Je sais, vous allez me dire que ce n’est pas comme si j’avais quitté mon boulot. C’est vrai, mais quand même…

Là où cela me laisse perplexe, c’est que ce changement qui semble normal avec un regard d’agiliste, a exigé de me faire violence. La stabilité, j’aime bien. Mon petit confort, j’aime bien aussi. Aller vers l’inconnu, confronter une situation nouvelle : pas trop. Oh, une fois que c’est passé, que j’ai réussi de nouvelles chose, accompli une action dont je suis fier ou pris un râteau sans trop de dommages, ça va. Je suis même fier en fonction des cas (ou raisonnablement pas trop honteux).

Bref, suis-je vraiment un agiliste au fond de moi ? Est-ce le “moi conscient” qui a pris la barre, sachant que la démarche agile est la bonne, mais heurte le “moi inconscient” qui lui est bien frileux ? Je vais arrêter ici ma psychologie à 2 balles, je vous ai probablement perdu. En fait je me suis perdu moi-même.

Pourquoi ?

C’est le moment que vous attendez : celui où je vais cracher mon venin ! Cela ne va pas arriver. Non seulement cela ne serait pas correct, mais il n’y a pas lieu de le faire. Nous avons fait de nombreuses choses en 5 ans, et je suis fier d’y avoir participé. Il suffit de regarder le Meetup pour s’en rendre compte ! Que vais-je mettre spécialement au crédit de cette période ?

  • Les personnes que j’ai pu côtoyer au bureau. Plus spécialement, certaines dont j’étais plus proche. Mais je ne vais pas citer de noms.
  • Les rencontres. A l’occasion des soirées, des Scrum Day ou des Scrum Beers. Notre communauté est riche de personnes avides de connaissances et de réflexions.

Je garde un excellent souvenir non seulement des rencontres lors des évènements, mais aussi des échanges avec les orateurs lors des préparations. On m’a régulièrement remercié pour avoir géré les appels à orateurs. La vérité, c’est que ce fut chaque fois un plaisir !

Alors, pourquoi quitter ?

Pour des raisons purement égoïstes ! Oui, faire partie d’un groupe et s’entraider sont des valeurs importantes. Mais cela ne doit pas se faire au détriment de nos motivations personnelles. Surtout quand il s’agit de bénévolat. Pour moi, il s’agit de prendre du plaisir à faire ce que je fais, d’avoir envie d’abattre le travail qui est devant moi. C’est aussi comme cela que j’arrive à donner le meilleur de moi-même.

Pour diverses raisons, ce n’est plus le cas. Les choses ne vont pas mal, ni pour moi ni pour l’association. Mais cela ne corresponds pas à mes aspirations actuelles.

La page est donc tournée.

Moving on…

Mon départ du SUG ne va rien changer à l’association. Ce n’est pas un regret, mais une source de satisfaction. Bien faire son boulot, c’est apporter une contribution utile sans se rendre incontournable. Montrez-moi une personne dont l’absence met un groupe en péril, je vous présenterais une personne qui ne fait pas son boulot jusqu’au bout. Dans certains cas, c’est même de la malhonnêteté.

Pour peu qu’il y ait quelqu’un pour reprendre le harnais, tout continuera comme avant. Je l’escompte bien, car j’ai bien l’intention de me rendre aux évènements que l’association organisera !

Très bien, mais quelles sont mes prochaines étapes ?

Pour l’instant, je reste sur mes projets actuels :

  • Deux conférences à préparer, à Bruxelles très bientôt et fin Novembre à Grenoble. Deux sujets différents que j’inaugurerai. Ca fait du boulot.
  • L’adaptation Française de The People Scrum.

Tout cela sans compter ce Blog va bien m’occuper au moins jusqu’en Décembre. Et après ? Je ne sais pas. Je sais simplement qu’il est temps d’aller de l’avant.

Snoopy moving on

Note de lecture : Business Model, nouvelle génération par Alexander Osterwalder & Yves Pigneur

Note : 9 ; Une approche disruptive du marketing tourné vers l’innovation. Un contenu de qualité qui devrait faire partie du bagage de base. Book of the Year 2013 !

Voici un ouvrage qui ne ressemble à aucun autre. Contrairement à mon habitude, j’ai acheté la version française, sans qu’il n’y ait de raison à cela. Visiblement la qualité de la traduction ne compromet pas le contenu. Une bonne nouvelle ! La chose qui frappe le plus lorsque l’on feuillette ce livre au format très inhabituel est la mise en page sophistiquée où chaque page semble être une maquette. En fait, on a même l’impression d’être face à une plaquette marketing, ce qui fait craindre que le contenu ne soit pas à la hauteur des espérances…

Coupons court au suspens : cette crainte est infondée. En fait la mise en page accentue et supporte le contenu. Mais il est temps de parler de ce dernier. Le livre (je n’ose dire « le texte ») compte 280 pages regroupées en 5 parties principales.

La première partie constitue la fondation du reste, car elle présente l’outil de base de l’approche Business Model Generation : la canevas. Les auteurs suggèrent ainsi, plutôt que de produire de lourds et fastidieux business plans de produire un canevas sous forme de poster découpé en 9 aires. Les 50 pages de cette première partie sont consacrées à décrire ces 9 aires.

La seconde partie montre 5 typologies de business, exemples à l’appuie et montre comment ces typologies se présentent dans la canevas. Une excellent façon d’illustrer et comprendre l’utilisation du canevas.

La 3ème partie, « design » s’éloigne un peu du Canevas pour s’intéresser aux techniques d’innovation permettant la génération d’idées. Ce sont 6 techniques qui sont passées en revues au long de 70 pages consacrées à cette partie : connaissance du client, design thinking, story telling, prototypage, etc… Chacune de ces technique est un champs de connaissance à part entière, mais la façon dont chacun d’entre eux est traité en fait une excellente introduction.

40 pages (seulement, pourrait-on dire) sont consacrées à la stratégie qui constitue la quatrième partie du livre. On y couvre la compréhension des éléments environnementaux (forces du marché, forces du secteur, tendances et forces macro-économiques), l’évaluation des modèles économiques basée sur le SWOT, la stratégie « océan bleu » et le support de plusieurs modèles économiques. Finalement, beaucoup de matière en si peu d’espace !

La cinquième partie parle processus de création du modèle économique. Celui-ci se décline en 5 phases : mobiliser, comprendre, concevoir, déployer et gérer.

Il n’y a pas une forces, mais des forces dans ce livre, qui en font à mon avis une lecture incontournable.

La présentation du Business Model Canvas. Celui-ci a été depuis repris et adapté par Ash Maurya et présenté dans son ouvrage : Running Lean. A vous de voir celui qui vous paraît le plus adapté.

Chacune des parties aborde une face importante de la construction du business model et est elle-même structurée en différents volets articulés entre eux. C’est presque comme si l’on avait 5 livres en un seul ! De nombreux sujets sont traités et le livre en est une excellente introduction. Il est toujours possible de creuser chaque sujet avec des contenus spécialisés.

La construction graphique du livre avec sa mise en page sophistiquée en font un outil pédagogique d’une rare efficacité.

Le seul défaut que je vois à ce livre est la fragilité de sa reliure ! L’objet est donc hélas à manier avec précautions (et/ou à ne pas prêter à tout le monde). Cette réserve mise à part, la conclusion ne fait aucun doute : un livre à lire ! 

Business Model Genaration

Référence complète : Business Model, nouvelle génération – Alexander Osterwalder & Yves Pigneur – Pearson education France 2011 (V.O . : Business Model Generation ; John Wiley & sons 2010) – ISBN : 978-2-7440-6487-6

Business Model Nouvelle Génération: Une Guide Pour Visionnaires, Révolutionnaires Et Challengers


http://www.goodreads.com/book/add_to_books_widget_frame/2744064874?atmb_widget%5Bbutton%5D=atmb_widget_1.png&atmb_widget%5Bhide_friends%5D=on

Scrum Beer de Septembre

C’est la rentrée pour tout le monde, le SUG ne fait pas exception ! Nous nous sommes retrouvés au Café Livre : sur les 60 inscrits, 10 sont finalement venus. Qu’importe : les personnes présentes sont les bonnes personnes !

Scrum Beer de Septembre

Si vous ne connaissez pas le Café Livre, regardez simplement les photos : les murs sont littéralement couverts de livres ! On y trouve même celui d’Antonio Goncalves sur J2EE !

Scrum Beer de Septembre

Vous voulez un compte-rendu de cette soirée ? Eh bien, je ne l’ai jamais vraiment fait jusqu’ici et apparemment je ne vais commencer aujourd’hui. Il fallait venir !

Pour ma part, j’ai particulièrement apprécié les échanges sur les fondements de ce que nous cherchons à faire. C’est pour cela que je viens aux Scrum Beers, pour échanger avec des personnes qui e donnent à réfléchir.

Scrum Beer de Septembre

Calme et Cosy, un bon endroit pour commencer une année de Scrum.‘aurais l’occasion d’en reparler bientôt !

Agile Grenoble 2013

J’avais brièvement évoqué cet évènement cet été, pour vous suggérer de le noter dans vos agendas. Je serais présent cette année à la conférence où je présenterais un sujet. Teasing, teasing :

User stories, what else ?

Les users stories sont rapidement devenus la formulation convenue du besoin. Mais est-ce la seule ? Est-ce toujours la meilleure ? On dit que quand on a un marteau, tout ressemble à un clou. Notre communauté agile tend à ignorer ce qui vient d’ailleurs. Pourtant ce qu’on appelle l’ingénierie des exigences est un domaine riche de plusieurs décennies de connaissances et de techniques. Certaines peuvent être utilisées directement, d’autres doivent être adaptées ou peuvent servir d’inspiration.

Au cours de cette session, nous allons étudier ensemble plusieurs techniques et concepts du recueil des besoins et les regarder par le prisme de nos pratiques agiles. A l’aide d’exemples, nous verrons comment elles peuvent renforcer nos pratiques actuelles.

La conférence Agile Grenoble

Agile Grenoble existe 2008. C’est LA conférence incontournable sur l’agilité sur la région Rhone-Alpes et l’un des évènements majeurs consacré à l’agilité en France aux côtés d’Agile France et du Scrum Day (Je devrais sans doute ajouter Mix-IT, mais cet évènement n’est pas uniquement focalisé sur l’agilité). Avec 500 inscrits, elle se situe même devant les grandes manifestations Parisiennes en terme de fréquentation !

Zenika à la conférence

Zenika est fier de compter au nombre des sponsors de l’édition de cette année.

Mais il ne s’agit pas seulement de faire acte de présence, ce serait insuffisant.

Le leader en tant qu’hôte

En plus de ma session, Géry Derbier animera l’atelier “le leader en tant qu’hôte” auquel j’ai eu le plaisir de participer à Agile France cette année. En voici le teaser:

La métaphore du leader comme héros ne me satisfait bien évidemment pas. Celle du servant leadership ne me convient pas beaucoup plus d’autant que je l’ai rarement entendue traduite en français et je pense que dire à un exécutif qu’il doit devenir un serviteur est… source de résistance. Je propose d’explorer ensemble une métaphore ancienne proposée par Mark McKerkow, le leader en tant qu’hôte. Je propose d’étudier entre autres les aspects suivants : la notion d’hospitalité et le pouvoir de l’invitation, la co-création d’un moment comme une soirée ou une fête (en français hôte designe à la fois celui qui reçoit et l’invité), l’équilibre entre définir et participer, … Nous verrons ainsi comment utiliser, ou pas, cette métaphore dans la mise en oeuvre de l’agilité dans une organisation. Compte tenu du caractère co-créatif de la métaphore proposée tout le monde est concerné et bienvenu dans cette session.

See you soon !

Ce n’est d’ailleurs pas tout : Laurent Sarrazin présentera aussi une nouvelle session : Neurosciences pour transitions agiles. Une belle représentation du pôle agile de Zenika, donc.

Agile Grenoble 2013

Note de lecture : Succeeding with Open Source, par Bernard Golden

Note : 7 ; Quand le monde du développement organisé traditionnel rencontre le monde du développement communautaire.

Cet ouvrage traite de l’évaluation des prouits open source et de leur intégration au sein des systèmes d’information d’entreprise. Pour ce faire, l’auteur a développé une méthode d’évaluation (qu’il a appelé OSMM pour Open Source Maturity Model). Je dois dire que l’auteur m’a étonné, car venant de toute évidence d’un monde plus traditionnel, il n’essaye pas de comparer l’open source selon les canons des produits commerciaux. Au contraire, il apprécie leur qualité justement au regard de l’absence d’objectifs commerciaux qui amène ces développement à progresser d’avantage en terme de satisfaction des utilisateurs utôt qu’en terme d’attraction des clients potentiels qui entraine souvent une boulimie des fonctionalités qui se fait au détriement de la qualité. Au cours de ses périgrinations, l’auteur est devenu un fervent supporter de l’open source, tout e conservant un jugement serein, ce qui l’a entrainé à construire l’OSMM.

Le processus d’évaluation développé ici est bien adapté à l’open source, car il est simple. En effet, pourquoi développer un modèle compliqué, alors que celui-ci n’évitera pas l’évaluation technique ultérieure. En fait, ce processus a juste pour objet d’établir un « go / no go » basé sur des critères tels que achèvement du produit, disponibilité de support, de documentation et de formation, et de mettre ces informations en vis-à-vis du type d’utilisation que l’on désire en faire : expérimentation, production ou projet pilote. On ne reste pas dans la simple théorie, car chaque point développé est très concrètement illustré par l’évaluation d’un produit Open-source connu : JBoss. Il aurait certainement été intéressant d’y mettre en vis-à-vis un produit moins haut de game et moins abouti, bref plus dans la moyenne des produits open source disponibles, mais c’est très bien quand même.

J’ai bien aimé ce livre, sa simplicité et son pragmatisme. Le reproche le plus important que je lui ferai et de ne pas développer l’aspect communotaire (ou au moins l’évoquer), par lequel un utilisateur se doit quand il le peut, aider les autres par son expérience acquise. L’auteur a trop tendance à inciter les utilisateurs à se placer dans une position de pur consommateurs (pourqoi mutuliser les connaisances au sein de l’entreprise, alors que chaque utilisateur peut directement interroger (et donc poser plusieurs fois la même question) la mailing liste sans que cela ne coûte rien ? Ormis ce point, il est bien que ce livre participe à placer l’open source dans une optique d’utilisation d’entreprise et non plus comme des développements de hobystes.

succeeding-open-source

Référence complète : Succeeding with Open Source – Bernard Golden – Addison Wesley / IT series 2004 – ISBN: 0-321-26853-9

Succeeding with Open Source

http://www.goodreads.com/book/add_to_books_widget_frame/0321268539?atmb_widget%5Bbutton%5D=atmb_widget_1.png&atmb_widget%5Bhide_friends%5D=on