CloudFront DESIGN PATTERNS

6,236 views
6,867 views

Published on

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.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,236
On SlideShare
0
From Embeds
0
Number of Embeds
4,197
Actions
Shares
0
Downloads
28
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

CloudFront DESIGN PATTERNS

  1. 1. CloudFront DESIGN PATTERNS Abhishek Tiwari @abhishektiwari http://abhishek-tiwari.com Wednesday, 7 August 13
  2. 2. About me Wednesday, 7 August 13
  3. 3. About me Solutions Architect Wednesday, 7 August 13
  4. 4. About me Solutions Architect Early AWS adopter (2007) Wednesday, 7 August 13
  5. 5. About me Solutions Architect Early AWS adopter (2007) Built Cotton On Group’s AWS Infrastructure (2012) Wednesday, 7 August 13
  6. 6. Design Patterns Wednesday, 7 August 13
  7. 7. Design Patterns Dynamic and Adoptive Thumbnailing Wednesday, 7 August 13
  8. 8. Design Patterns Dynamic and Adoptive Thumbnailing Audio/Video Streaming Wednesday, 7 August 13
  9. 9. Design Patterns Dynamic and Adoptive Thumbnailing Audio/Video Streaming Private Content Wednesday, 7 August 13
  10. 10. Design Patterns Dynamic and Adoptive Thumbnailing Audio/Video Streaming Private Content Live Streaming Wednesday, 7 August 13
  11. 11. Dynamic Thumbnailing Wednesday, 7 August 13
  12. 12. Dynamic Thumbnailing Dynamic: on-the-fly thumbnailing/caching Wednesday, 7 August 13
  13. 13. Dynamic Thumbnailing Dynamic: on-the-fly thumbnailing/caching Adoptive: optimized for the device Wednesday, 7 August 13
  14. 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. 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. 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. 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. 18. Dynamic Thumbnailing Wednesday, 7 August 13
  19. 19. Dynamic Thumbnailing Requires Wednesday, 7 August 13
  20. 20. Dynamic Thumbnailing Requires A thumbnail cache behavior mapped to custom origin server Wednesday, 7 August 13
  21. 21. Dynamic Thumbnailing Requires A thumbnail cache behavior mapped to custom origin server Custom origin server with ability Wednesday, 7 August 13
  22. 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. 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. 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. 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. 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. 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. 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. 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. 30. Audio/Video Streaming Wednesday, 7 August 13
  31. 31. Audio/Video Streaming Requires two CloudFront distributions Wednesday, 7 August 13
  32. 32. Audio/Video Streaming Requires two CloudFront distributions Download distribution (HTTP protocol) for media player Wednesday, 7 August 13
  33. 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. 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. 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. 36. Audio/Video Streaming Wednesday, 7 August 13
  37. 37. Private Content Wednesday, 7 August 13
  38. 38. Private Content Restrict viewer access using signed URL Wednesday, 7 August 13
  39. 39. Private Content Restrict viewer access using signed URL Signed URLs control access based on policy statement Wednesday, 7 August 13
  40. 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. 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. 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. 43. Private Content Wednesday, 7 August 13
  44. 44. Private Content A complete singed URL contains Wednesday, 7 August 13
  45. 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. 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. 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. 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. 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. 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. 51. Private Content (Streaming) Wednesday, 7 August 13
  52. 52. Private Content (Download) Wednesday, 7 August 13
  53. 53. Live Streaming Wednesday, 7 August 13
  54. 54. Live Streaming Supports live streaming with Wednesday, 7 August 13
  55. 55. Live Streaming Supports live streaming with Adobe’s Flash Media Server 4.5 (AFMS) Wednesday, 7 August 13
  56. 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. 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. 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. 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. 60. Live Streaming Wednesday, 7 August 13
  61. 61. Live Streaming How it work? Wednesday, 7 August 13
  62. 62. Live Streaming How it work? Each solution relies on an encoder and a media service or server Wednesday, 7 August 13
  63. 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. 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. 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. 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. 67. Wednesday, 7 August 13
  68. 68. Thank You Q & A Wednesday, 7 August 13

×