SlideShare une entreprise Scribd logo
Varnish & blue/green
deployments
$ whoami Oxalide
Conseil, Infogérance & Hébergement
Media / SaaS / E-commerce
Varnish everywhere
Consultant
Architecture &
DevOps
Théo Chamley
theo.ch@mley.fr
@MrTrustor
blue/green deployments
Déploiement blue/green
• Zero-downtime deployment
• Facilite le rollback
• Facilite le canary-testing
App v1 App v2
Load Balancer
Exemple avec Tomcat
App v1 App v2
Tomcat Parallel Deployment
Catalina
Sessions déjà
existantes
Nouvelles
sessions
Avec Varnish
Et avec Varnish ?
Mix du cache des 2 versions
→ Solution ? Canary-testing ?
App v1 App v2
Varnish
Cache app v1
Cache app v2
Ébauche de solution
• Séparation du cache entre les
versions → vcl_hash
• Varnish doit connaître la version de
l’application
→ L’application doit exposer sa version
$ curl http://mon.app/version
11a3e229084349bc25d97e29393ced1d
Solution : vmod curl !
import curl;
sub vcl_recv {
if (req.url == "/version") {
return(pass);
}
curl.header_add("Host: "+req.http.host);
curl.get("http://localhost/version");
if (curl.status() == 200) {
set req.http.X-Version = curl.body();
} else {
error 500 "Internal Server Error";
}
curl.free();
}
sub vcl_hash {
hash_data(req.http.X-Version);
return(hash);
}
Toujours la dernière
version car pas de session
!
Un curl par requête ? Hmm…
On peut faire mieux !
sub app_version {
if (req.http.Cookie ~ "version=") {
set req.http.X-Version = 
regsub(req.http.Cookie, ".*version=([^;]+).*", "1");
} else {
[algo avec curl]
}
}
Le cookie « version » est
ajouté par :
• L’application
• Ou vcl_deliver
Si on récapitule…
Un « ancien » utilisateur :
• Cookie → X-Version
• HIT ou MISS
• On réécrit le cookie « version »
dans tous les cas
Un « nouvel » utilisateur :
• Appel curl → X-Version
• HIT ou MISS
• On écrit le cookie « version »
Mise en production d’une nouvelle version
temps
#sessions
MeP green Undeploy blue
#objets
MeP green
temps
Prune blue
hitrate
MeP green
temps
Et en vrai ?
MeP
README
• Cluster Tomcat : http://bit.ly/1Nol9Qo
• Cluster-wide deployment :
http://bit.ly/1T7hPsg
Blog Oxalide
• Part 1 : http://bit.ly/1WkQVRP
• Part 2 : http://bit.ly/1WkQXsG

Contenu connexe

Tendances

Docker@linuq
Docker@linuqDocker@linuq
Docker@linuq
Sylvain Boily
 
Intro docker
Intro dockerIntro docker
Intro docker
Fedir RYKHTIK
 
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
ALTER WAY
 
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
Membré Guillaume
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)
Jérôme Petazzoni
 
Introduction à docker.io
Introduction à docker.ioIntroduction à docker.io
Introduction à docker.io
Nicolas Hennion
 
Livre blanc docker
Livre blanc docker Livre blanc docker
Livre blanc docker
JEAN-GUILLAUME DUJARDIN
 
Présentation Docker
Présentation DockerPrésentation Docker
Présentation Docker
Colin LEVERGER
 
Docker le buzz est il justifié ?
Docker le buzz est il justifié ? Docker le buzz est il justifié ?
Docker le buzz est il justifié ?
Romain Chalumeau
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Ludovic Piot
 
Déploiements avec Docker
Déploiements avec DockerDéploiements avec Docker
Déploiements avec Docker
Luis Lopez
 
Docker du mythe à la réalité
Docker du mythe à la réalitéDocker du mythe à la réalité
Docker du mythe à la réalité
Zenika
 
Docker - YaJUG
Docker  - YaJUGDocker  - YaJUG
Docker - YaJUG
Nicolas Muller
 
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Cédric Leblond
 
Distribuer une application avec Symfony & Docker *
Distribuer une application avec Symfony & Docker *Distribuer une application avec Symfony & Docker *
Distribuer une application avec Symfony & Docker *
Thierry M.
 
Docker avec Rancher, du dev à la prod - Makazi au devopsdday 2016
Docker avec Rancher, du dev à la prod - Makazi au devopsdday 2016Docker avec Rancher, du dev à la prod - Makazi au devopsdday 2016
Docker avec Rancher, du dev à la prod - Makazi au devopsdday 2016
Alexis Ducastel
 
Support formation vidéo : Construire et administrer vos conteneurs avec Docker
Support formation vidéo : Construire et administrer vos conteneurs avec DockerSupport formation vidéo : Construire et administrer vos conteneurs avec Docker
Support formation vidéo : Construire et administrer vos conteneurs avec Docker
SmartnSkilled
 
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Fabien Arcellier
 
Gdg lille-intro-to-kubernetes
Gdg lille-intro-to-kubernetesGdg lille-intro-to-kubernetes
Gdg lille-intro-to-kubernetes
Christophe Furmaniak
 
Workshop mesos docker devoxx fr 2016
Workshop mesos docker devoxx fr 2016Workshop mesos docker devoxx fr 2016
Workshop mesos docker devoxx fr 2016
Julia Mateo
 

Tendances (20)

Docker@linuq
Docker@linuqDocker@linuq
Docker@linuq
 
Intro docker
Intro dockerIntro docker
Intro docker
 
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
 
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)
 
Introduction à docker.io
Introduction à docker.ioIntroduction à docker.io
Introduction à docker.io
 
Livre blanc docker
Livre blanc docker Livre blanc docker
Livre blanc docker
 
Présentation Docker
Présentation DockerPrésentation Docker
Présentation Docker
 
Docker le buzz est il justifié ?
Docker le buzz est il justifié ? Docker le buzz est il justifié ?
Docker le buzz est il justifié ?
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
 
Déploiements avec Docker
Déploiements avec DockerDéploiements avec Docker
Déploiements avec Docker
 
Docker du mythe à la réalité
Docker du mythe à la réalitéDocker du mythe à la réalité
Docker du mythe à la réalité
 
Docker - YaJUG
Docker  - YaJUGDocker  - YaJUG
Docker - YaJUG
 
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
 
Distribuer une application avec Symfony & Docker *
Distribuer une application avec Symfony & Docker *Distribuer une application avec Symfony & Docker *
Distribuer une application avec Symfony & Docker *
 
Docker avec Rancher, du dev à la prod - Makazi au devopsdday 2016
Docker avec Rancher, du dev à la prod - Makazi au devopsdday 2016Docker avec Rancher, du dev à la prod - Makazi au devopsdday 2016
Docker avec Rancher, du dev à la prod - Makazi au devopsdday 2016
 
Support formation vidéo : Construire et administrer vos conteneurs avec Docker
Support formation vidéo : Construire et administrer vos conteneurs avec DockerSupport formation vidéo : Construire et administrer vos conteneurs avec Docker
Support formation vidéo : Construire et administrer vos conteneurs avec Docker
 
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
 
Gdg lille-intro-to-kubernetes
Gdg lille-intro-to-kubernetesGdg lille-intro-to-kubernetes
Gdg lille-intro-to-kubernetes
 
Workshop mesos docker devoxx fr 2016
Workshop mesos docker devoxx fr 2016Workshop mesos docker devoxx fr 2016
Workshop mesos docker devoxx fr 2016
 

En vedette

ISO 27001 est-il soluble dans l'agilité ?
ISO 27001 est-il soluble dans l'agilité ?ISO 27001 est-il soluble dans l'agilité ?
ISO 27001 est-il soluble dans l'agilité ?
Oxalide
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide
 
Oxalide Academy : Workshop #3 Elastic Search
Oxalide Academy : Workshop #3 Elastic SearchOxalide Academy : Workshop #3 Elastic Search
Oxalide Academy : Workshop #3 Elastic Search
Oxalide
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slides
Oxalide
 
Retour d'expérience sur Capistrano
Retour d'expérience sur CapistranoRetour d'expérience sur Capistrano
Retour d'expérience sur Capistrano
Oxalide
 
Docker compose
Docker composeDocker compose
Docker compose
Oxalide
 
Docker infiniband
Docker infinibandDocker infiniband
Docker infiniband
Syoyo Fujita
 
XebiCon'16 : Xebia Labs : Les outils de déploiement sont morts avec les Conta...
XebiCon'16 : Xebia Labs : Les outils de déploiement sont morts avec les Conta...XebiCon'16 : Xebia Labs : Les outils de déploiement sont morts avec les Conta...
XebiCon'16 : Xebia Labs : Les outils de déploiement sont morts avec les Conta...
Publicis Sapient Engineering
 
[2C4]Clustered computing with CoreOS, fleet and etcd
[2C4]Clustered computing with CoreOS, fleet and etcd[2C4]Clustered computing with CoreOS, fleet and etcd
[2C4]Clustered computing with CoreOS, fleet and etcd
NAVER D2
 
Amazon EC2 Container Service in Action
Amazon EC2 Container Service in ActionAmazon EC2 Container Service in Action
Amazon EC2 Container Service in Action
Remotty
 
RancherOS Introduction
RancherOS IntroductionRancherOS Introduction
RancherOS Introduction
Remotty
 
Mesos on coreOS
Mesos on coreOSMesos on coreOS
Mesos on coreOS
충섭 김
 
[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가
[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가
[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가
NAVER D2
 
Les développeurs aussi maitrisent le systèmD - Devoxx 2015
Les développeurs aussi maitrisent le systèmD - Devoxx 2015Les développeurs aussi maitrisent le systèmD - Devoxx 2015
Les développeurs aussi maitrisent le systèmD - Devoxx 2015
Publicis Sapient Engineering
 

En vedette (14)

ISO 27001 est-il soluble dans l'agilité ?
ISO 27001 est-il soluble dans l'agilité ?ISO 27001 est-il soluble dans l'agilité ?
ISO 27001 est-il soluble dans l'agilité ?
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
 
Oxalide Academy : Workshop #3 Elastic Search
Oxalide Academy : Workshop #3 Elastic SearchOxalide Academy : Workshop #3 Elastic Search
Oxalide Academy : Workshop #3 Elastic Search
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slides
 
Retour d'expérience sur Capistrano
Retour d'expérience sur CapistranoRetour d'expérience sur Capistrano
Retour d'expérience sur Capistrano
 
Docker compose
Docker composeDocker compose
Docker compose
 
Docker infiniband
Docker infinibandDocker infiniband
Docker infiniband
 
XebiCon'16 : Xebia Labs : Les outils de déploiement sont morts avec les Conta...
XebiCon'16 : Xebia Labs : Les outils de déploiement sont morts avec les Conta...XebiCon'16 : Xebia Labs : Les outils de déploiement sont morts avec les Conta...
XebiCon'16 : Xebia Labs : Les outils de déploiement sont morts avec les Conta...
 
[2C4]Clustered computing with CoreOS, fleet and etcd
[2C4]Clustered computing with CoreOS, fleet and etcd[2C4]Clustered computing with CoreOS, fleet and etcd
[2C4]Clustered computing with CoreOS, fleet and etcd
 
Amazon EC2 Container Service in Action
Amazon EC2 Container Service in ActionAmazon EC2 Container Service in Action
Amazon EC2 Container Service in Action
 
RancherOS Introduction
RancherOS IntroductionRancherOS Introduction
RancherOS Introduction
 
Mesos on coreOS
Mesos on coreOSMesos on coreOS
Mesos on coreOS
 
[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가
[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가
[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가
 
Les développeurs aussi maitrisent le systèmD - Devoxx 2015
Les développeurs aussi maitrisent le systèmD - Devoxx 2015Les développeurs aussi maitrisent le systèmD - Devoxx 2015
Les développeurs aussi maitrisent le systèmD - Devoxx 2015
 

Similaire à Varnish & blue/green deployments

JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdfJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
qsdqsd4
 
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptxJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
AnisSalhi3
 
Soirée du Test Logiciel - Mise en place d’une plateforme de test automatisé a...
Soirée du Test Logiciel - Mise en place d’une plateforme de test automatisé a...Soirée du Test Logiciel - Mise en place d’une plateforme de test automatisé a...
Soirée du Test Logiciel - Mise en place d’une plateforme de test automatisé a...
TelecomValley
 
Vagrant - Concept
Vagrant - ConceptVagrant - Concept
Vagrant - Concept
Julien Dubreuil
 
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
AbdellahELMAMOUN
 
GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...
GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...
GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...
AZUG FR
 
Déploiement, orchestration & sécurisation d’APIs
Déploiement, orchestration & sécurisation d’APIsDéploiement, orchestration & sécurisation d’APIs
Déploiement, orchestration & sécurisation d’APIs
Nicolas Herbaut
 
Présentation CoreOS
Présentation CoreOSPrésentation CoreOS
Présentation CoreOS
gcatt
 
Renforçons notre Developer eXperience pour faire face aux menaces d'obsolesce...
Renforçons notre Developer eXperience pour faire face aux menaces d'obsolesce...Renforçons notre Developer eXperience pour faire face aux menaces d'obsolesce...
Renforçons notre Developer eXperience pour faire face aux menaces d'obsolesce...
Eric SIBER
 
Docker, Pierre angulaire du continuous delivery ?
Docker, Pierre angulaire du continuous delivery ?Docker, Pierre angulaire du continuous delivery ?
Docker, Pierre angulaire du continuous delivery ?
Adrien Blind
 
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et DerueGab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
AZUG FR
 
wallabag, comment on a migré vers symfony3
wallabag, comment on a migré vers symfony3wallabag, comment on a migré vers symfony3
wallabag, comment on a migré vers symfony3
Nicolas Lœuillet
 
Des solutions de synchronisation de données
Des solutions de synchronisation de donnéesDes solutions de synchronisation de données
Des solutions de synchronisation de données
pprem
 
Push notification
Push notificationPush notification
Push notification
ODC Orange Developer Center
 
Introduction à Crossplane (Talk Devoxx 2023)
Introduction à Crossplane (Talk Devoxx 2023)Introduction à Crossplane (Talk Devoxx 2023)
Introduction à Crossplane (Talk Devoxx 2023)
Adrien Blind
 
Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Se...
Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Se...Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Se...
Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Se...
Publicis Sapient Engineering
 
2023-02-02 - Marvelous March
2023-02-02 - Marvelous March2023-02-02 - Marvelous March
2023-02-02 - Marvelous March
Frederic Leger
 
Intro to docker
Intro to dockerIntro to docker
Intro to docker
Abderrahmane Mechri
 
[GAB2016] Azure et les Microservices - Jean-Luc Boucho
[GAB2016] Azure et les Microservices - Jean-Luc Boucho[GAB2016] Azure et les Microservices - Jean-Luc Boucho
[GAB2016] Azure et les Microservices - Jean-Luc Boucho
Cellenza
 
J.L. Boucho, J.Corioland - Azure et les Microservices - Global Azure Bootcamp...
J.L. Boucho, J.Corioland - Azure et les Microservices - Global Azure Bootcamp...J.L. Boucho, J.Corioland - Azure et les Microservices - Global Azure Bootcamp...
J.L. Boucho, J.Corioland - Azure et les Microservices - Global Azure Bootcamp...
AZUG FR
 

Similaire à Varnish & blue/green deployments (20)

JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdfJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
 
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptxJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
 
Soirée du Test Logiciel - Mise en place d’une plateforme de test automatisé a...
Soirée du Test Logiciel - Mise en place d’une plateforme de test automatisé a...Soirée du Test Logiciel - Mise en place d’une plateforme de test automatisé a...
Soirée du Test Logiciel - Mise en place d’une plateforme de test automatisé a...
 
Vagrant - Concept
Vagrant - ConceptVagrant - Concept
Vagrant - Concept
 
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
 
GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...
GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...
GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...
 
Déploiement, orchestration & sécurisation d’APIs
Déploiement, orchestration & sécurisation d’APIsDéploiement, orchestration & sécurisation d’APIs
Déploiement, orchestration & sécurisation d’APIs
 
Présentation CoreOS
Présentation CoreOSPrésentation CoreOS
Présentation CoreOS
 
Renforçons notre Developer eXperience pour faire face aux menaces d'obsolesce...
Renforçons notre Developer eXperience pour faire face aux menaces d'obsolesce...Renforçons notre Developer eXperience pour faire face aux menaces d'obsolesce...
Renforçons notre Developer eXperience pour faire face aux menaces d'obsolesce...
 
Docker, Pierre angulaire du continuous delivery ?
Docker, Pierre angulaire du continuous delivery ?Docker, Pierre angulaire du continuous delivery ?
Docker, Pierre angulaire du continuous delivery ?
 
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et DerueGab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
 
wallabag, comment on a migré vers symfony3
wallabag, comment on a migré vers symfony3wallabag, comment on a migré vers symfony3
wallabag, comment on a migré vers symfony3
 
Des solutions de synchronisation de données
Des solutions de synchronisation de donnéesDes solutions de synchronisation de données
Des solutions de synchronisation de données
 
Push notification
Push notificationPush notification
Push notification
 
Introduction à Crossplane (Talk Devoxx 2023)
Introduction à Crossplane (Talk Devoxx 2023)Introduction à Crossplane (Talk Devoxx 2023)
Introduction à Crossplane (Talk Devoxx 2023)
 
Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Se...
Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Se...Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Se...
Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Se...
 
2023-02-02 - Marvelous March
2023-02-02 - Marvelous March2023-02-02 - Marvelous March
2023-02-02 - Marvelous March
 
Intro to docker
Intro to dockerIntro to docker
Intro to docker
 
[GAB2016] Azure et les Microservices - Jean-Luc Boucho
[GAB2016] Azure et les Microservices - Jean-Luc Boucho[GAB2016] Azure et les Microservices - Jean-Luc Boucho
[GAB2016] Azure et les Microservices - Jean-Luc Boucho
 
J.L. Boucho, J.Corioland - Azure et les Microservices - Global Azure Bootcamp...
J.L. Boucho, J.Corioland - Azure et les Microservices - Global Azure Bootcamp...J.L. Boucho, J.Corioland - Azure et les Microservices - Global Azure Bootcamp...
J.L. Boucho, J.Corioland - Azure et les Microservices - Global Azure Bootcamp...
 

Plus de Oxalide

Terraform & Vault - Un duo d'enfer!
Terraform & Vault - Un duo d'enfer!Terraform & Vault - Un duo d'enfer!
Terraform & Vault - Un duo d'enfer!
Oxalide
 
Workshop Docker & Kubernetes - Oxalide Academy
Workshop Docker & Kubernetes - Oxalide AcademyWorkshop Docker & Kubernetes - Oxalide Academy
Workshop Docker & Kubernetes - Oxalide Academy
Oxalide
 
Morning Tech#1 BigData - Oxalide Academy
Morning Tech#1 BigData - Oxalide AcademyMorning Tech#1 BigData - Oxalide Academy
Morning Tech#1 BigData - Oxalide Academy
Oxalide
 
Meetup Paris Monitoring #9 : Un système de gestion et de visualisation des al...
Meetup Paris Monitoring #9 : Un système de gestion et de visualisation des al...Meetup Paris Monitoring #9 : Un système de gestion et de visualisation des al...
Meetup Paris Monitoring #9 : Un système de gestion et de visualisation des al...
Oxalide
 
Paris hackers Meetup #12 - How to handle large audience
Paris hackers Meetup #12 - How to handle large audienceParis hackers Meetup #12 - How to handle large audience
Paris hackers Meetup #12 - How to handle large audience
Oxalide
 
AgoraCMS 2014 : Les bonnes pratiques de l'hébergement d'un CMS pour une meill...
AgoraCMS 2014 : Les bonnes pratiques de l'hébergement d'un CMS pour une meill...AgoraCMS 2014 : Les bonnes pratiques de l'hébergement d'un CMS pour une meill...
AgoraCMS 2014 : Les bonnes pratiques de l'hébergement d'un CMS pour une meill...
Oxalide
 
La performance de vos applications Drupal
La performance de vos applications DrupalLa performance de vos applications Drupal
La performance de vos applications Drupal
Oxalide
 
Les bonnes pratiques d'une architecture logicielle et infrastructure de l'héb...
Les bonnes pratiques d'une architecture logicielle et infrastructure de l'héb...Les bonnes pratiques d'une architecture logicielle et infrastructure de l'héb...
Les bonnes pratiques d'une architecture logicielle et infrastructure de l'héb...
Oxalide
 
201211 drupagora hostingdrupal
201211 drupagora hostingdrupal201211 drupagora hostingdrupal
201211 drupagora hostingdrupal
Oxalide
 
Cloud & physique, mauvaises et bonnes solutions
Cloud & physique, mauvaises et bonnes solutionsCloud & physique, mauvaises et bonnes solutions
Cloud & physique, mauvaises et bonnes solutions
Oxalide
 
Comprendre pour choisir son hébergement
Comprendre pour choisir son hébergementComprendre pour choisir son hébergement
Comprendre pour choisir son hébergement
Oxalide
 
Gérer 100 000 visites par jour avec Magento - Les enjeux e-commerce de Prisma...
Gérer 100 000 visites par jour avec Magento - Les enjeux e-commerce de Prisma...Gérer 100 000 visites par jour avec Magento - Les enjeux e-commerce de Prisma...
Gérer 100 000 visites par jour avec Magento - Les enjeux e-commerce de Prisma...
Oxalide
 
Performance barcampfinal
Performance barcampfinalPerformance barcampfinal
Performance barcampfinal
Oxalide
 
Clusif panoramadelacybercrimalite2009
Clusif panoramadelacybercrimalite2009Clusif panoramadelacybercrimalite2009
Clusif panoramadelacybercrimalite2009
Oxalide
 
Clusif panoramadelacybercrimalite2009
Clusif panoramadelacybercrimalite2009Clusif panoramadelacybercrimalite2009
Clusif panoramadelacybercrimalite2009
Oxalide
 
Clusif cloud-2010-datacenter
Clusif cloud-2010-datacenterClusif cloud-2010-datacenter
Clusif cloud-2010-datacenter
Oxalide
 
Clusif cloud-2010-securite
Clusif cloud-2010-securiteClusif cloud-2010-securite
Clusif cloud-2010-securite
Oxalide
 
Monitoring Des Applications Php, Salon Des Solutions Linux Open Source
Monitoring Des Applications Php, Salon Des Solutions Linux Open SourceMonitoring Des Applications Php, Salon Des Solutions Linux Open Source
Monitoring Des Applications Php, Salon Des Solutions Linux Open Source
Oxalide
 
Les bonnes pratiques de l'hébergement e-commerce open-source (Conférence E Co...
Les bonnes pratiques de l'hébergement e-commerce open-source (Conférence E Co...Les bonnes pratiques de l'hébergement e-commerce open-source (Conférence E Co...
Les bonnes pratiques de l'hébergement e-commerce open-source (Conférence E Co...
Oxalide
 
200907 Petit Dejeuner Optimisation coûts 20m
200907 Petit Dejeuner Optimisation coûts 20m200907 Petit Dejeuner Optimisation coûts 20m
200907 Petit Dejeuner Optimisation coûts 20m
Oxalide
 

Plus de Oxalide (20)

Terraform & Vault - Un duo d'enfer!
Terraform & Vault - Un duo d'enfer!Terraform & Vault - Un duo d'enfer!
Terraform & Vault - Un duo d'enfer!
 
Workshop Docker & Kubernetes - Oxalide Academy
Workshop Docker & Kubernetes - Oxalide AcademyWorkshop Docker & Kubernetes - Oxalide Academy
Workshop Docker & Kubernetes - Oxalide Academy
 
Morning Tech#1 BigData - Oxalide Academy
Morning Tech#1 BigData - Oxalide AcademyMorning Tech#1 BigData - Oxalide Academy
Morning Tech#1 BigData - Oxalide Academy
 
Meetup Paris Monitoring #9 : Un système de gestion et de visualisation des al...
Meetup Paris Monitoring #9 : Un système de gestion et de visualisation des al...Meetup Paris Monitoring #9 : Un système de gestion et de visualisation des al...
Meetup Paris Monitoring #9 : Un système de gestion et de visualisation des al...
 
Paris hackers Meetup #12 - How to handle large audience
Paris hackers Meetup #12 - How to handle large audienceParis hackers Meetup #12 - How to handle large audience
Paris hackers Meetup #12 - How to handle large audience
 
AgoraCMS 2014 : Les bonnes pratiques de l'hébergement d'un CMS pour une meill...
AgoraCMS 2014 : Les bonnes pratiques de l'hébergement d'un CMS pour une meill...AgoraCMS 2014 : Les bonnes pratiques de l'hébergement d'un CMS pour une meill...
AgoraCMS 2014 : Les bonnes pratiques de l'hébergement d'un CMS pour une meill...
 
La performance de vos applications Drupal
La performance de vos applications DrupalLa performance de vos applications Drupal
La performance de vos applications Drupal
 
Les bonnes pratiques d'une architecture logicielle et infrastructure de l'héb...
Les bonnes pratiques d'une architecture logicielle et infrastructure de l'héb...Les bonnes pratiques d'une architecture logicielle et infrastructure de l'héb...
Les bonnes pratiques d'une architecture logicielle et infrastructure de l'héb...
 
201211 drupagora hostingdrupal
201211 drupagora hostingdrupal201211 drupagora hostingdrupal
201211 drupagora hostingdrupal
 
Cloud & physique, mauvaises et bonnes solutions
Cloud & physique, mauvaises et bonnes solutionsCloud & physique, mauvaises et bonnes solutions
Cloud & physique, mauvaises et bonnes solutions
 
Comprendre pour choisir son hébergement
Comprendre pour choisir son hébergementComprendre pour choisir son hébergement
Comprendre pour choisir son hébergement
 
Gérer 100 000 visites par jour avec Magento - Les enjeux e-commerce de Prisma...
Gérer 100 000 visites par jour avec Magento - Les enjeux e-commerce de Prisma...Gérer 100 000 visites par jour avec Magento - Les enjeux e-commerce de Prisma...
Gérer 100 000 visites par jour avec Magento - Les enjeux e-commerce de Prisma...
 
Performance barcampfinal
Performance barcampfinalPerformance barcampfinal
Performance barcampfinal
 
Clusif panoramadelacybercrimalite2009
Clusif panoramadelacybercrimalite2009Clusif panoramadelacybercrimalite2009
Clusif panoramadelacybercrimalite2009
 
Clusif panoramadelacybercrimalite2009
Clusif panoramadelacybercrimalite2009Clusif panoramadelacybercrimalite2009
Clusif panoramadelacybercrimalite2009
 
Clusif cloud-2010-datacenter
Clusif cloud-2010-datacenterClusif cloud-2010-datacenter
Clusif cloud-2010-datacenter
 
Clusif cloud-2010-securite
Clusif cloud-2010-securiteClusif cloud-2010-securite
Clusif cloud-2010-securite
 
Monitoring Des Applications Php, Salon Des Solutions Linux Open Source
Monitoring Des Applications Php, Salon Des Solutions Linux Open SourceMonitoring Des Applications Php, Salon Des Solutions Linux Open Source
Monitoring Des Applications Php, Salon Des Solutions Linux Open Source
 
Les bonnes pratiques de l'hébergement e-commerce open-source (Conférence E Co...
Les bonnes pratiques de l'hébergement e-commerce open-source (Conférence E Co...Les bonnes pratiques de l'hébergement e-commerce open-source (Conférence E Co...
Les bonnes pratiques de l'hébergement e-commerce open-source (Conférence E Co...
 
200907 Petit Dejeuner Optimisation coûts 20m
200907 Petit Dejeuner Optimisation coûts 20m200907 Petit Dejeuner Optimisation coûts 20m
200907 Petit Dejeuner Optimisation coûts 20m
 

Varnish & blue/green deployments

  • 2. $ whoami Oxalide Conseil, Infogérance & Hébergement Media / SaaS / E-commerce Varnish everywhere Consultant Architecture & DevOps Théo Chamley theo.ch@mley.fr @MrTrustor
  • 4. Déploiement blue/green • Zero-downtime deployment • Facilite le rollback • Facilite le canary-testing App v1 App v2 Load Balancer
  • 5. Exemple avec Tomcat App v1 App v2 Tomcat Parallel Deployment Catalina Sessions déjà existantes Nouvelles sessions
  • 7. Et avec Varnish ? Mix du cache des 2 versions → Solution ? Canary-testing ? App v1 App v2 Varnish Cache app v1 Cache app v2
  • 8. Ébauche de solution • Séparation du cache entre les versions → vcl_hash • Varnish doit connaître la version de l’application → L’application doit exposer sa version $ curl http://mon.app/version 11a3e229084349bc25d97e29393ced1d
  • 9. Solution : vmod curl ! import curl; sub vcl_recv { if (req.url == "/version") { return(pass); } curl.header_add("Host: "+req.http.host); curl.get("http://localhost/version"); if (curl.status() == 200) { set req.http.X-Version = curl.body(); } else { error 500 "Internal Server Error"; } curl.free(); } sub vcl_hash { hash_data(req.http.X-Version); return(hash); } Toujours la dernière version car pas de session !
  • 10. Un curl par requête ? Hmm… On peut faire mieux ! sub app_version { if (req.http.Cookie ~ "version=") { set req.http.X-Version = regsub(req.http.Cookie, ".*version=([^;]+).*", "1"); } else { [algo avec curl] } } Le cookie « version » est ajouté par : • L’application • Ou vcl_deliver
  • 11. Si on récapitule… Un « ancien » utilisateur : • Cookie → X-Version • HIT ou MISS • On réécrit le cookie « version » dans tous les cas Un « nouvel » utilisateur : • Appel curl → X-Version • HIT ou MISS • On écrit le cookie « version »
  • 12. Mise en production d’une nouvelle version temps #sessions MeP green Undeploy blue #objets MeP green temps Prune blue hitrate MeP green temps
  • 13. Et en vrai ? MeP
  • 14. README • Cluster Tomcat : http://bit.ly/1Nol9Qo • Cluster-wide deployment : http://bit.ly/1T7hPsg Blog Oxalide • Part 1 : http://bit.ly/1WkQVRP • Part 2 : http://bit.ly/1WkQXsG