208
CloudFront BEST PRACTICES & ANTI-PATTERNS Abhishek Tiwari @abhishektiwari http://abhishek-tiwari.com Wednesday, 7 August 13

CloudFront BEST PRACTICES & ANTI-PATTERNS

Embed Size (px)

DESCRIPTION

CloudFront is a Content Delivery Network (CDN) provided by Amazon Web Services (AWS). It integrates seamlessly with other AWS services. Agenda of this presentation is 1. CloudFront OVERVIEW 2. CloudFront BEST PRACTICES & ANTI-PATTERNS This presentation was prepared for AWS Sydney Meetup.

Citation preview

Page 1: CloudFront  BEST PRACTICES & ANTI-PATTERNS

CloudFront BEST PRACTICES & ANTI-PATTERNS

Abhishek Tiwari@abhishektiwari

http://abhishek-tiwari.com

Wednesday, 7 August 13

Page 2: CloudFront  BEST PRACTICES & ANTI-PATTERNS

About me

Wednesday, 7 August 13

Page 3: CloudFront  BEST PRACTICES & ANTI-PATTERNS

About me

Solutions Architect

Wednesday, 7 August 13

Page 4: CloudFront  BEST PRACTICES & ANTI-PATTERNS

About me

Solutions Architect Early AWS adopter (2007)

Wednesday, 7 August 13

Page 5: CloudFront  BEST PRACTICES & ANTI-PATTERNS

About me

Solutions Architect Early AWS adopter (2007)Built Cotton On Group’s AWS Infrastructure (2012)

Wednesday, 7 August 13

Page 6: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Agenda

CloudFront in a nutshellCloudFront Best Practices/Anti-Patterns

Wednesday, 7 August 13

Page 7: CloudFront  BEST PRACTICES & ANTI-PATTERNS

CloudFront (CF)

Wednesday, 7 August 13

Page 8: CloudFront  BEST PRACTICES & ANTI-PATTERNS

CloudFront (CF)Content Delivery Network

Wednesday, 7 August 13

Page 9: CloudFront  BEST PRACTICES & ANTI-PATTERNS

CloudFront (CF)Content Delivery NetworkServes Static and Dynamic Content

Wednesday, 7 August 13

Page 10: CloudFront  BEST PRACTICES & ANTI-PATTERNS

CloudFront (CF)Content Delivery NetworkServes Static and Dynamic ContentGlobal, Redundant, Scalable

Wednesday, 7 August 13

Page 11: CloudFront  BEST PRACTICES & ANTI-PATTERNS

CloudFront (CF)Content Delivery NetworkServes Static and Dynamic ContentGlobal, Redundant, ScalableLow Latency, High Bandwidth

Wednesday, 7 August 13

Page 12: CloudFront  BEST PRACTICES & ANTI-PATTERNS

CloudFront (CF)Content Delivery NetworkServes Static and Dynamic ContentGlobal, Redundant, ScalableLow Latency, High BandwidthCost Effective: Transparent, PAYG, Price Classes

Wednesday, 7 August 13

Page 13: CloudFront  BEST PRACTICES & ANTI-PATTERNS

CloudFront (CF)Content Delivery NetworkServes Static and Dynamic ContentGlobal, Redundant, ScalableLow Latency, High BandwidthCost Effective: Transparent, PAYG, Price ClassesNO Edge Side Includes (ESI)

Wednesday, 7 August 13

Page 14: CloudFront  BEST PRACTICES & ANTI-PATTERNS

CF Concepts

Wednesday, 7 August 13

Page 15: CloudFront  BEST PRACTICES & ANTI-PATTERNS

CF ConceptsDistribution

Wednesday, 7 August 13

Page 16: CloudFront  BEST PRACTICES & ANTI-PATTERNS

CF ConceptsDistribution

Delivery Method (Download or Streaming)

Wednesday, 7 August 13

Page 17: CloudFront  BEST PRACTICES & ANTI-PATTERNS

CF ConceptsDistribution

Delivery Method (Download or Streaming)

CNAME Aliases (1-10)

Wednesday, 7 August 13

Page 18: CloudFront  BEST PRACTICES & ANTI-PATTERNS

CF ConceptsDistribution

Delivery Method (Download or Streaming)

CNAME Aliases (1-10)

Origin Server/s (M:M)

Wednesday, 7 August 13

Page 19: CloudFront  BEST PRACTICES & ANTI-PATTERNS

CF ConceptsDistribution

Delivery Method (Download or Streaming)

CNAME Aliases (1-10)

Origin Server/s (M:M)

Domain Name, Origin ID, Origin Protocol

Wednesday, 7 August 13

Page 20: CloudFront  BEST PRACTICES & ANTI-PATTERNS

CF ConceptsDistribution

Delivery Method (Download or Streaming)

CNAME Aliases (1-10)

Origin Server/s (M:M)

Domain Name, Origin ID, Origin Protocol

Object/s (Object Path/Cache Key)

Wednesday, 7 August 13

Page 21: CloudFront  BEST PRACTICES & ANTI-PATTERNS

CF ConceptsDistribution

Delivery Method (Download or Streaming)

CNAME Aliases (1-10)

Origin Server/s (M:M)

Domain Name, Origin ID, Origin Protocol

Object/s (Object Path/Cache Key)

Cache Behavior/s (1-10, 1:1, Ordered)

Wednesday, 7 August 13

Page 22: CloudFront  BEST PRACTICES & ANTI-PATTERNS

CF ConceptsDistribution

Delivery Method (Download or Streaming)

CNAME Aliases (1-10)

Origin Server/s (M:M)

Domain Name, Origin ID, Origin Protocol

Object/s (Object Path/Cache Key)

Cache Behavior/s (1-10, 1:1, Ordered)

Path Patterns, Origin ID, Viewer Protocol, Minimum TTL, Cookies/Query String Forwarding

Wednesday, 7 August 13

Page 23: CloudFront  BEST PRACTICES & ANTI-PATTERNS

CF ConceptsDistribution

Delivery Method (Download or Streaming)

CNAME Aliases (1-10)

Origin Server/s (M:M)

Domain Name, Origin ID, Origin Protocol

Object/s (Object Path/Cache Key)

Cache Behavior/s (1-10, 1:1, Ordered)

Path Patterns, Origin ID, Viewer Protocol, Minimum TTL, Cookies/Query String Forwarding

Edge Location (42+)

Wednesday, 7 August 13

Page 24: CloudFront  BEST PRACTICES & ANTI-PATTERNS

CF ConceptsDistribution

Delivery Method (Download or Streaming)

CNAME Aliases (1-10)

Origin Server/s (M:M)

Domain Name, Origin ID, Origin Protocol

Object/s (Object Path/Cache Key)

Cache Behavior/s (1-10, 1:1, Ordered)

Path Patterns, Origin ID, Viewer Protocol, Minimum TTL, Cookies/Query String Forwarding

Edge Location (42+)

Viewer (GET, Range GET, HEAD Requests)Wednesday, 7 August 13

Page 26: CloudFront  BEST PRACTICES & ANTI-PATTERNS

CF Concepts

Dynamic Content

http://mycontent.cloudfront.net/photos/profile.pngCache Key: photos/profile.png (Same for HTTP/HTTPS)

Cache Key: object path relative to origin + forwarded query string/cookies

Wednesday, 7 August 13

Page 27: CloudFront  BEST PRACTICES & ANTI-PATTERNS

CF Concepts

Dynamic Content

Static Content

http://mycontent.cloudfront.net/photos/profile.pngCache Key: photos/profile.png (Same for HTTP/HTTPS)

Cache Key: object path relative to origin + forwarded query string/cookies

Wednesday, 7 August 13

Page 28: CloudFront  BEST PRACTICES & ANTI-PATTERNS

How it works1. Client request file

2. If file in cache CF return fileNearest Edge

Location

a. If file not in cache, CF request to origin

b. Origin returns file, status 200, cached in CF

1. Client request file

2. If file in cache CF return fileNearest Edge

Location

a. If file in cache but expired, CF request to origin

b. Origin returns 304, CF keeps file in cache

Routing based on low latency/price class

Routing based on low latency/price class

Condition GET

Wednesday, 7 August 13

Page 29: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Distribution

Wednesday, 7 August 13

Page 30: CloudFront  BEST PRACTICES & ANTI-PATTERNS

DistributionDownload Distribution

Wednesday, 7 August 13

Page 31: CloudFront  BEST PRACTICES & ANTI-PATTERNS

DistributionDownload Distribution

Viewer Protocol HTTP/HTTPS

Wednesday, 7 August 13

Page 32: CloudFront  BEST PRACTICES & ANTI-PATTERNS

DistributionDownload Distribution

Viewer Protocol HTTP/HTTPSOrigin: S3 or Custom

Wednesday, 7 August 13

Page 33: CloudFront  BEST PRACTICES & ANTI-PATTERNS

DistributionDownload Distribution

Viewer Protocol HTTP/HTTPSOrigin: S3 or CustomCookies/Query String Forwarding

Wednesday, 7 August 13

Page 34: CloudFront  BEST PRACTICES & ANTI-PATTERNS

DistributionDownload Distribution

Viewer Protocol HTTP/HTTPSOrigin: S3 or CustomCookies/Query String Forwarding

Streaming Distribution

Wednesday, 7 August 13

Page 35: CloudFront  BEST PRACTICES & ANTI-PATTERNS

DistributionDownload Distribution

Viewer Protocol HTTP/HTTPSOrigin: S3 or CustomCookies/Query String Forwarding

Streaming DistributionViewer Protocol: Adobe RTMP

Wednesday, 7 August 13

Page 36: CloudFront  BEST PRACTICES & ANTI-PATTERNS

DistributionDownload Distribution

Viewer Protocol HTTP/HTTPSOrigin: S3 or CustomCookies/Query String Forwarding

Streaming DistributionViewer Protocol: Adobe RTMPOrigin: S3 only (No Custom)

Wednesday, 7 August 13

Page 37: CloudFront  BEST PRACTICES & ANTI-PATTERNS

DistributionDownload Distribution

Viewer Protocol HTTP/HTTPSOrigin: S3 or CustomCookies/Query String Forwarding

Streaming DistributionViewer Protocol: Adobe RTMPOrigin: S3 only (No Custom)Dynamic/Adoptive Streaming (Adjust bit rate during playback)

Wednesday, 7 August 13

Page 38: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Query String Forwarding

Wednesday, 7 August 13

Page 39: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Query String ForwardingForward query string to origin

Wednesday, 7 August 13

Page 40: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Query String ForwardingForward query string to originMultiple parameters, order/case sensitive

Wednesday, 7 August 13

Page 41: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Query String ForwardingForward query string to originMultiple parameters, order/case sensitiveOrder sensitive: Two objects in CF

Wednesday, 7 August 13

Page 42: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Query String ForwardingForward query string to originMultiple parameters, order/case sensitiveOrder sensitive: Two objects in CF

http://d111111abcdef8.cloudfront.net/images/image.jpg?height=a&width=b

Wednesday, 7 August 13

Page 43: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Query String ForwardingForward query string to originMultiple parameters, order/case sensitiveOrder sensitive: Two objects in CF

http://d111111abcdef8.cloudfront.net/images/image.jpg?height=a&width=b

http://d111111abcdef8.cloudfront.net/images/image.jpg?width=b&height=a

Wednesday, 7 August 13

Page 44: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Query String ForwardingForward query string to originMultiple parameters, order/case sensitiveOrder sensitive: Two objects in CF

http://d111111abcdef8.cloudfront.net/images/image.jpg?height=a&width=b

http://d111111abcdef8.cloudfront.net/images/image.jpg?width=b&height=a

Case sensitive: Two objects in CF

Wednesday, 7 August 13

Page 45: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Query String ForwardingForward query string to originMultiple parameters, order/case sensitiveOrder sensitive: Two objects in CF

http://d111111abcdef8.cloudfront.net/images/image.jpg?height=a&width=b

http://d111111abcdef8.cloudfront.net/images/image.jpg?width=b&height=a

Case sensitive: Two objects in CFhttp://d111111abcdef8.cloudfront.net/images/image.jpg?type=png

Wednesday, 7 August 13

Page 46: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Query String ForwardingForward query string to originMultiple parameters, order/case sensitiveOrder sensitive: Two objects in CF

http://d111111abcdef8.cloudfront.net/images/image.jpg?height=a&width=b

http://d111111abcdef8.cloudfront.net/images/image.jpg?width=b&height=a

Case sensitive: Two objects in CFhttp://d111111abcdef8.cloudfront.net/images/image.jpg?type=png

http://d111111abcdef8.cloudfront.net/images/image.jpg?type=PNG

Wednesday, 7 August 13

Page 47: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Cookies Forwarding

Wednesday, 7 August 13

Page 48: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Cookies ForwardingForwarded cookies (FC): NV pairs, not attributes

Wednesday, 7 August 13

Page 49: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Cookies ForwardingForwarded cookies (FC): NV pairs, not attributesIf choose to forward cookies to origin,

Wednesday, 7 August 13

Page 50: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Cookies ForwardingForwarded cookies (FC): NV pairs, not attributesIf choose to forward cookies to origin,

Can forward all cookies, OR

Wednesday, 7 August 13

Page 51: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Cookies ForwardingForwarded cookies (FC): NV pairs, not attributesIf choose to forward cookies to origin,

Can forward all cookies, OROnly specified cookies

Wednesday, 7 August 13

Page 52: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Cookies ForwardingForwarded cookies (FC): NV pairs, not attributesIf choose to forward cookies to origin,

Can forward all cookies, OROnly specified cookies

Object path+FC uniquely identify in CF

Wednesday, 7 August 13

Page 53: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Cookies ForwardingForwarded cookies (FC): NV pairs, not attributesIf choose to forward cookies to origin,

Can forward all cookies, OROnly specified cookies

Object path+FC uniquely identify in CFNV pair/Case sensitive

Wednesday, 7 August 13

Page 54: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Origin

Wednesday, 7 August 13

Page 55: CloudFront  BEST PRACTICES & ANTI-PATTERNS

OriginS3 Origin: Best for Static media content (Image, Video, Audio)

Wednesday, 7 August 13

Page 56: CloudFront  BEST PRACTICES & ANTI-PATTERNS

OriginS3 Origin: Best for Static media content (Image, Video, Audio)Custom Origin: Best for Static application content (JS, CSS, Fonts)

Wednesday, 7 August 13

Page 57: CloudFront  BEST PRACTICES & ANTI-PATTERNS

OriginS3 Origin: Best for Static media content (Image, Video, Audio)Custom Origin: Best for Static application content (JS, CSS, Fonts)Custom Origin: Best for Dynamic media content (HTML, Thumbnails)

Wednesday, 7 August 13

Page 58: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Make a note

Wednesday, 7 August 13

Page 59: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Make a note

Eventual Consistency

Wednesday, 7 August 13

Page 60: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Make a note

Eventual Consistency10 Origin Servers per CF Distribution

Wednesday, 7 August 13

Page 61: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Make a note

Eventual Consistency10 Origin Servers per CF Distribution10 Cache Behavior per CF Distribution

Wednesday, 7 August 13

Page 62: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Make a note

Eventual Consistency10 Origin Servers per CF Distribution10 Cache Behavior per CF Distribution10 CNAME per CF Distribution

Wednesday, 7 August 13

Page 63: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Make a note

Eventual Consistency10 Origin Servers per CF Distribution10 Cache Behavior per CF Distribution10 CNAME per CF Distribution10 Cookies forwarded per Cache Behavior

Wednesday, 7 August 13

Page 64: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Best Practices

Wednesday, 7 August 13

Page 65: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Best PracticesVersioning

Wednesday, 7 August 13

Page 66: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Best PracticesVersioningCompression

Wednesday, 7 August 13

Page 67: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Best PracticesVersioningCompressionDomain Sharding

Wednesday, 7 August 13

Page 68: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Best PracticesVersioningCompressionDomain ShardingExpiration

Wednesday, 7 August 13

Page 69: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Best PracticesVersioningCompressionDomain ShardingExpirationBucket Organization

Wednesday, 7 August 13

Page 70: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Best PracticesVersioningCompressionDomain ShardingExpirationBucket OrganizationLogging

Wednesday, 7 August 13

Page 71: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Best PracticesVersioningCompressionDomain ShardingExpirationBucket OrganizationLoggingPerformance Testing

Wednesday, 7 August 13

Page 72: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Anti-Patterns

Cache Invalidation

Wednesday, 7 August 13

Page 73: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Cache Invalidation

Wednesday, 7 August 13

Page 74: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Cache Invalidation

Programmatic Cache Invalidation

Wednesday, 7 August 13

Page 75: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Cache Invalidation

Programmatic Cache InvalidationCache Invalidation is expensive

Wednesday, 7 August 13

Page 76: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Cache Invalidation

Programmatic Cache InvalidationCache Invalidation is expensive Unmanageable if you have object dependencies

Wednesday, 7 August 13

Page 77: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Cache Invalidation

Programmatic Cache InvalidationCache Invalidation is expensive Unmanageable if you have object dependencies3 invalidation requests at any given time

Wednesday, 7 August 13

Page 78: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Cache Invalidation

Programmatic Cache InvalidationCache Invalidation is expensive Unmanageable if you have object dependencies3 invalidation requests at any given timeEach invalidation request can included maximum of 1000 files

Wednesday, 7 August 13

Page 79: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Cache Invalidation

Wednesday, 7 August 13

Page 80: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Cache Invalidation

Invalidation takes time to propagate across all edge locations (5-15 minutes)

Wednesday, 7 August 13

Page 81: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Cache Invalidation

Invalidation takes time to propagate across all edge locations (5-15 minutes)Deal breaker: browser cache

Wednesday, 7 August 13

Page 82: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Cache Invalidation

Invalidation takes time to propagate across all edge locations (5-15 minutes)Deal breaker: browser cacheVersioning is best way to avoid the invalidation related issues

Wednesday, 7 August 13

Page 83: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning

Wednesday, 7 August 13

Page 84: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning

CF relies on Origin Servers for versioning

Wednesday, 7 August 13

Page 85: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning

CF relies on Origin Servers for versioningS3 supports versioning

Wednesday, 7 August 13

Page 86: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning

CF relies on Origin Servers for versioningS3 supports versioningVersion enabled Custom Origin

Wednesday, 7 August 13

Page 87: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning

Wednesday, 7 August 13

Page 88: CloudFront  BEST PRACTICES & ANTI-PATTERNS

VersioningVersioning using query strings

Wednesday, 7 August 13

Page 89: CloudFront  BEST PRACTICES & ANTI-PATTERNS

VersioningVersioning using query strings

File name plus query string with version /static/profile.png?versionID=123

Wednesday, 7 August 13

Page 90: CloudFront  BEST PRACTICES & ANTI-PATTERNS

VersioningVersioning using query strings

File name plus query string with version /static/profile.png?versionID=123

Versioning using content based hash key

Wednesday, 7 August 13

Page 91: CloudFront  BEST PRACTICES & ANTI-PATTERNS

VersioningVersioning using query strings

File name plus query string with version /static/profile.png?versionID=123

Versioning using content based hash keyFile name as unique key based on file content /static/712vds57tr18929812312enb.png

Wednesday, 7 August 13

Page 92: CloudFront  BEST PRACTICES & ANTI-PATTERNS

VersioningVersioning using query strings

File name plus query string with version /static/profile.png?versionID=123

Versioning using content based hash keyFile name as unique key based on file content /static/712vds57tr18929812312enb.png

Versioning using prefix/suffix

Wednesday, 7 August 13

Page 93: CloudFront  BEST PRACTICES & ANTI-PATTERNS

VersioningVersioning using query strings

File name plus query string with version /static/profile.png?versionID=123

Versioning using content based hash keyFile name as unique key based on file content /static/712vds57tr18929812312enb.png

Versioning using prefix/suffixFile name with version prefix/suffix /static/profile_123.png

Wednesday, 7 August 13

Page 94: CloudFront  BEST PRACTICES & ANTI-PATTERNS

VersioningVersioning using query strings

File name plus query string with version /static/profile.png?versionID=123

Versioning using content based hash keyFile name as unique key based on file content /static/712vds57tr18929812312enb.png

Versioning using prefix/suffixFile name with version prefix/suffix /static/profile_123.png

File name with version prefix/suffix /static/profile_ 712vds57tr18929812312enb.png

Wednesday, 7 August 13

Page 95: CloudFront  BEST PRACTICES & ANTI-PATTERNS

VersioningVersioning using query strings

File name plus query string with version /static/profile.png?versionID=123

Versioning using content based hash keyFile name as unique key based on file content /static/712vds57tr18929812312enb.png

Versioning using prefix/suffixFile name with version prefix/suffix /static/profile_123.png

File name with version prefix/suffix /static/profile_ 712vds57tr18929812312enb.png

You can use a mixed versioning approachWednesday, 7 August 13

Page 96: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using query strings

Wednesday, 7 August 13

Page 97: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using query strings

CF supports versioning using query strings forwarding

Wednesday, 7 August 13

Page 98: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using query strings

CF supports versioning using query strings forwardingVersioning enabled Origin (Custom/S3)

Wednesday, 7 August 13

Page 99: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using query strings

CF supports versioning using query strings forwardingVersioning enabled Origin (Custom/S3)For S3 Content

Wednesday, 7 August 13

Page 100: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using query strings

CF supports versioning using query strings forwardingVersioning enabled Origin (Custom/S3)For S3 Content

On object upload version enabled S3 bucket will return x-amz-version-id

Wednesday, 7 August 13

Page 101: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using query strings

CF supports versioning using query strings forwardingVersioning enabled Origin (Custom/S3)For S3 Content

On object upload version enabled S3 bucket will return x-amz-version-id

profile.png

Wednesday, 7 August 13

Page 102: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using query strings

CF supports versioning using query strings forwardingVersioning enabled Origin (Custom/S3)For S3 Content

On object upload version enabled S3 bucket will return x-amz-version-id

profile.png Upload to S3

Wednesday, 7 August 13

Page 103: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using query strings

CF supports versioning using query strings forwardingVersioning enabled Origin (Custom/S3)For S3 Content

On object upload version enabled S3 bucket will return x-amz-version-id

profile.png Upload to S3 static/images/profile.png

Wednesday, 7 August 13

Page 104: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using query strings

CF supports versioning using query strings forwardingVersioning enabled Origin (Custom/S3)For S3 Content

On object upload version enabled S3 bucket will return x-amz-version-id

profile.png Upload to S3 static/images/profile.png Return x-amz-version-id

Wednesday, 7 August 13

Page 105: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using query strings

CF supports versioning using query strings forwardingVersioning enabled Origin (Custom/S3)For S3 Content

On object upload version enabled S3 bucket will return x-amz-version-id

profile.png Upload to S3 static/images/profile.png Return x-amz-version-id static/images/profile.png?versionId=644c69e148

Wednesday, 7 August 13

Page 106: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using query strings

Wednesday, 7 August 13

Page 107: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using query strings

Versionify Application content

Wednesday, 7 August 13

Page 108: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using query strings

Versionify Application contentUse Build Number or Hash of GIT/HG Head

Wednesday, 7 August 13

Page 109: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using query strings

Versionify Application contentUse Build Number or Hash of GIT/HG Head

photo.css, app.css, profile.cssphoto.js, app.js, profile.js

Wednesday, 7 August 13

Page 110: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using query strings

Versionify Application contentUse Build Number or Hash of GIT/HG Head

photo.css, app.css, profile.cssphoto.js, app.js, profile.js Minify+Combine

Wednesday, 7 August 13

Page 111: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using query strings

Versionify Application contentUse Build Number or Hash of GIT/HG Head

photo.css, app.css, profile.cssphoto.js, app.js, profile.js Minify+Combine main.css

main.js

Wednesday, 7 August 13

Page 112: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using query strings

Versionify Application contentUse Build Number or Hash of GIT/HG Head

photo.css, app.css, profile.cssphoto.js, app.js, profile.js Minify+Combine main.css

main.js Versionify

Wednesday, 7 August 13

Page 113: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using query strings

Versionify Application contentUse Build Number or Hash of GIT/HG Head

photo.css, app.css, profile.cssphoto.js, app.js, profile.js Minify+Combine main.css

main.js Versionify main.css?v=468df6bmain.js?v=468df6b

Wednesday, 7 August 13

Page 114: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using query strings

Wednesday, 7 August 13

Page 115: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using content based hash key

Wednesday, 7 August 13

Page 116: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using content based hash key

File name is an unique hash key generated from file content (MD5)

Wednesday, 7 August 13

Page 117: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using content based hash key

File name is an unique hash key generated from file content (MD5)For S3 content

Wednesday, 7 August 13

Page 118: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using content based hash key

File name is an unique hash key generated from file content (MD5)For S3 content

Before uploading to S3 generate MD5 hash for file

Wednesday, 7 August 13

Page 119: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using content based hash key

File name is an unique hash key generated from file content (MD5)For S3 content

Before uploading to S3 generate MD5 hash for fileUse hash as file name to upload on S3

Wednesday, 7 August 13

Page 120: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using content based hash key

File name is an unique hash key generated from file content (MD5)For S3 content

Before uploading to S3 generate MD5 hash for fileUse hash as file name to upload on S3Avoid content duplication by comparing MD5 hashes

Wednesday, 7 August 13

Page 121: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using content based hash key

File name is an unique hash key generated from file content (MD5)For S3 content

Before uploading to S3 generate MD5 hash for fileUse hash as file name to upload on S3Avoid content duplication by comparing MD5 hashes

profile.jpg

Wednesday, 7 August 13

Page 122: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using content based hash key

File name is an unique hash key generated from file content (MD5)For S3 content

Before uploading to S3 generate MD5 hash for fileUse hash as file name to upload on S3Avoid content duplication by comparing MD5 hashes

profile.jpg MD5 Hash File Name

Wednesday, 7 August 13

Page 123: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using content based hash key

File name is an unique hash key generated from file content (MD5)For S3 content

Before uploading to S3 generate MD5 hash for fileUse hash as file name to upload on S3Avoid content duplication by comparing MD5 hashes

profile.jpg MD5 Hash File Name b723eh0f0df.png

Wednesday, 7 August 13

Page 124: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using content based hash key

File name is an unique hash key generated from file content (MD5)For S3 content

Before uploading to S3 generate MD5 hash for fileUse hash as file name to upload on S3Avoid content duplication by comparing MD5 hashes

profile.jpg MD5 Hash File Name b723eh0f0df.png Upload to S3

Wednesday, 7 August 13

Page 125: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using content based hash key

File name is an unique hash key generated from file content (MD5)For S3 content

Before uploading to S3 generate MD5 hash for fileUse hash as file name to upload on S3Avoid content duplication by comparing MD5 hashes

profile.jpg MD5 Hash File Name b723eh0f0df.png Upload to S3 static/images/b723eh0f0df.png

Wednesday, 7 August 13

Page 126: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using content based hash key

Wednesday, 7 August 13

Page 127: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using content based hash key

For application content use a pipeline

Wednesday, 7 August 13

Page 128: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using content based hash key

For application content use a pipelinefile names generated using MD5 hash of file content

Wednesday, 7 August 13

Page 129: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using content based hash key

For application content use a pipelinefile names generated using MD5 hash of file content

photo.css, app.css, profile.cssphoto.js, app.js, profile.js

Wednesday, 7 August 13

Page 130: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using content based hash key

For application content use a pipelinefile names generated using MD5 hash of file content

photo.css, app.css, profile.cssphoto.js, app.js, profile.js Minify+Combine

Wednesday, 7 August 13

Page 131: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using content based hash key

For application content use a pipelinefile names generated using MD5 hash of file content

photo.css, app.css, profile.cssphoto.js, app.js, profile.js Minify+Combine main.css

main.js

Wednesday, 7 August 13

Page 132: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using content based hash key

For application content use a pipelinefile names generated using MD5 hash of file content

photo.css, app.css, profile.cssphoto.js, app.js, profile.js Minify+Combine main.css

main.js MD5 Hash File Name

Wednesday, 7 August 13

Page 133: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using content based hash key

For application content use a pipelinefile names generated using MD5 hash of file content

photo.css, app.css, profile.cssphoto.js, app.js, profile.js Minify+Combine main.css

main.js MD5 Hash File Name 8972bw7dyf2h.css67bfwu9hhuw.js

Wednesday, 7 August 13

Page 134: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Versioning using content based hash key

Wednesday, 7 August 13

Page 135: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Compression

Wednesday, 7 August 13

Page 136: CloudFront  BEST PRACTICES & ANTI-PATTERNS

CompressionCompressed content is served faster and uses less bandwidth

Wednesday, 7 August 13

Page 137: CloudFront  BEST PRACTICES & ANTI-PATTERNS

CompressionCompressed content is served faster and uses less bandwidthCF can serve both compressed and uncompressed version of files

Wednesday, 7 August 13

Page 138: CloudFront  BEST PRACTICES & ANTI-PATTERNS

CompressionCompressed content is served faster and uses less bandwidthCF can serve both compressed and uncompressed version of filesDepends on viewer or browser request

Wednesday, 7 August 13

Page 139: CloudFront  BEST PRACTICES & ANTI-PATTERNS

CompressionCompressed content is served faster and uses less bandwidthCF can serve both compressed and uncompressed version of filesDepends on viewer or browser request

To receive compressed content browser must include Accept-Encoding: gzip in the request header

Wednesday, 7 August 13

Page 140: CloudFront  BEST PRACTICES & ANTI-PATTERNS

CompressionCompressed content is served faster and uses less bandwidthCF can serve both compressed and uncompressed version of filesDepends on viewer or browser request

To receive compressed content browser must include Accept-Encoding: gzip in the request header

For compression CF relies on the custom origin servers

Wednesday, 7 August 13

Page 141: CloudFront  BEST PRACTICES & ANTI-PATTERNS

CompressionCompressed content is served faster and uses less bandwidthCF can serve both compressed and uncompressed version of filesDepends on viewer or browser request

To receive compressed content browser must include Accept-Encoding: gzip in the request header

For compression CF relies on the custom origin serversS3 does not perform the compression

Wednesday, 7 August 13

Page 142: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Compression

Wednesday, 7 August 13

Page 143: CloudFront  BEST PRACTICES & ANTI-PATTERNS

CompressionS3 can store both gzip and non-gzip versions of the file in the same bucket

Wednesday, 7 August 13

Page 144: CloudFront  BEST PRACTICES & ANTI-PATTERNS

CompressionS3 can store both gzip and non-gzip versions of the file in the same bucketWhen uploading gzip file to Amazon S3 set Content-Encoding to gzip

Wednesday, 7 August 13

Page 145: CloudFront  BEST PRACTICES & ANTI-PATTERNS

CompressionS3 can store both gzip and non-gzip versions of the file in the same bucketWhen uploading gzip file to Amazon S3 set Content-Encoding to gzipOn-the-fly compression by custom origin server (Nginx, Apache)

Wednesday, 7 August 13

Page 146: CloudFront  BEST PRACTICES & ANTI-PATTERNS

CompressionS3 can store both gzip and non-gzip versions of the file in the same bucketWhen uploading gzip file to Amazon S3 set Content-Encoding to gzipOn-the-fly compression by custom origin server (Nginx, Apache)Compress: HTML, CSS, JS etc

Wednesday, 7 August 13

Page 147: CloudFront  BEST PRACTICES & ANTI-PATTERNS

CompressionS3 can store both gzip and non-gzip versions of the file in the same bucketWhen uploading gzip file to Amazon S3 set Content-Encoding to gzipOn-the-fly compression by custom origin server (Nginx, Apache)Compress: HTML, CSS, JS etcCompress Image: JPEG, WebP (Q= 0-100)

Wednesday, 7 August 13

Page 148: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Expiration

Wednesday, 7 August 13

Page 149: CloudFront  BEST PRACTICES & ANTI-PATTERNS

ExpirationUse one/both of these

Wednesday, 7 August 13

Page 150: CloudFront  BEST PRACTICES & ANTI-PATTERNS

ExpirationUse one/both of these

On Origin server set Cache-Control max-age header

Wednesday, 7 August 13

Page 151: CloudFront  BEST PRACTICES & ANTI-PATTERNS

ExpirationUse one/both of these

On Origin server set Cache-Control max-age headerIn Cache Behavior set Minimum TTL

Wednesday, 7 August 13

Page 152: CloudFront  BEST PRACTICES & ANTI-PATTERNS

ExpirationUse one/both of these

On Origin server set Cache-Control max-age headerIn Cache Behavior set Minimum TTL

Date header/Age header (RFC 2616)

Wednesday, 7 August 13

Page 153: CloudFront  BEST PRACTICES & ANTI-PATTERNS

ExpirationUse one/both of these

On Origin server set Cache-Control max-age headerIn Cache Behavior set Minimum TTL

Date header/Age header (RFC 2616)Avoid Expire header

Wednesday, 7 August 13

Page 154: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Expiration

Wednesday, 7 August 13

Page 156: CloudFront  BEST PRACTICES & ANTI-PATTERNS

ExpirationBrowser cachability issues (known bug)Set Cache-Control max-age or Minimum TTL very far future

Wednesday, 7 August 13

Page 157: CloudFront  BEST PRACTICES & ANTI-PATTERNS

ExpirationBrowser cachability issues (known bug)Set Cache-Control max-age or Minimum TTL very far futureDepending on request frequency, CloudFront might remove the object before its expiration

Wednesday, 7 August 13

Page 158: CloudFront  BEST PRACTICES & ANTI-PATTERNS

ExpirationBrowser cachability issues (known bug)Set Cache-Control max-age or Minimum TTL very far futureDepending on request frequency, CloudFront might remove the object before its expirationDefault expiration 24hrs

Wednesday, 7 August 13

Page 159: CloudFront  BEST PRACTICES & ANTI-PATTERNS

ExpirationBrowser cachability issues (known bug)Set Cache-Control max-age or Minimum TTL very far futureDepending on request frequency, CloudFront might remove the object before its expirationDefault expiration 24hrsObjects are cached for max {Cache-Control max-age directive, Cache Behavior Minimum TTL}

Wednesday, 7 August 13

Page 160: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Domain Sharding

Wednesday, 7 August 13

Page 161: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Domain ShardingTo increase client side performance

Wednesday, 7 August 13

Page 162: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Domain ShardingTo increase client side performanceOn average 100+ resources on an ecommerce page

Wednesday, 7 August 13

Page 163: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Domain ShardingTo increase client side performanceOn average 100+ resources on an ecommerce pageBrowsers limit the number of simultaneous connections to one server

Wednesday, 7 August 13

Page 164: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Domain ShardingTo increase client side performanceOn average 100+ resources on an ecommerce pageBrowsers limit the number of simultaneous connections to one serverHence limit the parallel download from one server

Wednesday, 7 August 13

Page 165: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Domain Sharding

Wednesday, 7 August 13

Page 166: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Domain ShardingUse two or more CNAME aliases to serve the content from a CF distribution

Wednesday, 7 August 13

Page 167: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Domain ShardingUse two or more CNAME aliases to serve the content from a CF distributionBrowser treat them as different servers

Wednesday, 7 August 13

Page 168: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Domain ShardingUse two or more CNAME aliases to serve the content from a CF distributionBrowser treat them as different serversSharding across 2 CNAME aliases will double the parallel download (Best 2-3)

Wednesday, 7 August 13

Page 169: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Domain ShardingUse two or more CNAME aliases to serve the content from a CF distributionBrowser treat them as different serversSharding across 2 CNAME aliases will double the parallel download (Best 2-3)More than 4 CNAME will degrade browser performance (high CPU and memory uses)

Wednesday, 7 August 13

Page 170: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Domain Sharding

Wednesday, 7 August 13

Page 171: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Domain Sharding

Use CF CNAME alias feature

Wednesday, 7 August 13

Page 172: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Domain Sharding

Use CF CNAME alias featureUse Route 53 for CNAME Aliasing

Wednesday, 7 August 13

Page 173: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Domain Sharding

Use CF CNAME alias featureUse Route 53 for CNAME AliasingCustom Wild Card SSL Certificate

Wednesday, 7 August 13

Page 174: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Domain Sharding

Use CF CNAME alias featureUse Route 53 for CNAME AliasingCustom Wild Card SSL CertificateOn application side: enable CF sharding logic (template compilation etc)

Wednesday, 7 August 13

Page 175: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Domain Sharding

<span style="width:inherit;"> <a href="http://mysite.com/about"><img src="http://cf.mycloudfront.net/about.jpg" alt=""/></a></span>

<span style="width:inherit;"> <a href="http://mysite.com/blogs"><img src="http://cf.mycloudfront.net/blogs.jpg" alt=""/></a></span>

<span style="width:inherit;"> <a href="http://mysite.com/contact"><img src="http://cf.mycloudfront.net/cont.jpg" alt=""/></a></span>

<span style="width:inherit;"> <a href="http://mysite.com/about"><img src="http://cf1.mycloudfront.net/about.jpg" alt=""/></a></span>

<span style="width:inherit;"> <a href="http://mysite.com/blogs"><img src="http://cf2.mycloudfront.net/blogs.jpg" alt=""/></a></span>

<span style="width:inherit;"> <a href="http://mysite.com/contact"><img src="http://cf1.mycloudfront.net/cont.jpg" alt=""/></a></span>

<span style="width:inherit;"> <a href="http://mysite.com/about"><img src="{{ CDN_DOMAINS }}/about.jpg" alt=""/></a></span>

<span style="width:inherit;"> <a href="http://mysite.com/blogs"><img src="{{ CDN_DOMAINS }}/blogs.jpg" alt=""/></a></span>

<span style="width:inherit;"> <a href="http://mysite.com/contact"><img src="{{ CDN_DOMAINS }}/cont.jpg" alt=""/></a></span>

<span style="width:inherit;"> <a href="http://mysite.com/about"><img src="http://mysite.com/about.jpg" alt=""/></a></span>

<span style="width:inherit;"> <a href="http://mysite.com/blogs"><img src="http://mysite.com/blogs.jpg" alt=""/></a></span>

<span style="width:inherit;"> <a href="http://mysite.com/contact"><img src="http://mysite.com/cont.jpg" alt=""/></a></span>

CDN with domain shardingCDN without domain sharding

HTML Template

Without CDN

Compiled ORDOM Manipulation

Compiled ORDOM Manipulation

Wednesday, 7 August 13

Page 176: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Domain Sharding

Wednesday, 7 August 13

Page 177: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Domain Sharding

Wednesday, 7 August 13

Page 178: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Domain ShardingApply domain sharding only where it’s needed most

Wednesday, 7 August 13

Page 179: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Domain ShardingApply domain sharding only where it’s needed mostEvenly distribute the resources amongst the shards

Wednesday, 7 August 13

Page 180: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Domain ShardingApply domain sharding only where it’s needed mostEvenly distribute the resources amongst the shardsConsider performance overhead due to the DNS lookup and connection time

Wednesday, 7 August 13

Page 181: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Domain ShardingApply domain sharding only where it’s needed mostEvenly distribute the resources amongst the shardsConsider performance overhead due to the DNS lookup and connection timeSharding may not be good for Mobile Browsers (CPU, Battery Life)

Wednesday, 7 August 13

Page 182: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Bucket Organisation

Wednesday, 7 August 13

Page 183: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Bucket Organisation

Limited Cache Behavior per CF Distribution

Wednesday, 7 August 13

Page 184: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Bucket Organisation

Limited Cache Behavior per CF DistributionPlan your bucket organisation (object keys)

Wednesday, 7 August 13

Page 185: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Bucket Organisation

Limited Cache Behavior per CF DistributionPlan your bucket organisation (object keys)Watch out for the upload paths

Wednesday, 7 August 13

Page 186: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Bucket Organisation

Limited Cache Behavior per CF DistributionPlan your bucket organisation (object keys)Watch out for the upload paths

/video/uploads/, /audio/uploads/, /images/uploads/ BAD

Wednesday, 7 August 13

Page 187: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Bucket Organisation

Limited Cache Behavior per CF DistributionPlan your bucket organisation (object keys)Watch out for the upload paths

/video/uploads/, /audio/uploads/, /images/uploads/ BAD/uploads/video/, /uploads/audio/, /uploads/image/ GOOD

Wednesday, 7 August 13

Page 188: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Bucket Organisation

Limited Cache Behavior per CF DistributionPlan your bucket organisation (object keys)Watch out for the upload paths

/video/uploads/, /audio/uploads/, /images/uploads/ BAD/uploads/video/, /uploads/audio/, /uploads/image/ GOOD

Use wild card patterns (/uploads/*)

Wednesday, 7 August 13

Page 189: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Logging

Wednesday, 7 August 13

Page 190: CloudFront  BEST PRACTICES & ANTI-PATTERNS

LoggingEnable logging, store access log file to S3

Wednesday, 7 August 13

Page 191: CloudFront  BEST PRACTICES & ANTI-PATTERNS

LoggingEnable logging, store access log file to S3One log file per distribution

Wednesday, 7 August 13

Page 192: CloudFront  BEST PRACTICES & ANTI-PATTERNS

LoggingEnable logging, store access log file to S3One log file per distributionCombine log files and analyze logs (EMR)

Wednesday, 7 August 13

Page 193: CloudFront  BEST PRACTICES & ANTI-PATTERNS

LoggingEnable logging, store access log file to S3One log file per distributionCombine log files and analyze logs (EMR)W3C extended log file format

Wednesday, 7 August 13

Page 194: CloudFront  BEST PRACTICES & ANTI-PATTERNS

LoggingEnable logging, store access log file to S3One log file per distributionCombine log files and analyze logs (EMR)W3C extended log file format Streaming log vs Download log

Wednesday, 7 August 13

Page 195: CloudFront  BEST PRACTICES & ANTI-PATTERNS

LoggingEnable logging, store access log file to S3One log file per distributionCombine log files and analyze logs (EMR)W3C extended log file format Streaming log vs Download logContent Analytics: Popularity, Error etc

Wednesday, 7 August 13

Page 196: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Performance Testing

Wednesday, 7 August 13

Page 197: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Performance TestingTradition Load Testing not useful

Wednesday, 7 August 13

Page 198: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Performance TestingTradition Load Testing not useful

Same DNS request, same set of IPs

Wednesday, 7 August 13

Page 199: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Performance TestingTradition Load Testing not useful

Same DNS request, same set of IPsBackbone Testing (Ideal Word)

Wednesday, 7 August 13

Page 200: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Performance TestingTradition Load Testing not useful

Same DNS request, same set of IPsBackbone Testing (Ideal Word)

CDN Server → Backbone

Wednesday, 7 August 13

Page 201: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Performance TestingTradition Load Testing not useful

Same DNS request, same set of IPsBackbone Testing (Ideal Word)

CDN Server → BackboneLast Mile (Real World, User Experience)

Wednesday, 7 August 13

Page 202: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Performance TestingTradition Load Testing not useful

Same DNS request, same set of IPsBackbone Testing (Ideal Word)

CDN Server → BackboneLast Mile (Real World, User Experience)

CDN Server → Backbone → Device

Wednesday, 7 August 13

Page 203: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Performance TestingTradition Load Testing not useful

Same DNS request, same set of IPsBackbone Testing (Ideal Word)

CDN Server → BackboneLast Mile (Real World, User Experience)

CDN Server → Backbone → Device3rd party service (Gomez), application monitor

Wednesday, 7 August 13

Page 204: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Performance TestingTradition Load Testing not useful

Same DNS request, same set of IPsBackbone Testing (Ideal Word)

CDN Server → BackboneLast Mile (Real World, User Experience)

CDN Server → Backbone → Device3rd party service (Gomez), application monitor

Load Testing (Edge Location, Elastic IP Aware)

Wednesday, 7 August 13

Page 205: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Performance TestingTradition Load Testing not useful

Same DNS request, same set of IPsBackbone Testing (Ideal Word)

CDN Server → BackboneLast Mile (Real World, User Experience)

CDN Server → Backbone → Device3rd party service (Gomez), application monitor

Load Testing (Edge Location, Elastic IP Aware)Clients request from different geolocations

Wednesday, 7 August 13

Page 206: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Performance TestingTradition Load Testing not useful

Same DNS request, same set of IPsBackbone Testing (Ideal Word)

CDN Server → BackboneLast Mile (Real World, User Experience)

CDN Server → Backbone → Device3rd party service (Gomez), application monitor

Load Testing (Edge Location, Elastic IP Aware)Clients request from different geolocationsIndependent DNS request, different set of IPs

Wednesday, 7 August 13

Page 207: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Performance TestingTradition Load Testing not useful

Same DNS request, same set of IPsBackbone Testing (Ideal Word)

CDN Server → BackboneLast Mile (Real World, User Experience)

CDN Server → Backbone → Device3rd party service (Gomez), application monitor

Load Testing (Edge Location, Elastic IP Aware)Clients request from different geolocationsIndependent DNS request, different set of IPsDistribute load across set of IPs

Wednesday, 7 August 13

Page 208: CloudFront  BEST PRACTICES & ANTI-PATTERNS

Thank YouQ & A

Wednesday, 7 August 13