Reducing latency on the web with the Azure CDN- TechDays NL 2014

Maarten Balliauw
Maarten BalliauwDeveloper Advocate
Reducing latency on the web with the Azure CDN- TechDays NL 2014
Laat ons weten wat u vindt van deze sessie! Vul de evaluatie
in via www.techdaysapp.nl en maak kans op een van de 20
prijzen*. Prijswinnaars worden bekend gemaakt via Twitter
(#TechDaysNL). Gebruik hiervoor de code op uw badge.
Let us know how you feel about this session! Give your
feedback via www.techdaysapp.nl and possibly win one of
the 20 prizes*. Winners will be announced via Twitter
(#TechDaysNL). Use your personal code on your badge.
* Over de uitslag kan niet worden gecorrespondeerd, prijzen zijn voorbeelden – All results are final, prizes are
examples
Reducing latency on
the web with the Azure
CDN
Maarten Balliauw
@maartenballiauw
Who am I?
• Maarten Balliauw
• Antwerp, Belgium
• Technical Evangelist, JetBrains
• Founder, MyGet
• AZUG
• Focus on web
• ASP.NET MVC, Azure, SignalR, ...
• MVP Azure & ASPInsider
• Big passion: Azure
• http://blog.maartenballiauw.be
• @maartenballiauw
Shameless self promotion: Pro NuGet -
http://amzn.to/pronuget2
Agenda
• Why use a CDN?
• The Azure CDN
• Blob containers
• Cloud services
• Serving dynamic content over the CDN
• Conclusions
Why use a
CDN?
How browsers work...
•Request fetching <html>
• Download CSS
• Download images
• Download JavaScript
• Download Google Analytics
•Finite # of concurrent requests per host (and in
total)!
• Bundling/minification
• Use multiple hosts
How browsers work...
http://www.browserscope.org/?category=network
Browser # connections / host Max # connections
Chrome 32 6 10
Firefox 26 6 17
IE 9 6 35
IE 10 8 16
IE 11 13 17
Safari 7 6 17
Android 4 6 17
IEMobile 9 6 60
Why care? I use bundling and
minification!
Speed of light and TCP don’t like each
other
•US East – US West = 7400 km
• or 25 ms at speed of light (299792,458 km/second in a vacuum)
• or 37 ms through fiber optics (66% of SoL, glass refraction index 1.5)
•TCP request/response, ACK request/response
• double that 37 ms, add some compute: ~90 ms US East to West
•Theoretical max. packet size is 64 kB
• usually +/- 1500 bytes (MTU)
•TCP slow start
http://www.stevesouders.com/blog/2010/07/13/velocity-tcp-and-
the-lower-bound-of-web-performance/
Combine TCP slow start and fibre optics
US East – US West
~90ms + TCP slow start
256 kB ~ 10 TCP roundtrips
that 90 ms becomes 900 ms...
http://www.stevesouders.com/blog/2010/07/13/velocity-tcp-and-
the-lower-bound-of-web-performance/
Cost of web load
•Serving static files costs CPU
• Full IIS pipeline for a tiny static file
•Serving static files costs I/O
• Files have to be copied from file stream to response stream
• Why do this? Why not let the server handle our dynamic
content?
•Cookies!
• Request/response cycle adds the cookie
• Even for a 1 kB PNG
So there are some problems on the
Internet...
•Browsers / connections
•Speed of light / TCP slow start
•Cost of web load (CPU, I/O and cookies)
“The Internet sucks and
so does your server.”
- Andy Cross - @andybareweb
Workarounds!
•Browsers / connections
• Serve some content off a different hostname
•Speed of light / TCP slow start
• Move content closer to the user
•Cost of web load (CPU, I/O and cookies)
• Serve off a cookieless domain
• Move content off the web server and let someone else handle it
The Azure CDN
The Azure CDN
•Serve content from storage / cloud service
•Separate hostname (custom domain possible)
•Many locations around the globe
•DNS anycast to get content close to user
CDN locations (April 1st, 2014)
http://msdn.microsoft.com/en-
US/library/azure/gg680302.aspx
How it works: no CDN
How it works: with CDN
Demo
Creating a CDN endpoint
What did we just do?
•First request
•Second request (on same endpoint)
yawn!
How to use this in real life?
•Create one/more public blob containers
•Upload static files in there
(CSS, images, scripts, ...)
•Update your application to the new URLs
Demo
An application with a CDN endpoint
How to delete content from the CDN?
•Read a book or 2 and wait  (7 days default...)
•Think about this upfront!
• If you know expiry, set the Cache-Control header (shorter = more
updates)
• If you don’t, use versioning in query strings
• Better: use both
Versioning
•Enable query strings on the CDN endpoint
•Use a query string with a meaningful version number
•CDN will keep a cache per URL per query string
• /foo/bar?v=1
• /foo/bar?v=2
• /foo/bar?v=3
Cloud services will make life easier
•We had to “manually” upload content to storage
• May be good, may be cumbersome, depends!
• Would be nice if we could “deploy and forget”
•Set a cloud service as the CDN origin
• Will serve all content from /cdn URL
• Same cache-control rules as with storage
Demo
Using Cloud Services as the CDN origin
Best-practices for content on the CDN
•Set headers!
• Cache-Control
• Content-Type
• Content-Encoding
•Version content!
•HTTP compression on origin = HTTP compression on
CDN
Serving
dynamic
content
Defining “dynamic content”
•Content that is generated
• Parameters from query string, ASP.NET routing, ...
• And/or based on data
•Content that refreshes, but not too often
• Anything > a couple of minutes
•Examples
• Charts, images, generated documents, json, API’s, ...
Demo
Serving dynamic content
Conclusions
Conclusions
• Why use a CDN?
• The Azure CDN
• Blob containers
• Cloud services
• Serving dynamic content over the CDN
What have we learned?
Thank you!
http://blog.maartenballiauw.be
@maartenballiauw
http://amzn.to/pronuget
Laat ons weten wat u vindt van deze sessie! Vul de evaluatie
in via www.techdaysapp.nl en maak kans op een van de 20
prijzen*. Prijswinnaars worden bekend gemaakt via Twitter
(#TechDaysNL). Gebruik hiervoor de code op uw badge.
Let us know how you feel about this session! Give your
feedback via www.techdaysapp.nl and possibly win one of
the 20 prizes*. Winners will be announced via Twitter
(#TechDaysNL). Use your personal code on your badge.
* Over de uitslag kan niet worden gecorrespondeerd, prijzen zijn voorbeelden – All results are final, prizes are
examples
1 of 36

Recommended

Reducing latency on the web with the Azure CDN - DevSum - SWAG by
Reducing latency on the web with the Azure CDN - DevSum - SWAGReducing latency on the web with the Azure CDN - DevSum - SWAG
Reducing latency on the web with the Azure CDN - DevSum - SWAGMaarten Balliauw
2.6K views34 slides
WordPress At Scale. WordCamp Dhaka 2019 by
WordPress At Scale. WordCamp Dhaka 2019WordPress At Scale. WordCamp Dhaka 2019
WordPress At Scale. WordCamp Dhaka 2019Anam Ahmed
335 views45 slides
Performance optimization - Advanced techniques by
Performance optimization - Advanced techniquesPerformance optimization - Advanced techniques
Performance optimization - Advanced techniquesFilip Mares
478 views25 slides
Performance optimization - JavaScript by
Performance optimization - JavaScriptPerformance optimization - JavaScript
Performance optimization - JavaScriptFilip Mares
748 views20 slides
[AWSKRUG&JAWS-UG Meetup #1] 70% Cost Reduction with On-demand resizing by
[AWSKRUG&JAWS-UG Meetup #1] 70% Cost Reduction with On-demand resizing[AWSKRUG&JAWS-UG Meetup #1] 70% Cost Reduction with On-demand resizing
[AWSKRUG&JAWS-UG Meetup #1] 70% Cost Reduction with On-demand resizingAWSKRUG - AWS한국사용자모임
477 views49 slides
Happy Browser, Happy User! WordSesh 2019 by
Happy Browser, Happy User! WordSesh 2019Happy Browser, Happy User! WordSesh 2019
Happy Browser, Happy User! WordSesh 2019Katie Sylor-Miller
453 views126 slides

More Related Content

What's hot

WordCamp RVA by
WordCamp RVAWordCamp RVA
WordCamp RVAcodearachnid_test
164 views15 slides
We All Live in a Yellow (Serverless) Submarine by
We All Live in a Yellow (Serverless) SubmarineWe All Live in a Yellow (Serverless) Submarine
We All Live in a Yellow (Serverless) SubmarineFITC
363 views60 slides
Drupal in the cloud with Windows Azure by
Drupal in the cloud with Windows AzureDrupal in the cloud with Windows Azure
Drupal in the cloud with Windows AzureLeTesteur
2.5K views22 slides
Harder, Better, Faster, Stronger by
Harder, Better, Faster, StrongerHarder, Better, Faster, Stronger
Harder, Better, Faster, StrongerDavid Engel
1.5K views13 slides
Svcc by
SvccSvcc
SvccManu Mukerji
360 views16 slides
Event Driven Architecture Concepts in Web Technologies - Part 1 by
Event Driven Architecture Concepts in Web Technologies - Part 1Event Driven Architecture Concepts in Web Technologies - Part 1
Event Driven Architecture Concepts in Web Technologies - Part 1Hamidreza Soleimani
719 views7 slides

What's hot(18)

We All Live in a Yellow (Serverless) Submarine by FITC
We All Live in a Yellow (Serverless) SubmarineWe All Live in a Yellow (Serverless) Submarine
We All Live in a Yellow (Serverless) Submarine
FITC363 views
Drupal in the cloud with Windows Azure by LeTesteur
Drupal in the cloud with Windows AzureDrupal in the cloud with Windows Azure
Drupal in the cloud with Windows Azure
LeTesteur2.5K views
Harder, Better, Faster, Stronger by David Engel
Harder, Better, Faster, StrongerHarder, Better, Faster, Stronger
Harder, Better, Faster, Stronger
David Engel1.5K views
Event Driven Architecture Concepts in Web Technologies - Part 1 by Hamidreza Soleimani
Event Driven Architecture Concepts in Web Technologies - Part 1Event Driven Architecture Concepts in Web Technologies - Part 1
Event Driven Architecture Concepts in Web Technologies - Part 1
Web performance mercadolibre - ECI 2013 by Santiago Aimetta
Web performance   mercadolibre - ECI 2013Web performance   mercadolibre - ECI 2013
Web performance mercadolibre - ECI 2013
Santiago Aimetta1.2K views
Maurizio Mangione - Get the best out of your PWA with Workbox JS - Codemotion... by Codemotion
Maurizio Mangione - Get the best out of your PWA with Workbox JS - Codemotion...Maurizio Mangione - Get the best out of your PWA with Workbox JS - Codemotion...
Maurizio Mangione - Get the best out of your PWA with Workbox JS - Codemotion...
Codemotion177 views
Introduction to performance tuning perl web applications by Perrin Harkins
Introduction to performance tuning perl web applicationsIntroduction to performance tuning perl web applications
Introduction to performance tuning perl web applications
Perrin Harkins12.1K views
Web agencies: An analysis of the OVH infrastructure to optimise your web proj... by OVHcloud
Web agencies: An analysis of the OVH infrastructure to optimise your web proj...Web agencies: An analysis of the OVH infrastructure to optimise your web proj...
Web agencies: An analysis of the OVH infrastructure to optimise your web proj...
OVHcloud345 views
Nginx: Accelerate Rails, HTTP Tricks by Adam Wiggins
Nginx: Accelerate Rails, HTTP TricksNginx: Accelerate Rails, HTTP Tricks
Nginx: Accelerate Rails, HTTP Tricks
Adam Wiggins16.2K views
Cache all the things #DCLondon by digital006
Cache all the things #DCLondonCache all the things #DCLondon
Cache all the things #DCLondon
digital006496 views
Wordpress -> Middleman: Lesson learned in the 2-years since migrating by James Stone
Wordpress -> Middleman: Lesson learned in the 2-years since migratingWordpress -> Middleman: Lesson learned in the 2-years since migrating
Wordpress -> Middleman: Lesson learned in the 2-years since migrating
James Stone1.3K views
Npm and bower by Joan Yin
Npm and bowerNpm and bower
Npm and bower
Joan Yin444 views
Amazon Web Services Customer Case Study, Fashion for Home by Amazon Web Services
Amazon Web Services Customer Case Study, Fashion for HomeAmazon Web Services Customer Case Study, Fashion for Home
Amazon Web Services Customer Case Study, Fashion for Home
Amazon Web Services3.3K views

Similar to Reducing latency on the web with the Azure CDN- TechDays NL 2014

Simpler, faster, cheaper Enterprise Apps using only Spring Boot on GCP by
Simpler, faster, cheaper Enterprise Apps using only Spring Boot on GCPSimpler, faster, cheaper Enterprise Apps using only Spring Boot on GCP
Simpler, faster, cheaper Enterprise Apps using only Spring Boot on GCPDaniel Zivkovic
189 views47 slides
Extending Your Applications to the Edge with CDNs by
Extending Your Applications to the Edge with CDNsExtending Your Applications to the Edge with CDNs
Extending Your Applications to the Edge with CDNsSalesforce Developers
849 views76 slides
PAC 2019 virtual Mark Tomlinson by
PAC 2019 virtual Mark TomlinsonPAC 2019 virtual Mark Tomlinson
PAC 2019 virtual Mark TomlinsonNeotys
188 views18 slides
Dynamic Content Acceleration: Lightning Fast Web Apps with Amazon CloudFront ... by
Dynamic Content Acceleration: Lightning Fast Web Apps with Amazon CloudFront ...Dynamic Content Acceleration: Lightning Fast Web Apps with Amazon CloudFront ...
Dynamic Content Acceleration: Lightning Fast Web Apps with Amazon CloudFront ...Amazon Web Services
4.4K views160 slides
Website & Internet + Performance testing by
Website & Internet + Performance testingWebsite & Internet + Performance testing
Website & Internet + Performance testingRoman Ananev
44 views44 slides
Otimizando servidores web by
Otimizando servidores webOtimizando servidores web
Otimizando servidores webAmazon Web Services LATAM
2K views57 slides

Similar to Reducing latency on the web with the Azure CDN- TechDays NL 2014(20)

Simpler, faster, cheaper Enterprise Apps using only Spring Boot on GCP by Daniel Zivkovic
Simpler, faster, cheaper Enterprise Apps using only Spring Boot on GCPSimpler, faster, cheaper Enterprise Apps using only Spring Boot on GCP
Simpler, faster, cheaper Enterprise Apps using only Spring Boot on GCP
Daniel Zivkovic189 views
PAC 2019 virtual Mark Tomlinson by Neotys
PAC 2019 virtual Mark TomlinsonPAC 2019 virtual Mark Tomlinson
PAC 2019 virtual Mark Tomlinson
Neotys188 views
Dynamic Content Acceleration: Lightning Fast Web Apps with Amazon CloudFront ... by Amazon Web Services
Dynamic Content Acceleration: Lightning Fast Web Apps with Amazon CloudFront ...Dynamic Content Acceleration: Lightning Fast Web Apps with Amazon CloudFront ...
Dynamic Content Acceleration: Lightning Fast Web Apps with Amazon CloudFront ...
Amazon Web Services4.4K views
Website & Internet + Performance testing by Roman Ananev
Website & Internet + Performance testingWebsite & Internet + Performance testing
Website & Internet + Performance testing
Roman Ananev44 views
AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur... by Amazon Web Services
AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...
AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...
Amazon Web Services2.2K views
Where Django Caching Bust at the Seams by Concentric Sky
Where Django Caching Bust at the SeamsWhere Django Caching Bust at the Seams
Where Django Caching Bust at the Seams
Concentric Sky16.4K views
CassandraSummit2015_Cassandra upgrades at scale @ NETFLIX by Vinay Kumar Chella
CassandraSummit2015_Cassandra upgrades at scale @ NETFLIXCassandraSummit2015_Cassandra upgrades at scale @ NETFLIX
CassandraSummit2015_Cassandra upgrades at scale @ NETFLIX
Vinay Kumar Chella800 views
Challenges behind the scenes of the large Swiss e-Commerce shop apfelkiste.ch... by nine
Challenges behind the scenes of the large Swiss e-Commerce shop apfelkiste.ch...Challenges behind the scenes of the large Swiss e-Commerce shop apfelkiste.ch...
Challenges behind the scenes of the large Swiss e-Commerce shop apfelkiste.ch...
nine61 views
Dynamic Content Acceleration: Amazon CloudFront and Amazon Route 53 (ARC309) ... by Amazon Web Services
Dynamic Content Acceleration: Amazon CloudFront and Amazon Route 53 (ARC309) ...Dynamic Content Acceleration: Amazon CloudFront and Amazon Route 53 (ARC309) ...
Dynamic Content Acceleration: Amazon CloudFront and Amazon Route 53 (ARC309) ...
Amazon Web Services11.7K views
Azure Functions - Get rid of your servers, use functions! by QAware GmbH
Azure Functions - Get rid of your servers, use functions!Azure Functions - Get rid of your servers, use functions!
Azure Functions - Get rid of your servers, use functions!
QAware GmbH814 views
Benchmarking your cloud performance with top 4 global public clouds by data://disrupted®
Benchmarking your cloud performance with top 4 global public cloudsBenchmarking your cloud performance with top 4 global public clouds
Benchmarking your cloud performance with top 4 global public clouds
data://disrupted®111 views
Getting Started with Heroku by LaunchAny
Getting Started with HerokuGetting Started with Heroku
Getting Started with Heroku
LaunchAny5.6K views
Demonstrating 100 Gbps in and out of the Clouds by Igor Sfiligoi
Demonstrating 100 Gbps in and out of the CloudsDemonstrating 100 Gbps in and out of the Clouds
Demonstrating 100 Gbps in and out of the Clouds
Igor Sfiligoi185 views
Distributed Tensorflow with Kubernetes - data2day - Jakob Karalus by Jakob Karalus
Distributed Tensorflow with Kubernetes - data2day - Jakob KaralusDistributed Tensorflow with Kubernetes - data2day - Jakob Karalus
Distributed Tensorflow with Kubernetes - data2day - Jakob Karalus
Jakob Karalus946 views
SPDY - http reloaded - WebTechConference 2012 by Fabian Lange
SPDY - http reloaded - WebTechConference 2012SPDY - http reloaded - WebTechConference 2012
SPDY - http reloaded - WebTechConference 2012
Fabian Lange4.1K views

More from Maarten Balliauw

Nerd sniping myself into a rabbit hole... Streaming online audio to a Sonos s... by
Nerd sniping myself into a rabbit hole... Streaming online audio to a Sonos s...Nerd sniping myself into a rabbit hole... Streaming online audio to a Sonos s...
Nerd sniping myself into a rabbit hole... Streaming online audio to a Sonos s...Maarten Balliauw
360 views64 slides
Building a friendly .NET SDK to connect to Space by
Building a friendly .NET SDK to connect to SpaceBuilding a friendly .NET SDK to connect to Space
Building a friendly .NET SDK to connect to SpaceMaarten Balliauw
182 views47 slides
Microservices for building an IDE - The innards of JetBrains Rider - NDC Oslo... by
Microservices for building an IDE - The innards of JetBrains Rider - NDC Oslo...Microservices for building an IDE - The innards of JetBrains Rider - NDC Oslo...
Microservices for building an IDE - The innards of JetBrains Rider - NDC Oslo...Maarten Balliauw
404 views52 slides
Indexing and searching NuGet.org with Azure Functions and Search - .NET fwday... by
Indexing and searching NuGet.org with Azure Functions and Search - .NET fwday...Indexing and searching NuGet.org with Azure Functions and Search - .NET fwday...
Indexing and searching NuGet.org with Azure Functions and Search - .NET fwday...Maarten Balliauw
180 views32 slides
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain... by
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...Maarten Balliauw
326 views53 slides
JetBrains Australia 2019 - Exploring .NET’s memory management – a trip down m... by
JetBrains Australia 2019 - Exploring .NET’s memory management – a trip down m...JetBrains Australia 2019 - Exploring .NET’s memory management – a trip down m...
JetBrains Australia 2019 - Exploring .NET’s memory management – a trip down m...Maarten Balliauw
279 views42 slides

More from Maarten Balliauw(20)

Nerd sniping myself into a rabbit hole... Streaming online audio to a Sonos s... by Maarten Balliauw
Nerd sniping myself into a rabbit hole... Streaming online audio to a Sonos s...Nerd sniping myself into a rabbit hole... Streaming online audio to a Sonos s...
Nerd sniping myself into a rabbit hole... Streaming online audio to a Sonos s...
Maarten Balliauw360 views
Building a friendly .NET SDK to connect to Space by Maarten Balliauw
Building a friendly .NET SDK to connect to SpaceBuilding a friendly .NET SDK to connect to Space
Building a friendly .NET SDK to connect to Space
Maarten Balliauw182 views
Microservices for building an IDE - The innards of JetBrains Rider - NDC Oslo... by Maarten Balliauw
Microservices for building an IDE - The innards of JetBrains Rider - NDC Oslo...Microservices for building an IDE - The innards of JetBrains Rider - NDC Oslo...
Microservices for building an IDE - The innards of JetBrains Rider - NDC Oslo...
Maarten Balliauw404 views
Indexing and searching NuGet.org with Azure Functions and Search - .NET fwday... by Maarten Balliauw
Indexing and searching NuGet.org with Azure Functions and Search - .NET fwday...Indexing and searching NuGet.org with Azure Functions and Search - .NET fwday...
Indexing and searching NuGet.org with Azure Functions and Search - .NET fwday...
Maarten Balliauw180 views
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain... by Maarten Balliauw
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
Maarten Balliauw326 views
JetBrains Australia 2019 - Exploring .NET’s memory management – a trip down m... by Maarten Balliauw
JetBrains Australia 2019 - Exploring .NET’s memory management – a trip down m...JetBrains Australia 2019 - Exploring .NET’s memory management – a trip down m...
JetBrains Australia 2019 - Exploring .NET’s memory management – a trip down m...
Maarten Balliauw279 views
.NET Conf 2019 - Indexing and searching NuGet.org with Azure Functions and Se... by Maarten Balliauw
.NET Conf 2019 - Indexing and searching NuGet.org with Azure Functions and Se....NET Conf 2019 - Indexing and searching NuGet.org with Azure Functions and Se...
.NET Conf 2019 - Indexing and searching NuGet.org with Azure Functions and Se...
Maarten Balliauw290 views
CloudBurst 2019 - Indexing and searching NuGet.org with Azure Functions and S... by Maarten Balliauw
CloudBurst 2019 - Indexing and searching NuGet.org with Azure Functions and S...CloudBurst 2019 - Indexing and searching NuGet.org with Azure Functions and S...
CloudBurst 2019 - Indexing and searching NuGet.org with Azure Functions and S...
Maarten Balliauw564 views
NDC Oslo 2019 - Indexing and searching NuGet.org with Azure Functions and Search by Maarten Balliauw
NDC Oslo 2019 - Indexing and searching NuGet.org with Azure Functions and SearchNDC Oslo 2019 - Indexing and searching NuGet.org with Azure Functions and Search
NDC Oslo 2019 - Indexing and searching NuGet.org with Azure Functions and Search
Maarten Balliauw957 views
Approaches for application request throttling - Cloud Developer Days Poland by Maarten Balliauw
Approaches for application request throttling - Cloud Developer Days PolandApproaches for application request throttling - Cloud Developer Days Poland
Approaches for application request throttling - Cloud Developer Days Poland
Maarten Balliauw1.1K views
Indexing and searching NuGet.org with Azure Functions and Search - Cloud Deve... by Maarten Balliauw
Indexing and searching NuGet.org with Azure Functions and Search - Cloud Deve...Indexing and searching NuGet.org with Azure Functions and Search - Cloud Deve...
Indexing and searching NuGet.org with Azure Functions and Search - Cloud Deve...
Maarten Balliauw1.1K views
Approaches for application request throttling - dotNetCologne by Maarten Balliauw
Approaches for application request throttling - dotNetCologneApproaches for application request throttling - dotNetCologne
Approaches for application request throttling - dotNetCologne
Maarten Balliauw246 views
CodeStock - Exploring .NET memory management - a trip down memory lane by Maarten Balliauw
CodeStock - Exploring .NET memory management - a trip down memory laneCodeStock - Exploring .NET memory management - a trip down memory lane
CodeStock - Exploring .NET memory management - a trip down memory lane
Maarten Balliauw1.9K views
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain... by Maarten Balliauw
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
Maarten Balliauw1.2K views
ConFoo Montreal - Approaches for application request throttling by Maarten Balliauw
ConFoo Montreal - Approaches for application request throttlingConFoo Montreal - Approaches for application request throttling
ConFoo Montreal - Approaches for application request throttling
Maarten Balliauw1.2K views
Microservices for building an IDE – The innards of JetBrains Rider - TechDays... by Maarten Balliauw
Microservices for building an IDE – The innards of JetBrains Rider - TechDays...Microservices for building an IDE – The innards of JetBrains Rider - TechDays...
Microservices for building an IDE – The innards of JetBrains Rider - TechDays...
Maarten Balliauw10.5K views
JetBrains Day Seoul - Exploring .NET’s memory management – a trip down memory... by Maarten Balliauw
JetBrains Day Seoul - Exploring .NET’s memory management – a trip down memory...JetBrains Day Seoul - Exploring .NET’s memory management – a trip down memory...
JetBrains Day Seoul - Exploring .NET’s memory management – a trip down memory...
Maarten Balliauw1.1K views
DotNetFest - Let’s refresh our memory! Memory management in .NET by Maarten Balliauw
DotNetFest - Let’s refresh our memory! Memory management in .NETDotNetFest - Let’s refresh our memory! Memory management in .NET
DotNetFest - Let’s refresh our memory! Memory management in .NET
Maarten Balliauw480 views
VISUG - Approaches for application request throttling by Maarten Balliauw
VISUG - Approaches for application request throttlingVISUG - Approaches for application request throttling
VISUG - Approaches for application request throttling
Maarten Balliauw817 views
What is going on - Application diagnostics on Azure - TechDays Finland by Maarten Balliauw
What is going on - Application diagnostics on Azure - TechDays FinlandWhat is going on - Application diagnostics on Azure - TechDays Finland
What is going on - Application diagnostics on Azure - TechDays Finland
Maarten Balliauw746 views

Recently uploaded

Business Analyst Series 2023 - Week 3 Session 5 by
Business Analyst Series 2023 -  Week 3 Session 5Business Analyst Series 2023 -  Week 3 Session 5
Business Analyst Series 2023 - Week 3 Session 5DianaGray10
209 views20 slides
Digital Product-Centric Enterprise and Enterprise Architecture - Tan Eng Tsze by
Digital Product-Centric Enterprise and Enterprise Architecture - Tan Eng TszeDigital Product-Centric Enterprise and Enterprise Architecture - Tan Eng Tsze
Digital Product-Centric Enterprise and Enterprise Architecture - Tan Eng TszeNUS-ISS
19 views47 slides
[2023] Putting the R! in R&D.pdf by
[2023] Putting the R! in R&D.pdf[2023] Putting the R! in R&D.pdf
[2023] Putting the R! in R&D.pdfEleanor McHugh
38 views127 slides
Java Platform Approach 1.0 - Picnic Meetup by
Java Platform Approach 1.0 - Picnic MeetupJava Platform Approach 1.0 - Picnic Meetup
Java Platform Approach 1.0 - Picnic MeetupRick Ossendrijver
25 views39 slides
Roadmap to Become Experts.pptx by
Roadmap to Become Experts.pptxRoadmap to Become Experts.pptx
Roadmap to Become Experts.pptxdscwidyatamanew
11 views45 slides
Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen... by
Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen...Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen...
Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen...NUS-ISS
28 views70 slides

Recently uploaded(20)

Business Analyst Series 2023 - Week 3 Session 5 by DianaGray10
Business Analyst Series 2023 -  Week 3 Session 5Business Analyst Series 2023 -  Week 3 Session 5
Business Analyst Series 2023 - Week 3 Session 5
DianaGray10209 views
Digital Product-Centric Enterprise and Enterprise Architecture - Tan Eng Tsze by NUS-ISS
Digital Product-Centric Enterprise and Enterprise Architecture - Tan Eng TszeDigital Product-Centric Enterprise and Enterprise Architecture - Tan Eng Tsze
Digital Product-Centric Enterprise and Enterprise Architecture - Tan Eng Tsze
NUS-ISS19 views
[2023] Putting the R! in R&D.pdf by Eleanor McHugh
[2023] Putting the R! in R&D.pdf[2023] Putting the R! in R&D.pdf
[2023] Putting the R! in R&D.pdf
Eleanor McHugh38 views
Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen... by NUS-ISS
Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen...Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen...
Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen...
NUS-ISS28 views
How the World's Leading Independent Automotive Distributor is Reinventing Its... by NUS-ISS
How the World's Leading Independent Automotive Distributor is Reinventing Its...How the World's Leading Independent Automotive Distributor is Reinventing Its...
How the World's Leading Independent Automotive Distributor is Reinventing Its...
NUS-ISS15 views
Architecting CX Measurement Frameworks and Ensuring CX Metrics are fit for Pu... by NUS-ISS
Architecting CX Measurement Frameworks and Ensuring CX Metrics are fit for Pu...Architecting CX Measurement Frameworks and Ensuring CX Metrics are fit for Pu...
Architecting CX Measurement Frameworks and Ensuring CX Metrics are fit for Pu...
NUS-ISS37 views
Beyond the Hype: What Generative AI Means for the Future of Work - Damien Cum... by NUS-ISS
Beyond the Hype: What Generative AI Means for the Future of Work - Damien Cum...Beyond the Hype: What Generative AI Means for the Future of Work - Damien Cum...
Beyond the Hype: What Generative AI Means for the Future of Work - Damien Cum...
NUS-ISS34 views
Transcript: The Details of Description Techniques tips and tangents on altern... by BookNet Canada
Transcript: The Details of Description Techniques tips and tangents on altern...Transcript: The Details of Description Techniques tips and tangents on altern...
Transcript: The Details of Description Techniques tips and tangents on altern...
BookNet Canada130 views
DALI Basics Course 2023 by Ivory Egg
DALI Basics Course  2023DALI Basics Course  2023
DALI Basics Course 2023
Ivory Egg14 views
How to reduce cold starts for Java Serverless applications in AWS at JCON Wor... by Vadym Kazulkin
How to reduce cold starts for Java Serverless applications in AWS at JCON Wor...How to reduce cold starts for Java Serverless applications in AWS at JCON Wor...
How to reduce cold starts for Java Serverless applications in AWS at JCON Wor...
Vadym Kazulkin75 views
The Importance of Cybersecurity for Digital Transformation by NUS-ISS
The Importance of Cybersecurity for Digital TransformationThe Importance of Cybersecurity for Digital Transformation
The Importance of Cybersecurity for Digital Transformation
NUS-ISS27 views
Combining Orchestration and Choreography for a Clean Architecture by ThomasHeinrichs1
Combining Orchestration and Choreography for a Clean ArchitectureCombining Orchestration and Choreography for a Clean Architecture
Combining Orchestration and Choreography for a Clean Architecture
ThomasHeinrichs169 views
TouchLog: Finger Micro Gesture Recognition Using Photo-Reflective Sensors by sugiuralab
TouchLog: Finger Micro Gesture Recognition  Using Photo-Reflective SensorsTouchLog: Finger Micro Gesture Recognition  Using Photo-Reflective Sensors
TouchLog: Finger Micro Gesture Recognition Using Photo-Reflective Sensors
sugiuralab15 views
RADIUS-Omnichannel Interaction System by RADIUS
RADIUS-Omnichannel Interaction SystemRADIUS-Omnichannel Interaction System
RADIUS-Omnichannel Interaction System
RADIUS15 views
Attacking IoT Devices from a Web Perspective - Linux Day by Simone Onofri
Attacking IoT Devices from a Web Perspective - Linux Day Attacking IoT Devices from a Web Perspective - Linux Day
Attacking IoT Devices from a Web Perspective - Linux Day
Simone Onofri15 views

Reducing latency on the web with the Azure CDN- TechDays NL 2014

  • 2. Laat ons weten wat u vindt van deze sessie! Vul de evaluatie in via www.techdaysapp.nl en maak kans op een van de 20 prijzen*. Prijswinnaars worden bekend gemaakt via Twitter (#TechDaysNL). Gebruik hiervoor de code op uw badge. Let us know how you feel about this session! Give your feedback via www.techdaysapp.nl and possibly win one of the 20 prizes*. Winners will be announced via Twitter (#TechDaysNL). Use your personal code on your badge. * Over de uitslag kan niet worden gecorrespondeerd, prijzen zijn voorbeelden – All results are final, prizes are examples
  • 3. Reducing latency on the web with the Azure CDN Maarten Balliauw @maartenballiauw
  • 4. Who am I? • Maarten Balliauw • Antwerp, Belgium • Technical Evangelist, JetBrains • Founder, MyGet • AZUG • Focus on web • ASP.NET MVC, Azure, SignalR, ... • MVP Azure & ASPInsider • Big passion: Azure • http://blog.maartenballiauw.be • @maartenballiauw Shameless self promotion: Pro NuGet - http://amzn.to/pronuget2
  • 5. Agenda • Why use a CDN? • The Azure CDN • Blob containers • Cloud services • Serving dynamic content over the CDN • Conclusions
  • 7. How browsers work... •Request fetching <html> • Download CSS • Download images • Download JavaScript • Download Google Analytics •Finite # of concurrent requests per host (and in total)! • Bundling/minification • Use multiple hosts
  • 8. How browsers work... http://www.browserscope.org/?category=network Browser # connections / host Max # connections Chrome 32 6 10 Firefox 26 6 17 IE 9 6 35 IE 10 8 16 IE 11 13 17 Safari 7 6 17 Android 4 6 17 IEMobile 9 6 60
  • 9. Why care? I use bundling and minification!
  • 10. Speed of light and TCP don’t like each other •US East – US West = 7400 km • or 25 ms at speed of light (299792,458 km/second in a vacuum) • or 37 ms through fiber optics (66% of SoL, glass refraction index 1.5) •TCP request/response, ACK request/response • double that 37 ms, add some compute: ~90 ms US East to West •Theoretical max. packet size is 64 kB • usually +/- 1500 bytes (MTU) •TCP slow start http://www.stevesouders.com/blog/2010/07/13/velocity-tcp-and- the-lower-bound-of-web-performance/
  • 11. Combine TCP slow start and fibre optics US East – US West ~90ms + TCP slow start 256 kB ~ 10 TCP roundtrips that 90 ms becomes 900 ms... http://www.stevesouders.com/blog/2010/07/13/velocity-tcp-and- the-lower-bound-of-web-performance/
  • 12. Cost of web load •Serving static files costs CPU • Full IIS pipeline for a tiny static file •Serving static files costs I/O • Files have to be copied from file stream to response stream • Why do this? Why not let the server handle our dynamic content? •Cookies! • Request/response cycle adds the cookie • Even for a 1 kB PNG
  • 13. So there are some problems on the Internet... •Browsers / connections •Speed of light / TCP slow start •Cost of web load (CPU, I/O and cookies)
  • 14. “The Internet sucks and so does your server.” - Andy Cross - @andybareweb
  • 15. Workarounds! •Browsers / connections • Serve some content off a different hostname •Speed of light / TCP slow start • Move content closer to the user •Cost of web load (CPU, I/O and cookies) • Serve off a cookieless domain • Move content off the web server and let someone else handle it
  • 17. The Azure CDN •Serve content from storage / cloud service •Separate hostname (custom domain possible) •Many locations around the globe •DNS anycast to get content close to user
  • 18. CDN locations (April 1st, 2014) http://msdn.microsoft.com/en- US/library/azure/gg680302.aspx
  • 19. How it works: no CDN
  • 20. How it works: with CDN
  • 22. What did we just do? •First request •Second request (on same endpoint) yawn!
  • 23. How to use this in real life? •Create one/more public blob containers •Upload static files in there (CSS, images, scripts, ...) •Update your application to the new URLs
  • 24. Demo An application with a CDN endpoint
  • 25. How to delete content from the CDN? •Read a book or 2 and wait  (7 days default...) •Think about this upfront! • If you know expiry, set the Cache-Control header (shorter = more updates) • If you don’t, use versioning in query strings • Better: use both
  • 26. Versioning •Enable query strings on the CDN endpoint •Use a query string with a meaningful version number •CDN will keep a cache per URL per query string • /foo/bar?v=1 • /foo/bar?v=2 • /foo/bar?v=3
  • 27. Cloud services will make life easier •We had to “manually” upload content to storage • May be good, may be cumbersome, depends! • Would be nice if we could “deploy and forget” •Set a cloud service as the CDN origin • Will serve all content from /cdn URL • Same cache-control rules as with storage
  • 28. Demo Using Cloud Services as the CDN origin
  • 29. Best-practices for content on the CDN •Set headers! • Cache-Control • Content-Type • Content-Encoding •Version content! •HTTP compression on origin = HTTP compression on CDN
  • 31. Defining “dynamic content” •Content that is generated • Parameters from query string, ASP.NET routing, ... • And/or based on data •Content that refreshes, but not too often • Anything > a couple of minutes •Examples • Charts, images, generated documents, json, API’s, ...
  • 34. Conclusions • Why use a CDN? • The Azure CDN • Blob containers • Cloud services • Serving dynamic content over the CDN What have we learned?
  • 36. Laat ons weten wat u vindt van deze sessie! Vul de evaluatie in via www.techdaysapp.nl en maak kans op een van de 20 prijzen*. Prijswinnaars worden bekend gemaakt via Twitter (#TechDaysNL). Gebruik hiervoor de code op uw badge. Let us know how you feel about this session! Give your feedback via www.techdaysapp.nl and possibly win one of the 20 prizes*. Winners will be announced via Twitter (#TechDaysNL). Use your personal code on your badge. * Over de uitslag kan niet worden gecorrespondeerd, prijzen zijn voorbeelden – All results are final, prizes are examples

Editor's Notes

  1. Maarten
  2. Twitter does too... Still there are 9 requests on this page going to the same host, causing delays in rendering the page.
  3. TCP slow start: start with 1 concurrent connection, then upgrade to multiple when ACK is received
  4. So for 256 kB
  5. Go to the portalCreate a new CDN endpointExplain it can be based on a storage accountExplain it can be based on a cloud serviceExplain options briefly, we’ll cover most of them in more detailExplain linking a custom domain is possibleExplain SSL is possible, unfortunately with a MS provided cert which is useles for custom domainProvisioning takes +/- an hour for settings to propagate to all CDN locations, be patient!Do a tracert to e.g. az591544.vo.msecnd.net and show that it resolves to a nearby location and does not go overseasNow make a request to the CDN https://az591544.vo.msecnd.net/demo/helloworld.gif Explain it is coming from https://azurecdndemo.blob.core.windows.net/demo/helloworld.gif Mention it has to come from a public container
  6. Open Demo1StaticOpen the _Layout.cshtml and change all scripts/css at the top to the CDN urlsLaunch the application and note it does not work because our content is not on the CDN yetGo to /Home/Synchronize and explain what it does in the background, show the codeExplain what we are doing (uploading, setting content type, ...)Mention by default blobs are cached for 7 days! 7 days!Illustrate this by updating bootstrap.min.js and adding an alert in there, resync and refresh: NOTHING HAPPENSThere are some solutions to this:Set the cache-control header on the blob, see /Home/Synchronize source code for an example. Note you would have toknow what the expiry will be...Work with query string parameters, for example version. Update our _Layout.cshtml to use a version / timestamp / whatever query stringThe CDN will now create a cache per file/querystring
  7. Open Demo2StaticOpen the _Layout.cshtml and note the application is using bundlingLet’s configure bundling to use the CDN when not debuggingOpen bundle config and mention we can enable CDN, which will use the alternate URL when not in debug mode. This allos nice debug/release workflow.Mention we still want to use the query string versioning! New deployment should yield new contents! // Configure CDN var version = System.Reflection.Assembly.GetAssembly(typeof(BundleConfig)).GetName().Version.ToString(); var cdnUrl = &quot;http://az592218.vo.msecnd.net/demo2static/{0}?&quot; + version; bundles.UseCdn = true;Explain the URL we are using as the alternative URL and why there is no /cdn in thereDEPLOY! Run the application and notice it fails because no content could be found. Why???We’re not rewriting content to the /cdn folder! Good thing is we can solve that with some Web.config rewrite rulesAdd &lt;rewite&gt; block and explain what it doesDeploy, now it works, yay!Go through some other web.config options:setting cache-control and expires headers!http compression!
  8. Open Demo2StaticShow the application: /MemeGenerator with some quotes (when i peel onions, onions cry – counted to infinity, twice – can divide, by zero – refactors, with his fists)Open the MemeGeneratorController and go through codeExplain this one is not too heavy, but still measuring strings, doing computation, ...Imagine world cup score table, a bit more dynamic (where we hope Belgium score increases pretty much all the time) and high load, why not serve that up through the CDN. Yes, delay on data freshness, but fast and not too much work for the server.http://az592218.vo.msecnd.net/demo2static/MemeGenerator/Show?top=When%20I%20peel%20onions&amp;bottom=Onions%20cry