CloudFront  DESIGN PATTERNS
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

CloudFront DESIGN PATTERNS

on

  • 599 views

CloudFront is a Content Delivery Network (CDN) provided by Amazon Web Services (AWS). It integrates seamlessly with other AWS services. ...

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 CloudFront DESIGN PATTERNS which covers standard reusable CloudFront implementations.

This presentation was prepared for AWS Sydney Meetup.

Statistics

Views

Total Views
599
Views on SlideShare
520
Embed Views
79

Actions

Likes
0
Downloads
12
Comments
0

2 Embeds 79

http://www.scoop.it 77
http://www.linkedin.com 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

CloudFront DESIGN PATTERNS Presentation Transcript

  • 1. CloudFront DESIGN PATTERNS Abhishek Tiwari @abhishektiwari http://abhishek-tiwari.com Wednesday, 7 August 13
  • 2. About me Wednesday, 7 August 13
  • 3. About me Solutions Architect Wednesday, 7 August 13
  • 4. About me Solutions Architect Early AWS adopter (2007) Wednesday, 7 August 13
  • 5. About me Solutions Architect Early AWS adopter (2007) Built Cotton On Group’s AWS Infrastructure (2012) Wednesday, 7 August 13
  • 6. Design Patterns Wednesday, 7 August 13
  • 7. Design Patterns Dynamic and Adoptive Thumbnailing Wednesday, 7 August 13
  • 8. Design Patterns Dynamic and Adoptive Thumbnailing Audio/Video Streaming Wednesday, 7 August 13
  • 9. Design Patterns Dynamic and Adoptive Thumbnailing Audio/Video Streaming Private Content Wednesday, 7 August 13
  • 10. Design Patterns Dynamic and Adoptive Thumbnailing Audio/Video Streaming Private Content Live Streaming Wednesday, 7 August 13
  • 11. Dynamic Thumbnailing Wednesday, 7 August 13
  • 12. Dynamic Thumbnailing Dynamic: on-the-fly thumbnailing/caching Wednesday, 7 August 13
  • 13. Dynamic Thumbnailing Dynamic: on-the-fly thumbnailing/caching Adoptive: optimized for the device Wednesday, 7 August 13
  • 14. Dynamic Thumbnailing Dynamic: on-the-fly thumbnailing/caching Adoptive: optimized for the device Anti-pattern: Generate all sizes of thumbnails on image upload and store in S3 Wednesday, 7 August 13
  • 15. Dynamic Thumbnailing Dynamic: on-the-fly thumbnailing/caching Adoptive: optimized for the device Anti-pattern: Generate all sizes of thumbnails on image upload and store in S3 Not adoptive Wednesday, 7 August 13
  • 16. Dynamic Thumbnailing Dynamic: on-the-fly thumbnailing/caching Adoptive: optimized for the device Anti-pattern: Generate all sizes of thumbnails on image upload and store in S3 Not adoptive Not manageable Wednesday, 7 August 13
  • 17. Dynamic Thumbnailing Dynamic: on-the-fly thumbnailing/caching Adoptive: optimized for the device Anti-pattern: Generate all sizes of thumbnails on image upload and store in S3 Not adoptive Not manageable Minor Design Changes: Regenerate all thumbnails every time Wednesday, 7 August 13
  • 18. Dynamic Thumbnailing Wednesday, 7 August 13
  • 19. Dynamic Thumbnailing Requires Wednesday, 7 August 13
  • 20. Dynamic Thumbnailing Requires A thumbnail cache behavior mapped to custom origin server Wednesday, 7 August 13
  • 21. Dynamic Thumbnailing Requires A thumbnail cache behavior mapped to custom origin server Custom origin server with ability Wednesday, 7 August 13
  • 22. Dynamic Thumbnailing Requires A thumbnail cache behavior mapped to custom origin server Custom origin server with ability To download original image from S3 or any other source Wednesday, 7 August 13
  • 23. Dynamic Thumbnailing Requires A thumbnail cache behavior mapped to custom origin server Custom origin server with ability To download original image from S3 or any other source To generate thumbnail of requested size and return it to CF distribution to serve Wednesday, 7 August 13
  • 24. Dynamic Thumbnailing Requires A thumbnail cache behavior mapped to custom origin server Custom origin server with ability To download original image from S3 or any other source To generate thumbnail of requested size and return it to CF distribution to serve To set expiration time so that in near-future CF don’t request again Wednesday, 7 August 13
  • 25. Dynamic Thumbnailing def thumb (image, width, height) : quality = 0.9 thumbed = getThumb(image, quality, width, height) thumbed.setCacheControlMaxAge(EX) ...... return thumbed Width Height Image Wednesday, 7 August 13
  • 26. Dynamic Thumbnailing def thumb (image, width, height) : quality = 0.9 thumbed = getThumb(image, quality, width, height) thumbed.setCacheControlMaxAge(EX) ...... return thumbed Wednesday, 7 August 13
  • 27. Dynamic Thumbnailing static/images/thumb/b723eh0f0df.png?width=400&height=300 def thumb (image, width, height) : quality = 0.9 thumbed = getThumb(image, quality, width, height) thumbed.setCacheControlMaxAge(EX) ...... return thumbed Wednesday, 7 August 13
  • 28. Dynamic Thumbnailing static/images/thumb/b723eh0f0df.png?width=400&height=300 static/images/thumb/b723eh0f0df.png?width=400&height=300 def thumb (image, width, height) : quality = 0.9 thumbed = getThumb(image, quality, width, height) thumbed.setCacheControlMaxAge(EX) ...... return thumbed Wednesday, 7 August 13
  • 29. Dynamic Thumbnailing static/images/thumb/b723eh0f0df.png?width=400&height=300 static/images/thumb/b723eh0f0df.png?width=400&height=300 def thumb (image, width, height) : quality = 0.9 thumbed = getThumb(image, quality, width, height) thumbed.setCacheControlMaxAge(EX) ...... return thumbed Forward Query Strings is Turned On Wednesday, 7 August 13
  • 30. Audio/Video Streaming Wednesday, 7 August 13
  • 31. Audio/Video Streaming Requires two CloudFront distributions Wednesday, 7 August 13
  • 32. Audio/Video Streaming Requires two CloudFront distributions Download distribution (HTTP protocol) for media player Wednesday, 7 August 13
  • 33. Audio/Video Streaming Requires two CloudFront distributions Download distribution (HTTP protocol) for media player Streaming distribution (RMTP protocol) for video/audio file Wednesday, 7 August 13
  • 34. Audio/Video Streaming Requires two CloudFront distributions Download distribution (HTTP protocol) for media player Streaming distribution (RMTP protocol) for video/audio file Adobe Flash Media Server 3.5 as the streaming server Wednesday, 7 August 13
  • 35. Audio/Video Streaming Requires two CloudFront distributions Download distribution (HTTP protocol) for media player Streaming distribution (RMTP protocol) for video/audio file Adobe Flash Media Server 3.5 as the streaming server RTMP Variants: RTMP, RTMPT, RTMPE, RTMPTE Wednesday, 7 August 13
  • 36. Audio/Video Streaming Wednesday, 7 August 13
  • 37. Private Content Wednesday, 7 August 13
  • 38. Private Content Restrict viewer access using signed URL Wednesday, 7 August 13
  • 39. Private Content Restrict viewer access using signed URL Signed URLs control access based on policy statement Wednesday, 7 August 13
  • 40. Private Content Restrict viewer access using signed URL Signed URLs control access based on policy statement Policy statement can be Wednesday, 7 August 13
  • 41. Private Content Restrict viewer access using signed URL Signed URLs control access based on policy statement Policy statement can be Canned policy (access to one object) Wednesday, 7 August 13
  • 42. Private Content Restrict viewer access using signed URL Signed URLs control access based on policy statement Policy statement can be Canned policy (access to one object) Custom policy (access to one or more objects using pattern matching) Wednesday, 7 August 13
  • 43. Private Content Wednesday, 7 August 13
  • 44. Private Content A complete singed URL contains Wednesday, 7 August 13
  • 45. Private Content A complete singed URL contains a base URL (http://my.cf.net/image.png, /v/myvideo.flv) Wednesday, 7 August 13
  • 46. Private Content A complete singed URL contains a base URL (http://my.cf.net/image.png, /v/myvideo.flv) a policy statement as a signature (hashed+signed, optionally Base-64 encoded for URL safe compression) Wednesday, 7 August 13
  • 47. Private Content A complete singed URL contains a base URL (http://my.cf.net/image.png, /v/myvideo.flv) a policy statement as a signature (hashed+signed, optionally Base-64 encoded for URL safe compression) CF key-pair id Wednesday, 7 August 13
  • 48. Private Content A complete singed URL contains a base URL (http://my.cf.net/image.png, /v/myvideo.flv) a policy statement as a signature (hashed+signed, optionally Base-64 encoded for URL safe compression) CF key-pair id optional parameters (expiration timestamp etc) Wednesday, 7 August 13
  • 49. Private Content A complete singed URL contains a base URL (http://my.cf.net/image.png, /v/myvideo.flv) a policy statement as a signature (hashed+signed, optionally Base-64 encoded for URL safe compression) CF key-pair id optional parameters (expiration timestamp etc) CF matches the signed URL pattern Wednesday, 7 August 13
  • 50. Private Content A complete singed URL contains a base URL (http://my.cf.net/image.png, /v/myvideo.flv) a policy statement as a signature (hashed+signed, optionally Base-64 encoded for URL safe compression) CF key-pair id optional parameters (expiration timestamp etc) CF matches the signed URL pattern If signed URL is valid then CF gives viewer access to object Wednesday, 7 August 13
  • 51. Private Content (Streaming) Wednesday, 7 August 13
  • 52. Private Content (Download) Wednesday, 7 August 13
  • 53. Live Streaming Wednesday, 7 August 13
  • 54. Live Streaming Supports live streaming with Wednesday, 7 August 13
  • 55. Live Streaming Supports live streaming with Adobe’s Flash Media Server 4.5 (AFMS) Wednesday, 7 August 13
  • 56. Live Streaming Supports live streaming with Adobe’s Flash Media Server 4.5 (AFMS) IIS Media Services (Smooth Streaming) Wednesday, 7 August 13
  • 57. Live Streaming Supports live streaming with Adobe’s Flash Media Server 4.5 (AFMS) IIS Media Services (Smooth Streaming) Both Stream media over HTTP/HTTPS to Apple iOS devices in HLS format Wednesday, 7 August 13
  • 58. Live Streaming Supports live streaming with Adobe’s Flash Media Server 4.5 (AFMS) IIS Media Services (Smooth Streaming) Both Stream media over HTTP/HTTPS to Apple iOS devices in HLS format AFMS streams to Flash clients with HDS Wednesday, 7 August 13
  • 59. Live Streaming Supports live streaming with Adobe’s Flash Media Server 4.5 (AFMS) IIS Media Services (Smooth Streaming) Both Stream media over HTTP/HTTPS to Apple iOS devices in HLS format AFMS streams to Flash clients with HDS IIS MS stream to Silverlight clients over HTTP Wednesday, 7 August 13
  • 60. Live Streaming Wednesday, 7 August 13
  • 61. Live Streaming How it work? Wednesday, 7 August 13
  • 62. Live Streaming How it work? Each solution relies on an encoder and a media service or server Wednesday, 7 August 13
  • 63. Live Streaming How it work? Each solution relies on an encoder and a media service or server Encoder takes live video as input and convert video into right format Wednesday, 7 August 13
  • 64. Live Streaming How it work? Each solution relies on an encoder and a media service or server Encoder takes live video as input and convert video into right format Video is pushed to origin server (media service or server) Wednesday, 7 August 13
  • 65. Live Streaming How it work? Each solution relies on an encoder and a media service or server Encoder takes live video as input and convert video into right format Video is pushed to origin server (media service or server) Origin server then breaks the video into a series of smaller files (segments or fragments) Wednesday, 7 August 13
  • 66. Live Streaming How it work? Each solution relies on an encoder and a media service or server Encoder takes live video as input and convert video into right format Video is pushed to origin server (media service or server) Origin server then breaks the video into a series of smaller files (segments or fragments) Each fragment is cached in CF and can be encoded on different bit rate Wednesday, 7 August 13
  • 67. Wednesday, 7 August 13
  • 68. Thank You Q & A Wednesday, 7 August 13