UserGroup Varnish - eZ

311 vues

Publié le

UserGroup présentant les produits eZ Platform, eZ Studio, Varnish Cache et Varnish Cache Statistics

Publié dans : Internet
0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
311
Sur SlideShare
0
Issues des intégrations
0
Intégrations
4
Actions
Partages
0
Téléchargements
0
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive
  • Inside the beast
  • 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”)
  • UserGroup Varnish - eZ

    1. 1. A LA DECOUVERTE D EZPLATFORM / EZSTUDIO USER MEETING EZ + VARNISH
    2. 2. 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
    3. 3. www.ez.no Nos clients
    4. 4. DÉCOUVREZ EZPLATFORM / EZSTUDIO WHY WE DITCHED OUR LEGACY FRAMEWORK FOR SYMFONY - A JOURNEY TO SYMFONY2 (FULL STACK)
    5. 5. ezplatform.com eZ Platform
    6. 6. ezplatform.com eZ Platform
    7. 7. ezplatform.com eZ Platform
    8. 8. © https://unsplash.com/photos/osSryggkso4
    9. 9. ezplatform.com eZ Platform - API
    10. 10. www.ez.no
    11. 11. www.ez.no eZ Platform – Type de contenu FieldTypeName
    12. 12. www.ez.no eZ Platform - Versions
    13. 13. www.ez.no eZ Platform – Statut des contenus
    14. 14. www.ez.no eZ Platform - Multilangues
    15. 15. Locations ?
    16. 16. www.ez.no eZ Platform – Top Locations
    17. 17. www.ez.no eZ Platform – Multiple emplacements
    18. 18. SiteAccess ?
    19. 19. 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, … )
    20. 20. 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
    21. 21. www.ez.no eZ Platform – Exemple de SiteAccess
    22. 22. HTTP Cache ?
    23. 23. www.ez.no eZ Platform – Headers !
    24. 24. Varnish {cache|project|plus|software} Guillaume Quintard guillaume@varni.sh
    25. 25. Varnish Cache - Serveur de cache HTTP - Open-source - Rapide, très rapide - Extrêmement flexible - Géré par Varnish Project
    26. 26. 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.
    27. 27. Points d’architecture - VCL: Configuration Language - VMODS: MODules - VSL: Shared Log - 2 CVE (mineures) en 10 ans
    28. 28. VCL
    29. 29. VCL sub vcl_recv { if (req.url ~ “^/admin/”) { return (pass); } }
    30. 30. Points d’architecture - VCL: Configuration Language - VMODS: MODules - VSL: Shared Log - 2 CVE (mineures) en 10 ans
    31. 31. Varnish Custom Statistics Guillaume Quintard guillaume@varni.sh
    32. 32. 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
    33. 33. 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", ...
    34. 34. 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", ...
    35. 35. 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 }, ...
    36. 36. 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); } }
    37. 37. Application
    38. 38. 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, "?.*", "") ); } }
    39. 39. A/B testing Guillaume Quintard guillaume@varni.sh
    40. 40. 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.
    41. 41. 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.
    42. 42. 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’.
    43. 43. 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"; } }
    44. 44. Coté Varnish: cookies sub vcl_deliver { header.append(resp.http.set-cookie, "abgroup=" + req.http.x-group + "; Expires=" + cookie.format_rfc1123(now, 1h) + "; httpOnly"); }
    45. 45. Coté Varnish: accès sub vcl_deliver { std.log(“vcs-key: access“ + req.http.x-group); }
    46. 46. Résultats Il reste à comparer: 50/50 et accessA/accessB
    47. 47. 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
    48. 48. QUESTIONS ? DEMO

    ×