Life on the Edge with ESI

Post on 22-Feb-2017

120 views 0 download

Transcript of Life on the Edge with ESI

Life on the Edge with ESIKit Chan(kichan@yahoo-inc.com)

Yahoo!

Life on the Edge

Source: http://img.shockblast.net/2012/01/ShockBlast-4-803109.jpg

Agenda Introduction Use Cases Performance Characteristics Future Q&A

Agenda Introduction Use Cases Performance Characteristics Future Q&A

Edge Computing/CDN Source: http://www.excitingip.com/wp-content/uploads/2011/01/contentdeliverynetworkblockdiagram.jpeg

CDN in Yahoo!

- Pages: avg 30.2 Gbps send, 28.48 Gbps recv, 20.2% cache ratio- Assets: avg 38.7 Gbps send, 4.1 Gbps recv. 96.7% cache hit ratio

User Location Latency - 100K file in US Through Y! EdgeCalifornia, USA 0.2s 0.02sSingapore 2s 0.02sKorea 1.3s 0.02sIreland 1.2s 0.2sSwitzerland 1.0s 0.2s

Edge Computing in Yahoo!

- Pages: avg 30.2 Gbps send, 28.48 Gbps recv, 20.2% cache ratio- Assets: avg 38.7 Gbps send, 4.1 Gbps recv. 96.7% cache hit ratio

User Location Latency - 100K file in US Through Y! EdgeCalifornia, USA 0.2s 0.02sSingapore 2s 0.02sKorea 1.3s 0.02sIreland 1.2s 0.2sSwitzerland 1.0s 0.2s

ESI – Edge Side Includes

Syntax ExampleMarkup in Response<esi:include src=http://xyz.com/content.html/>

Syntax ExampleCan handle response error and timeout<esi:try><esi:attempt> <esi:include src=http://xyz.com/content.html/ ></esi:attempt><esi:except> Sorry there is an error!</esi:except></esi:try>

ESI Support in Proxy Server – Proven & Popular

ESI Support in CDN Vendor

Agenda Introduction Use Cases Performance Characteristics Future Q&A

Use Case 1 – Content Assembly

Use Case 1 – Content Assembly

Use Case 1 – Content Assembly

Use Case 1 - Content Assembly

Why? Performance!No server cache + No ESI

Server cache + No ESI

ATS Cache + ESI modules

ScenarioOrigin Server Handling Full Page requests each time and executing every module every time.

Origin Server handling full page requests, only executing non cacheable modules

Origin Server only serving requests for non cacheable modules

FE throughput per box

45 queries per second

140 queries per second

190 queries per second

Server latency 900 ms per request 80 ms per page 55 ms per page

Why? AvailabilityWhy it goes down?- Releases- Outage

How ESI Help?- Template cached- Fallback for each ESI module

Why? Legacy Module Support

Use Case 2 – Combo HandlerAllow us to fetch multiple JS/CSS in one HTTP requestE.g. http://l.yimg.com/zz/combo?d/1.js&d/2.js

- It combines http://l.yimg.com/d/1.js and http://l.yimg.com/d/2.js into one response in the server and returns one response

Minimize HTTP requests from browser to increase performance

Combo Handler Sequence Diagram

Sample ESI Doc from Combo URL Decode Service<esi:try><esi:attempt> <esi:include src=http://l.yimg.com/d/1.js/></esi:attempt><esi:except> /* error fetching 1.js */</esi:except></esi:try><esi:try><esi:attempt> <esi:include src=http://l.yimg.com/d/2.js/ ></esi:attempt><esi:except> /* error fetching 2.js */</esi:except></esi:try>

Why? ATS with ESI Plugin

- Provide sophisticated features for HTTP resource caching- Provide other features such as timeout, collapse forwarding for request- Provide capability of fetching contents simultaneously and assembling

them together

Use Case 3 - Timely Launch

Before Launch

After Launch

Timely Launch – Before Launch

Timely Launch – Before Launch

Timely Launch – After Launch

Timely Launch – After Launch

Usage Pattern

ClientProxy

Server/CDN

ESI Service

Origin Server for ESI Include

Agenda Introduction Use Cases Performance Characteristics Future Q&A

Concurrent Requests

First Byte Flush

ESI Support in VarnishNo concurrent requests for includesFirst Byte Flush Support

ESI Support in Apache Traffic ServerConcurrent requests for includesFirst Byte Flush Support*

Agenda Introduction Use Cases Performance Characteristics Future Q&A

HistoryThe spec (ESI 1.0) is published over 10 years ago.- W3C spec- Editor - Mark Nottingham from Akamai

Mark Nottinghamhttp://www.mnot.net/

Future – Deep HTTP Integration

ClientProxy Server Supporting

ESI

Origin Server returing ESI Document

Origin Server for ESI Include

Future – Deep HTTP Integration

ClientProxy Server Supporting

ESI

Origin Server returing ESI Document

Origin Server for ESI Include

Final response header to user cannot be changed

Future – Deep HTTP Integration

ClientProxy Server Supporting

ESI

Origin Server returing ESI Document

Origin Server for ESI Include

Final response header to user can be changed

Request Header, method, timeout cannot be changed for includes

Future – Deep HTTP Integration

ClientProxy Server Supporting

ESI

Origin Server returing ESI Document

Origin Server for ESI Include

Request/Response Header cannot be retrieved as variables

Final response header to user can be changed

Request Header, method, timeout can be changed for includes

Future – Smart Assembly

One request for multiple includes (e.g. one Ad call fetching multiple ad position)

Future – More Use casesDevice DetectionBucket Testing

http://illusionmedia.com/wp-content/uploads/2012/03/mobileDevices1-300x200.jpg

https://doazrm3qeh7n2.cloudfront.net/images/features/quick-a-vs-b-testing.jpg

Agenda Introduction Use Cases Performance Characteristics Future Q&A

Q & A

Thank youkichan@yahoo-inc.com

Reference ESI Language Specification – http://www.w3.org/TR/esi-lang Edge Architecture Specification - http://www.w3.org/TR/edge-arch ATS ESI plugin - https://github.com/apache/trafficserver/blob/master/plugins/experimental/

esi/README Varnish ESI - https://www.varnish-cache.org/docs/3.0/tutorial/esi.html Akamai ESI - http://www.akamai.com/dl/technical_publications/akamai_esi_extensions.pdf F5 - http://support.f5.com/kb/en-us/products/wa/manuals/product/wa9_4policy/

WA_Policy_9_4-19-1.html

Extra: Moving to the Real Edge? – the Clients Problem with SEO Performance - More HTTP requests between clients and edge servers