netcentric: customer experience

16
Varnish Plus – a customer experience AUTHOR: DATE: TO: Dan Beldiman [email protected] 11.02.2016 Varnish Summit Berlin

Upload: varnish-software

Post on 12-Apr-2017

402 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Netcentric: customer experience

Varnish Plus – a customer experience

AUTHOR: DATE: TO:

Dan [email protected] 11.02.2016 Varnish Summit Berlin

Page 2: Netcentric: customer experience

About Netcentric and Dan Beldiman

Who

We implement and operate large and complex web content management systems ✱  Based on Adobe Experience Manager (AEM) ✱  High profile customers with a world-wide user base

I design the architecture and make sure it runs fast and reliable ✱  Solutions Architect ✱  Head of Systems Engineering at Netcentric

Page 3: Netcentric: customer experience

Our typical Challanges

Two month release cycles, every release approx. 500 PDs development

Security Policies and Risk Assessments

Complex solutions in the backend, queries can take long

Segregation of duties for operations

Page 4: Netcentric: customer experience

Varnish Plus – Our Solution

It is far more than just caching ✱  Functionality which allows us to implement

requirements efficiently ✱  Reliable and easy to maintain ✱  Support and consulting provided

Page 5: Netcentric: customer experience

… then the out of the box caching of AEM ✱  Highly flexible caching and flushing configuration ✱  Caching on request basis

✱  Queuing of multiple requests to the same page while not yet in cache

Why Varnish Plus caches better ...

✱  Web pages ✱  Redirects

Page 6: Netcentric: customer experience

Our typical Caching Setup

Varnish AEM Apache

SSO GeoIP MURL

Page 7: Netcentric: customer experience

Use Cases

Page 8: Netcentric: customer experience

Highly flexible caching logic

Varnish allow us to cache exactly how we need Some pages flushed on activation ✱  Content pages

Usage of ESI, which allow to flush parts of a page ✱  Stock ticker

Some page components flushed on expiration ✱  Personalized activity streams

1

Page 9: Netcentric: customer experience

Internal CDN

Various applications – delivery with Varnish

100.000 internal users distributed around the globe ✱  Various backend systems – all based in Switzerland

Allows caching close to end user ✱  Reduced the length of the wire

2

Page 10: Netcentric: customer experience

Migration of legacy Systems

Smooth Migration, new and old system in paralell

Old and new backend used in parallel ✱  Content Structure and naming remained unchanged

Content Migration with restructuring ✱  Redirect Feature in AEM

3

Varnish

AEM

Legacy Hosting

1) GET

2) GET

3) 404

4) GET

5) 200

6) 200

Page 11: Netcentric: customer experience

How we use it

Page 12: Netcentric: customer experience

Cut Content right 1

if (req.url ~ "^/content/intranet/\w{2}/group-regional-ceo"){ set req.url = regsuball(req.url,"(^/content/intranet/\w{2})/group-regional-ceo(/.*)","\1/regional-presidents\2"); }

Intranet content subtree was moved ✱  Moving takes several hours ✱  Move was not planed properly ✱  New and Old URLs where in use

Redirect in Varnish

Page 13: Netcentric: customer experience

Dig to the problem 2

Pages with bad date formatting where delivered ✱  Extensive analysis using varnish log ✱  Accept-Language header was not set by requests from

monitoring system ✱  Java Standard Taglib (JSTL) renders date in unexpected

format if header not set (if set, the value does not matter)

Setting Headers ✱  Setting headers when not set

#FITREQ-24502 set default accept language header if (!req.http.Accept-Language) { set req.http.Accept-Language = "en_US"; }

Page 14: Netcentric: customer experience

Fix other application‘s defects 3

Authenticated users where suddenly logged out ✱  Sometimes logged in users where logged out ✱  CQ Servlet Engine did not support connection re-use ✱  JSESSIONID of 1st request was used for all consecutive

request on same TCP connection

Configuration of dedicated backend ✱  Only relevant for html request ✱  Configure dedicated backend for html requests ✱  Disable connection re-use for this backend

Page 15: Netcentric: customer experience

3 Fix other application‘s defects

backend html_requests { .host = "localhost"; .port = "4502";}

sub vcl_recv { if(req.url ~ "\.html”) { set req.backend_hint = html_requests; }}

sub vcl_pass { if (req.backend_hint == html_requests) { set req.http.Connection = "close"; } return (fetch);}

Page 16: Netcentric: customer experience

Questions?