Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CloudFront DESIGN PATTERNS

CloudFront DESIGN PATTERNS

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.

Abhishek Tiwari

August 07, 2013
Tweet

More Decks by Abhishek Tiwari

Other Decks in Technology

Transcript

  1. About me Solutions Architect Early AWS adopter (2007) Built Cotton

    On Group’s AWS Infrastructure (2012) Wednesday, 7 August 13
  2. 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
  3. 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
  4. 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
  5. 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
  6. Dynamic Thumbnailing Requires A thumbnail cache behavior mapped to custom

    origin server Custom origin server with ability Wednesday, 7 August 13
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. Private Content Restrict viewer access using signed URL Signed URLs

    control access based on policy statement Wednesday, 7 August 13
  19. Private Content Restrict viewer access using signed URL Signed URLs

    control access based on policy statement Policy statement can be Wednesday, 7 August 13
  20. 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
  21. 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
  22. Private Content A complete singed URL contains a base URL

    (http:/ /my.cf.net/image.png, /v/myvideo.flv) Wednesday, 7 August 13
  23. 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
  24. 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
  25. 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
  26. 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
  27. 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
  28. Live Streaming Supports live streaming with Adobe’s Flash Media Server

    4.5 (AFMS) IIS Media Services (Smooth Streaming) Wednesday, 7 August 13
  29. 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
  30. 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
  31. 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
  32. Live Streaming How it work? Each solution relies on an

    encoder and a media service or server Wednesday, 7 August 13
  33. 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
  34. 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
  35. 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
  36. 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