SlideShare ist ein Scribd-Unternehmen logo
1 von 50
A LA DECOUVERTE D EZPLATFORM / EZSTUDIO
USER MEETING EZ + VARNISH
www.ez.no
En chiffres
Skien
New York Lisbon
Paris
Oslo
Tokyo
Lion
Cologne
Katowice
45.000+
Membres
80 employés
250.000+
Installations
200+ Partneraires
5M+
Téléchargements
Des utilisateurs
dans 160 pays
Commercial
Open Source
www.ez.no
Nos clients
DÉCOUVREZ EZPLATFORM / EZSTUDIO
WHY WE DITCHED OUR LEGACY FRAMEWORK FOR SYMFONY
- A JOURNEY TO SYMFONY2 (FULL STACK)
ezplatform.com
eZ Platform
ezplatform.com
eZ Platform
ezplatform.com
eZ Platform
© https://unsplash.com/photos/osSryggkso4
ezplatform.com
eZ Platform - API
www.ez.no
www.ez.no
eZ Platform – Type de contenu
FieldTypeName
www.ez.no
eZ Platform - Versions
www.ez.no
eZ Platform – Statut des contenus
www.ez.no
eZ Platform - Multilangues
Locations ?
www.ez.no
eZ Platform – Top Locations
www.ez.no
eZ Platform – Multiple emplacements
SiteAccess ?
www.ez.no
eZ Platform – SiteAccess
Fourni plusieurs sites en une seule installation
• Même contenu, différentes langues
• Contenu partiel
• Différents contenus pour différents sites (
ex: usine à site, plateforme de blog, … )
www.ez.no
eZ Platform –Configuration des accès
• URI http://www.example.com/fre
• Host http://www.example.com
• Port http://www.example.com:81
• HostText http://www.example.com
www.ez.no
eZ Platform – Exemple de SiteAccess
HTTP Cache ?
www.ez.no
eZ Platform – Headers !
Varnish
{cache|project|plus|software}
Guillaume Quintard
guillaume@varni.sh
Varnish Cache
- Serveur de cache HTTP
- Open-source
- Rapide, très rapide
- Extrêmement flexible
- Géré par Varnish Project
Varnish Software
- Créateur de Varnish Cache
- ~40 en Europe + USA
- Maintient Varnish Cache Plus
- Vend l’offre Varnish Plus incluant
VCP, outils, packaging, support,
conseil et formations.
Points d’architecture
- VCL: Configuration Language
- VMODS: MODules
- VSL: Shared Log
- 2 CVE (mineures) en 10 ans
VCL
VCL
sub vcl_recv {
if (req.url ~ “^/admin/”) {
return (pass);
}
}
Points d’architecture
- VCL: Configuration Language
- VMODS: MODules
- VSL: Shared Log
- 2 CVE (mineures) en 10 ans
Varnish Custom Statistics
Guillaume Quintard
guillaume@varni.sh
VCS: bases
- Basé sur le VSL et ZMQ
- Regroupe les requêtes par
tag+période
- Plusieurs tags par requêtes
- Par instance, ou par cluster
- API REST pour accèder aux valeurs
API: liste
GET /all:
{
"keys": [
"URL/repo.varnish-cache.org/debian/dists/jessie/varnish-3.0/i18n/Translation-fr.gz",
"URL/repo.varnish-cache.org/ubuntu/dists/lucid/varnish-3.0/i18n/Translation-pt_BR.gz",
"URL/repo.varnish-cache.org/ubuntu/dists/utopic/varnish-4.0/i18n/Translation-en.gz",
"URL/repo.varnish-cache.org/ubuntu/dists/jessie/varnish-4.0/i18n/Translation-en",
"URL/repo.varnish-cache.org/debian/dists/precise/varnish-4.1/binary-i386/?C=D;O=D",
...
API: recherche
GET /match/HOST:
{
"keys": [
"HOST/old.varnish-cache.org",
"HOST/planet.varnish-cache.org",
"HOST/repo.varnish-cache.org:80",
"HOST/varnish-cache.org",
"HOST/repo.varnish-cache.org",
"HOST/www.varnish-cache.org",
"HOST/lists.varnish-cache.org",
...
API: stats
GET key/HOST%2Flists.varnish-
cache.org:
{
"HOST/lists.varnish-cache.org": [
{
"timestamp": "2016-04-15T10:02:00+00",
"n_req": 1,
"n_req_uniq": "NaN",
"n_miss": 0,
"avg_restarts": 0.000000,
"n_bodybytes": 0,
"ttfb_miss": "NaN",
"ttfb_hit": 0.000082,
"resp_1xx": 0,
"resp_2xx": 0,
"resp_3xx": 1,
"resp_4xx": 0,
"resp_5xx": 0
},
...
Insertion de tag
import std;
sub vcl_recv {
std.log(“vcs-key: URL/” + req.url)
if (req.url ~ “^/admin/”) {
std.log(“vcs-key: ADMIN”);
return (pass);
}
}
Application
Coté Varnish
sub vcl_deliver {
if (resp.http.x-vcs == "true") {
std.log("vcs-key: ART-" +
resp.http.x-vcs-title +
"@" + resp.http.x-vcs-image +
"@http://" + req.http.host +
regsub(req.url, "?.*", "")
);
}
}
A/B testing
Guillaume Quintard
guillaume@varni.sh
Au delà du buzzword
Méthodologie:
1.Définir deux variantes (A et B) d’un
élément.
2.Séparer les utilisateurs en deux
groupes (A et B) et livrer à chaque
groupe la variante correspondante.
3.Choisir la meilleure variante.
Points de friction
Méthodologie:
1.Définir deux variantes (A et B) d’un
élément.
2.Séparer les utilisateurs en deux
groupes (A et B) et livrer à chaque
groupe la variante correspondante.
3.Choisir la meilleure variante.
Version simplifée
- Varnish attribue les groupes A/B
suivant un ratio X/Y.
- On peut enregistrer les accès à TOUS
les objets, et calculer le ratio X’/Y’
Il suffit de comparer X/Y et X’/Y’.
Coté Varnish: groupe
sub vcl_deliver {
if (cookie.get("abgroup") == "A" || req.http.x-group == "A") {
set req.http.x-group = "A";
}
else if (cookie.get("abgroup") == "B" || req.http.x-group == "B") {
set req.http.x-group = "B";
}
else if (std.random(0, 100) < 50) {
set req.http.x-group = "A";
}
else {
set req.http.x-group = "B";
}
}
Coté Varnish: cookies
sub vcl_deliver {
header.append(resp.http.set-cookie,
"abgroup=" + req.http.x-group +
"; Expires=" + cookie.format_rfc1123(now, 1h) +
"; httpOnly");
}
Coté Varnish: accès
sub vcl_deliver {
std.log(“vcs-key: access“ + req.http.x-group);
}
Résultats
Il reste à comparer:
50/50
et
accessA/accessB
Bash, mon amour
n() {
curl http://127.0.0.1:8888/key/$1 -s| 
jq ".[][1].n_req";
}
echo $(n accessA) / $(n accessB) | bc -l
QUESTIONS ?
DEMO

Weitere ähnliche Inhalte

Andere mochten auch

Lesclsdevotrestratgieebusinesslinternational 131209074509-phpapp02
Lesclsdevotrestratgieebusinesslinternational 131209074509-phpapp02Lesclsdevotrestratgieebusinesslinternational 131209074509-phpapp02
Lesclsdevotrestratgieebusinesslinternational 131209074509-phpapp02Thierry Pastorello
 
Presentation ico chitkara 4
Presentation ico chitkara 4Presentation ico chitkara 4
Presentation ico chitkara 4Cécile Francès
 
Sinónimos en francés y latín
Sinónimos en francés y latínSinónimos en francés y latín
Sinónimos en francés y latínidiomasdelplaneta
 
Crise convulsive fev2009
Crise convulsive fev2009Crise convulsive fev2009
Crise convulsive fev2009haifa ben abid
 
Cursos PUDE 2009 Web 2.0 para le empresa
Cursos PUDE 2009 Web 2.0 para le empresaCursos PUDE 2009 Web 2.0 para le empresa
Cursos PUDE 2009 Web 2.0 para le empresaEduardo López
 
Comentario PoéTico Anabel GarcíA Palma
Comentario PoéTico  Anabel GarcíA PalmaComentario PoéTico  Anabel GarcíA Palma
Comentario PoéTico Anabel GarcíA PalmaMiguel Navarro
 
Définition de la propolis
Définition de la propolisDéfinition de la propolis
Définition de la propolishakima2245
 
10 Casos Rse
10 Casos Rse10 Casos Rse
10 Casos Rsetato1456
 
Surveillance marché
Surveillance marchéSurveillance marché
Surveillance marchéROUVIERE
 
Contrat de Téléphonie mobile Deal
Contrat de Téléphonie mobile DealContrat de Téléphonie mobile Deal
Contrat de Téléphonie mobile Dealjimmyroggers
 
Libre 02 como se-que_estoy_atado
Libre 02   como se-que_estoy_atadoLibre 02   como se-que_estoy_atado
Libre 02 como se-que_estoy_atadoHugo Barahona
 
Gestión financiera comercial-nov2010-def
Gestión financiera comercial-nov2010-defGestión financiera comercial-nov2010-def
Gestión financiera comercial-nov2010-defrafaeloliver
 
Ariège
AriègeAriège
AriègeCCDH75
 

Andere mochten auch (20)

Lesclsdevotrestratgieebusinesslinternational 131209074509-phpapp02
Lesclsdevotrestratgieebusinesslinternational 131209074509-phpapp02Lesclsdevotrestratgieebusinesslinternational 131209074509-phpapp02
Lesclsdevotrestratgieebusinesslinternational 131209074509-phpapp02
 
Presentation ico chitkara 4
Presentation ico chitkara 4Presentation ico chitkara 4
Presentation ico chitkara 4
 
e-marketing et management
e-marketing et managemente-marketing et management
e-marketing et management
 
Sinónimos en francés y latín
Sinónimos en francés y latínSinónimos en francés y latín
Sinónimos en francés y latín
 
Crise convulsive fev2009
Crise convulsive fev2009Crise convulsive fev2009
Crise convulsive fev2009
 
Cursos PUDE 2009 Web 2.0 para le empresa
Cursos PUDE 2009 Web 2.0 para le empresaCursos PUDE 2009 Web 2.0 para le empresa
Cursos PUDE 2009 Web 2.0 para le empresa
 
Comentario PoéTico Anabel GarcíA Palma
Comentario PoéTico  Anabel GarcíA PalmaComentario PoéTico  Anabel GarcíA Palma
Comentario PoéTico Anabel GarcíA Palma
 
Définition de la propolis
Définition de la propolisDéfinition de la propolis
Définition de la propolis
 
Alan Alvarez B2b
Alan Alvarez B2bAlan Alvarez B2b
Alan Alvarez B2b
 
10 Casos Rse
10 Casos Rse10 Casos Rse
10 Casos Rse
 
Surveillance marché
Surveillance marchéSurveillance marché
Surveillance marché
 
Hsa Neuropato
Hsa NeuropatoHsa Neuropato
Hsa Neuropato
 
ENFERMERÍA Y LOS PARADIGMAS EMERGENTES
ENFERMERÍA Y LOS PARADIGMAS EMERGENTESENFERMERÍA Y LOS PARADIGMAS EMERGENTES
ENFERMERÍA Y LOS PARADIGMAS EMERGENTES
 
Contrat de Téléphonie mobile Deal
Contrat de Téléphonie mobile DealContrat de Téléphonie mobile Deal
Contrat de Téléphonie mobile Deal
 
Libre 02 como se-que_estoy_atado
Libre 02   como se-que_estoy_atadoLibre 02   como se-que_estoy_atado
Libre 02 como se-que_estoy_atado
 
Net etiquetas
Net etiquetasNet etiquetas
Net etiquetas
 
Gestión financiera comercial-nov2010-def
Gestión financiera comercial-nov2010-defGestión financiera comercial-nov2010-def
Gestión financiera comercial-nov2010-def
 
Cómo hacer
Cómo hacerCómo hacer
Cómo hacer
 
Ariège
AriègeAriège
Ariège
 
Deportes
DeportesDeportes
Deportes
 

Ähnlich wie UserGroup Varnish - eZ

Diaporama du sfPot Lillois du 20 mars 2014
Diaporama du sfPot Lillois du 20 mars 2014Diaporama du sfPot Lillois du 20 mars 2014
Diaporama du sfPot Lillois du 20 mars 2014Les-Tilleuls.coop
 
PHP 5.3, PHP Next
PHP 5.3, PHP NextPHP 5.3, PHP Next
PHP 5.3, PHP NextSQLI
 
CRaSH @ JUGSummerCamp 2012 - Quickie
CRaSH @ JUGSummerCamp 2012 - QuickieCRaSH @ JUGSummerCamp 2012 - Quickie
CRaSH @ JUGSummerCamp 2012 - QuickieeXo Platform
 
Rich Desktop Applications
Rich Desktop ApplicationsRich Desktop Applications
Rich Desktop Applicationsgoldoraf
 
Mieux Développer en PHP avec Symfony
Mieux Développer en PHP avec SymfonyMieux Développer en PHP avec Symfony
Mieux Développer en PHP avec SymfonyHugo Hamon
 
Communications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHPCommunications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHPjulien pauli
 
CRaSH @ JUGSummerCamp 2012 - Quickie
CRaSH @ JUGSummerCamp 2012 - QuickieCRaSH @ JUGSummerCamp 2012 - Quickie
CRaSH @ JUGSummerCamp 2012 - QuickieArnaud Héritier
 
Réu technodejs
Réu technodejsRéu technodejs
Réu technodejsnaholyr
 
Partenariat Exo Platform/Pilot Systems
Partenariat Exo Platform/Pilot SystemsPartenariat Exo Platform/Pilot Systems
Partenariat Exo Platform/Pilot SystemsParis, France
 
2013 01-08-php-maturite
2013 01-08-php-maturite2013 01-08-php-maturite
2013 01-08-php-maturiteRémi Alvado
 
Présentation CoreOS
Présentation CoreOSPrésentation CoreOS
Présentation CoreOSgcatt
 
Apache flink - prise en main rapide
Apache flink - prise en main rapideApache flink - prise en main rapide
Apache flink - prise en main rapideBilal Baltagi
 
Annotations pour les Geeks
Annotations pour les GeeksAnnotations pour les Geeks
Annotations pour les Geeksjviet
 
Terraform OpenStack : Mise en pratique sur infrastructure OVH (Rennes devops)
Terraform OpenStack : Mise en pratique sur infrastructure OVH (Rennes devops) Terraform OpenStack : Mise en pratique sur infrastructure OVH (Rennes devops)
Terraform OpenStack : Mise en pratique sur infrastructure OVH (Rennes devops) Joël Séguillon
 
Créer une API GraphQL avec Symfony
Créer une API GraphQL avec SymfonyCréer une API GraphQL avec Symfony
Créer une API GraphQL avec SymfonySébastien Rosset
 
20111006 bonnes pratiques-gi_g_v1
20111006 bonnes pratiques-gi_g_v120111006 bonnes pratiques-gi_g_v1
20111006 bonnes pratiques-gi_g_v1Gilles Guirand
 
symfony : Simplifier le développement des interfaces bases de données (PHP ...
symfony : Simplifier le développement des interfaces bases de données (PHP ...symfony : Simplifier le développement des interfaces bases de données (PHP ...
symfony : Simplifier le développement des interfaces bases de données (PHP ...Fabien Potencier
 
Hands on lab Elasticsearch
Hands on lab ElasticsearchHands on lab Elasticsearch
Hands on lab ElasticsearchDavid Pilato
 

Ähnlich wie UserGroup Varnish - eZ (20)

Diaporama du sfPot Lillois du 20 mars 2014
Diaporama du sfPot Lillois du 20 mars 2014Diaporama du sfPot Lillois du 20 mars 2014
Diaporama du sfPot Lillois du 20 mars 2014
 
PHP 5.3, PHP Next
PHP 5.3, PHP NextPHP 5.3, PHP Next
PHP 5.3, PHP Next
 
CRaSH @ JUGSummerCamp 2012 - Quickie
CRaSH @ JUGSummerCamp 2012 - QuickieCRaSH @ JUGSummerCamp 2012 - Quickie
CRaSH @ JUGSummerCamp 2012 - Quickie
 
Rich Desktop Applications
Rich Desktop ApplicationsRich Desktop Applications
Rich Desktop Applications
 
Mysql
MysqlMysql
Mysql
 
Mieux Développer en PHP avec Symfony
Mieux Développer en PHP avec SymfonyMieux Développer en PHP avec Symfony
Mieux Développer en PHP avec Symfony
 
Communications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHPCommunications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHP
 
CRaSH @ JUGSummerCamp 2012 - Quickie
CRaSH @ JUGSummerCamp 2012 - QuickieCRaSH @ JUGSummerCamp 2012 - Quickie
CRaSH @ JUGSummerCamp 2012 - Quickie
 
Réu technodejs
Réu technodejsRéu technodejs
Réu technodejs
 
12-Factor
12-Factor12-Factor
12-Factor
 
Partenariat Exo Platform/Pilot Systems
Partenariat Exo Platform/Pilot SystemsPartenariat Exo Platform/Pilot Systems
Partenariat Exo Platform/Pilot Systems
 
2013 01-08-php-maturite
2013 01-08-php-maturite2013 01-08-php-maturite
2013 01-08-php-maturite
 
Présentation CoreOS
Présentation CoreOSPrésentation CoreOS
Présentation CoreOS
 
Apache flink - prise en main rapide
Apache flink - prise en main rapideApache flink - prise en main rapide
Apache flink - prise en main rapide
 
Annotations pour les Geeks
Annotations pour les GeeksAnnotations pour les Geeks
Annotations pour les Geeks
 
Terraform OpenStack : Mise en pratique sur infrastructure OVH (Rennes devops)
Terraform OpenStack : Mise en pratique sur infrastructure OVH (Rennes devops) Terraform OpenStack : Mise en pratique sur infrastructure OVH (Rennes devops)
Terraform OpenStack : Mise en pratique sur infrastructure OVH (Rennes devops)
 
Créer une API GraphQL avec Symfony
Créer une API GraphQL avec SymfonyCréer une API GraphQL avec Symfony
Créer une API GraphQL avec Symfony
 
20111006 bonnes pratiques-gi_g_v1
20111006 bonnes pratiques-gi_g_v120111006 bonnes pratiques-gi_g_v1
20111006 bonnes pratiques-gi_g_v1
 
symfony : Simplifier le développement des interfaces bases de données (PHP ...
symfony : Simplifier le développement des interfaces bases de données (PHP ...symfony : Simplifier le développement des interfaces bases de données (PHP ...
symfony : Simplifier le développement des interfaces bases de données (PHP ...
 
Hands on lab Elasticsearch
Hands on lab ElasticsearchHands on lab Elasticsearch
Hands on lab Elasticsearch
 

UserGroup Varnish - eZ

Hinweis der Redaktion

  1. Inside the beast
  2. A location is the published version of a content A location encapsulates exactly one content, and represents the content's location Both contents and locations have different IDs Contents are organised in a hierarchy (called the “content location tree”)