Tutorial: install Varnish + VMODs from sources & build a Paywall

Varnish Bunny

Varnish is well known as a highly effective proxy cache which is able to deal with all the HTTP request/response parts (URLs, headers, cookies, …) using VCL (Varnish Configuration Language). Moreover additional functionalities can also be embedded inside Varnish by using VMODs. This extends the VCL logic, which is kept simple for performance purposes, and so is quickly limited when we want to add some more complex logic in the code (loops, …). I have recently worked on a Paywall, and using Varnish as the server-side part of the Paywall seemed to me a good idea.

I’ve split this post into 2 main parts:

First, I will explain how to install Varnish 3.0.6 (for client’s compatibility reasons) from sources with 3 associated VMODs :

  • libvmod-curl (accesses HTTP and other resources from within VCL using libcurl),
  • libvmod-cookie (handles the content of the Cookie header without complex use of regular expressions)
  • and libvmod-redis (allows synchronous access to Redis from VCL).

I used an Ubuntu Trusty as the OS.

Second, I will explain the way I used all these tools to build a server-side Paywall, without implementing all the real rules obviously. Take this post more like an overall design and a proof of concept. The VCL configuration contains 2 simple rules based on an authorization service and a counter with a threshold. I will provide you throughout this post with a script I wrote to help you have a full environment ready for testing. This script configures Varnish with the rules I will explain below, installs an Apache server + mod PHP with some PHP scripts (providing content and authorization logic) and installs a Redis server. After executing this script on an Ubuntu Trusty (I used Vagrant + VirtualBox as the provider) you will be ready to play the way you want with the VCL and to bring your own logic to the proxy cache.

[...]

Cinématique Paywall & Profiling de l’internaute

Halte Péage

Un Paywall est un système permettant de décider d’afficher ou non le contenu d’un site soumis à souscription : les exemples classiques sont les sites de presse, les distributeurs de vidéos à la demande, … L’objectif est de bloquer l’accès aux internautes sans les autorisations nécessaires et souhaitant accéder à du contenu payant ou bien d’offrir un peu de ce contenu pour servir de teasing puis d’afficher le paywall au moment opportun pour inciter à l’achat. Il faut ensuite proposer la ou les offres adaptées, fonction du contenu et de l’internaute. On peut avoir :

  • du paiement par accès à un contenu,
  • un accès illimité à l’ensemble du site après un paiement unique,
  • une location sur une durée,
  • la souscription à un thème/pack sur une période donnée,
  • ou bien encore un système de pass.

Concernant l’internaute, il y a 2 grands cas :

  • soit l’internaute est authentifié sur le site et on parle plutôt d’utilisateur et la décision d’affichage ou non du paywall est plus simple car on a à disposition un ensemble d’informations sur lui que l’on a associées à son identifiant,
  • soit il ne l’est pas et il faut réussir à identifier le visiteur en l’affectant à un ou plusieurs segments afin de le qualifier. N’oublions pas qu’un visiteur peut également être un utilisateur qui ne s’est pas connecté à son compte.

Le cas de l’internaute non authentifié est fréquent pour des sites de presse payants par exemple. Cela est moins le cas pour de la vidéo à la demande où il faut au préalable s’inscrire au service (ou juste après avoir visionné un trailer).

[...]

Big Data avec Hadoop : comparatif Hive, Pig, Impala, Shark & Spark

Hive Integration in Shark

En matière de Big Data en général, et avec Hadoop en particulier, ce ne sont pas les noms de produits qui manquent : Hive, Pig, Impala, Shark, Spark, … Difficile de s’y retrouver dans ce zoo rempli de bêtes étranges. Après avoir creusé le sujet et effectué quelques tests, notamment sur EMR (Elastic Map Reduce d’AWS), voici un retour d’expérience sur quelques produits phares de l’écosystème Hadoop. Je vous propose donc un bref comparatif des technologies et quelques use-cases associés afin de vous donner les bases pour investiguer sur les produits qui vous intéressent.

Le but de cet article n’est pas d’expliquer l’architecture de Hadoop (1 & 2) ou de HDFS ou bien le fonctionnement de MapReduce. Il s’agit simplement de mettre en exergue les différences entre les produits précédemment cités afin que vous puissiez avancer dans la bonne direction en fonction de votre cas d’utilisation.

J’ai mis dans le tableau un certain nombre de critères qui me paraissent intéressants.

[...]

Décryptage CoreOS, Mesos & Kubernetes

Logo CoreOS Mesos

Bonjour à tous !

On me pose pas mal de questions en ce moment sur CoreOSApache MesosKubernetes et Docker et leurs relations : « C’est la même chose ? », « On peut les utiliser ensemble ? ». J’en profite donc pour faire un petit article de décryptage pour tout le monde sur ces différents produits si vous vous posez les même questions ! ;ob

Mesos et CoreOS

Apache Mesos et CoreOS remplissent des fonctionnalités équivalentes : ils permettent de manager un pool de ressources (serveurs) pour exécuter des tâches dessus de manière à voir ce pool comme si il s’agissait d’un serveur unique. On peut voir Mesos ou CoreOS comme des OS distribués.

On trouve donc des équivalences avec les OS (Linux) classiques :

[...]

Retour d’Expérience d’une Intégration Continue avec Docker/Gitlab/Jenkins

Logo Docker

J’ai récemment monté pour un client une Intégration Continue basée sur Docker, Gitlab et Jenkins. L’objectif était de proposer une Intégration Continue ayant pour couverture les postes de développement, la plateforme de build permettant de passer les tests unitaires, ainsi que la plateforme d’intégration à disposition du client et des responsables du projet à des fins de recette. La plateforme de production quant à elle a été montée sur des VMs (par opposition aux containers) dédiées en utilisant évidemment le contenu des Dockerfiles qui nous servait de modèle de configuration comme pourrait le faire un descripteur Puppet.

Gitlab et Jenkins ont été choisis car ce sont des valeurs sûres qui font bien le travail qui leur revient : gestion des sources avec une interface graphique efficace pour Gitlab (en fait c’est Github @home) et Jenkins pour l’ordonnancement des builds/tests unitaires et des déploiements. Le pari était plus sur l’utilisation de Docker et la manière de l’intégrer dans l’Intégration Continue afin d’en tirer le maximum d’avantages. Plusieurs objectifs ont donc été ciblés (et atteints) via l’utilisation de Docker, mais des difficultés ont également été rencontrées.

C’est ce que je vais vous présenter dans la suite de cet article.

[...]

AWS re:Invent 2013 (2.3/2) : Use Cases – Concept du monitoring à grande échelle avec S3 et EMR par Netflix

Logo Netflix

Cet article fait suite à la synthèse des sorties annoncées lors du summit AWS re:Invent 2013 qui s’est déroulé cette année du 12 au 15 Novembre à Las Vegas. Nous allons aborder dans ce dernier article de la série l’utilisation que Netflix fait de EMR et de S3 pour sa télémétrie, comprendre la collecte des métriques de ses infrastructures World Wide en un endroit centralisé pour les utiliser dans le cadre d’un monitoring.

Cet article se base sur une présentation très intéressante de Roy Rapoport (Netflix) qui nous a fait partager l’architecture de Atlas, leur outil maison de monitoring mis en place pour traiter le volume colossale d’informations générées par leur infrastructure, autant au niveau de la collecte que de l’exploitation (analyse). L’un des points cruciaux est de pouvoir avoir un accès rapide à ces millions de métriques, à savoir une faible latence entre la génération de la métrique dans l’infrastructure distribuée et sa mise à disposition sur de multiples dimensions dans l’outil de monitoring centralisé.

Vous pourrez retrouvez également les autres articles de cette série consacrée au retour d’expérience du summit AWS en suivant ces liens Optimisation de son cluster EMR (Elastic MapReduce)Créer son NAS sur AWS : NFS, CIFS & GFS (GlusterFS) ou bien encore Accélérer la délivrance de son contenu via CloudFront et Route 53. C’est parti pour l’article 2.3 de la série ! :o)

[...]

AWS re:Invent 2013 (2.2/2) : Use Cases – Accélérer la délivrance de son contenu via CloudFront et Route 53

Waterfall Graphs

Cet article fait suite à la synthèse des sorties annoncées lors du summit AWS re:Invent 2013 qui s’est déroulé cette année du 12 au 15 Novembre à Las Vegas. Nous allons aborder dans cet article l’accélération de la délivrance du contenu d’un site via CloudFront et Route 53. Cet article va expliquer les mécanismes mis en place au niveau de CloudFront pour optimiser la vitesse de récupération du contenu depuis la source et de distribution vers le navigateur, voire même comment améliorer l’envoi de données depuis un formulaire vers votre serveur Web en passant par CloudFront qui sert de relai. Nous verrons également quels contenus sont éligibles à être cachés.

Cet article se base sur une présentation très intéressante de Kalyanaraman Prasad (AWS) et Parviz Deyhim (AWS), de même que les illustrations qui en sont tirées. Je diverge des avis présentés durant la session sur 2 points que je signalerai dans l’article.

Vous pourrez retrouvez également les autres articles de cette série consacrée au retour d’expérience du summit AWS en suivant ces liens Optimisation de son cluster EMR (Elastic MapReduce)Créer son NAS sur AWS : NFS, CIFS & GFS (GlusterFS) ou bien encore Concept du monitoring à grande échelle avec S3 et EMR par Netflix. C’est parti pour l’article 2.2 de la série ! :o)

[...]

AWS re:Invent 2013 (2.1/2) : Use Cases – Créer son NAS sur AWS : NFS, CIFS & GFS (GlusterFS)

NAS sur AWS : NFS sous Linux

Cet article fait suite à la synthèse des sorties annoncées lors du summit AWS re:Invent 2013 qui s’est déroulé cette année du 12 au 15 Novembre à Las Vegas. Nous allons aborder dans cet article la mise en place d’un NAS (Network Attached Storage) sur une infrastructure AWS (VPC ou EC2 standalone) afin de partager des fichiers via le réseau selon les protocoles NFS (Network File System) pour Unix et CIFS (Common Internet File System) pour Windows. Nous mettrons dans ce cadre un cluster inter-AZs (Availability Zone/Zone d’Accessibilité) basé sur PaceMaker et DRBD. Nous aborderons une alternative basée sur GFS (GlusterFS) afin de mettre à disposition des instances EC2 de votre infrastructure vos fichiers de manière transparente et distribuée. Cet article se base sur une présentation très intéressante de Craig Carl (AWS).

Vous pourrez retrouvez également les autres articles de cette série consacrée au retour d’expérience du summit AWS en suivant ces liens Optimisation de son cluster EMR (Elastic MapReduce)Accélérer la délivrance de son contenu via CloudFront et Route 53 ou bien encore Concept du monitoring à grande échelle avec S3 et EMR par Netflix. C’est parti pour l’article 2.1 de la série ! :o)

[...]

AWS re:Invent 2013 (2.0/2) : Use Cases – Optimisation de son cluster EMR

Logo Hadoop

Cet article fait suite à la synthèse des sorties annoncées lors du summit AWS re:Invent 2013 qui s’est déroulé cette année du 12 au 15 Novembre à Las Vegas. Je me propose, dans cet article, de vous exposer quelques bonnes pratiques et retours intéressants glanés durant les sessions et échanges au niveau des stands du Central : ces retours supplémentaires portent sur des sujets bien précis comme Créer son NAS sur AWS : NFS, CIFS & GFS (GlusterFS)Optimisation de son cluster EMR (Elastic MapReduce)Accélérer la délivrance de son contenu via CloudFront et Route 53 ou bien encore Concept du monitoring à grande échelle avec S3 et EMR par Netflix.

Comme bien souvent, j’ai été un peu optimiste de vouloir faire un seul et unique article sur ces sujets. Comme il y a pas mal de choses à dire, je vais faire un article pour chacun des 4 retours afin de les exposer plus en détail, ce sera d’autant plus intéressant… Enfin je l’espère ! :o)

[...]

AWS re:Invent 2013 (1/2) : News

AWS re:Invent 2013

Le summit AWS re:Invent 2013 s’est déroulé cette année du 12 au 15 Novembre à Las Vegas. Ces 4 jours ont été l’occasion d’assister à la mise à disposition de plusieurs nouveaux services (Amazon Kinesis, Amazon CloudTrail, Amazon WorkSpaces et Amazon AppStream), de nouvelles fonctionnalités majeures dans des services existants (support du moteur PostgreSQL dans RDS, Cross Region Read-replicas pour RDS, Global Secondary Indexes dans DynamoDB, Identity Federation avec SAML 2.0 et Redshift Snapshot Copy) et pour finir de nouveaux types d’instances EC2 (c3 dans la gamme super computing et i2 dans la gamme disques hautes performances).

Le summit a été également l’occasion d’assister à de nombreuses sessions proposées par les équipes AWS, par des clients ou bien par des partenaires présentant leurs solutions basées sur AWS. Il a également été possible d’échanger sur les stands du Central avec les éditeurs de solutions et intégrateurs gravitant autour de l’univers AWS.

Je me propose, dans cet article, de revenir sur les nouveautés dévoilées durant ce summit AWS re:Invent 2013. Je proposerai, dans un ou plusieurs articles ultérieurs, quelques bonnes pratiques et retours intéressants glanés durant les sessions et échanges au niveau des stands du Central : ces retours supplémentaires porteront sur des sujets bien précis comme Créer son NAS sur AWS : NFS, CIFS & GFS (GlusterFS), Optimisation de son cluster EMR (Elastic MapReduce)Accélérer la délivrance de son contenu via CloudFront et Route 53 ou bien encore Concept du monitoring à grande échelle avec S3 et EMR par Netflix.

[...]