Life on the Edge with ESI Kit 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! User Location Latency - 100K file in US Through Y! Edge California, USA 0.2s 0.02s Singapore 2s 0.02s Korea 1.3s 0.02s Ireland 1.2s 0.2s Switzerland 1.0s 0.2s - 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 Edge Computing in Yahoo! User Location Latency - 100K file in US Through Y! Edge California, USA 0.2s 0.02s Singapore 2s 0.02s Korea 1.3s 0.02s Ireland 1.2s 0.2s Switzerland 1.0s 0.2s - 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 ESI – Edge Side Includes Syntax Example Markup in Response <esi:include src=http://xyz.com/content.html/> Syntax Example Can 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! Scenario No server cache + No ESI Origin Server Handling Full Page requests each time and executing every module every time. Server cache + No ESI Origin Server handling full page requests, only executing non cacheable modules FE throughput per box Server latency 45 queries per 140 queries per second second 900 ms per request 80 ms per page ATS Cache + ESI modules Origin Server only serving requests for non cacheable modules 190 queries per second 55 ms per page Why? Availability Why it goes down? - Releases - Outage How ESI Help? - Template cached - Fallback for each ESI module Why? Legacy Module Support Use Case 2 – Combo Handler Allow us to fetch multiple JS/CSS in one HTTP request E.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 ESI Service Client Proxy Server/CDN Origin Server for ESI Include Agenda Introduction Use Cases Performance Characteristics Future Q&A Concurrent Requests First Byte Flush ESI Support in Varnish No concurrent requests for includes First Byte Flush Support ESI Support in Apache Traffic Server Concurrent requests for includes First Byte Flush Support* Agenda Introduction Use Cases Performance Characteristics Future Q&A History The spec (ESI 1.0) is published over 10 years ago. - W3C spec - Editor - Mark Nottingham from Akamai Mark Nottingham http://www.mnot.net/ Future – Deep HTTP Integration Origin Server returing ESI Document Client Proxy Server Supporting ESI Origin Server for ESI Include Future – Deep HTTP Integration Origin Server returing ESI Document Client Proxy Server Supporting ESI Origin Server for ESI Include Final response header to user cannot be changed Future – Deep HTTP Integration Request Header, method, timeout cannot be changed for includes Client Origin Server returing ESI Document Proxy Server Supporting ESI Origin Server for ESI Include Final response header to user can be changed Future – Deep HTTP Integration Request Header, method, timeout can be changed for includes Client Origin Server returing ESI Document Proxy Server Supporting ESI Origin Server for ESI Include Final response header to user can be changed Request/Response Header cannot be retrieved as variables Future – Smart Assembly One request for multiple includes (e.g. one Ad call fetching multiple ad position) Future – More Use cases Device Detection Bucket Testing https://doazrm3qeh7n2.cloudfront.net/images/features/quick-a-vs-b-testing.jpg http://illusionmedia.com/wp-content/uploads/2012/03/mobileDevices1300x200.jpg Agenda Introduction Use Cases Performance Characteristics Future Q&A Q&A Thank you kichan@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/enus/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
© Copyright 2024