cloudfront design patterns
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 CloudFront DESIGN PATTERNS which covers standard reusable CloudFront implementations. This presentation was prepared for AWS Sydney Meetup.TRANSCRIPT
CloudFront DESIGN PATTERNS
Abhishek Tiwari@abhishektiwari
http://abhishek-tiwari.com
Wednesday, 7 August 13
About me
Wednesday, 7 August 13
About me
Solutions Architect
Wednesday, 7 August 13
About me
Solutions Architect Early AWS adopter (2007)
Wednesday, 7 August 13
About me
Solutions Architect Early AWS adopter (2007)Built Cotton On Group’s AWS Infrastructure (2012)
Wednesday, 7 August 13
Design Patterns
Wednesday, 7 August 13
Design Patterns
Dynamic and Adoptive Thumbnailing
Wednesday, 7 August 13
Design Patterns
Dynamic and Adoptive ThumbnailingAudio/Video Streaming
Wednesday, 7 August 13
Design Patterns
Dynamic and Adoptive ThumbnailingAudio/Video StreamingPrivate Content
Wednesday, 7 August 13
Design Patterns
Dynamic and Adoptive ThumbnailingAudio/Video StreamingPrivate ContentLive Streaming
Wednesday, 7 August 13
Dynamic Thumbnailing
Wednesday, 7 August 13
Dynamic ThumbnailingDynamic: on-the-fly thumbnailing/caching
Wednesday, 7 August 13
Dynamic ThumbnailingDynamic: on-the-fly thumbnailing/cachingAdoptive: optimized for the device
Wednesday, 7 August 13
Dynamic ThumbnailingDynamic: on-the-fly thumbnailing/cachingAdoptive: optimized for the deviceAnti-pattern: Generate all sizes of thumbnails on image upload and store in S3
Wednesday, 7 August 13
Dynamic ThumbnailingDynamic: on-the-fly thumbnailing/cachingAdoptive: optimized for the deviceAnti-pattern: Generate all sizes of thumbnails on image upload and store in S3
Not adoptive
Wednesday, 7 August 13
Dynamic ThumbnailingDynamic: on-the-fly thumbnailing/cachingAdoptive: optimized for the deviceAnti-pattern: Generate all sizes of thumbnails on image upload and store in S3
Not adoptiveNot manageable
Wednesday, 7 August 13
Dynamic ThumbnailingDynamic: on-the-fly thumbnailing/cachingAdoptive: optimized for the deviceAnti-pattern: Generate all sizes of thumbnails on image upload and store in S3
Not adoptiveNot manageableMinor Design Changes: Regenerate all thumbnails every time
Wednesday, 7 August 13
Dynamic Thumbnailing
Wednesday, 7 August 13
Dynamic ThumbnailingRequires
Wednesday, 7 August 13
Dynamic ThumbnailingRequires
A thumbnail cache behavior mapped to custom origin server
Wednesday, 7 August 13
Dynamic ThumbnailingRequires
A thumbnail cache behavior mapped to custom origin serverCustom origin server with ability
Wednesday, 7 August 13
Dynamic ThumbnailingRequires
A thumbnail cache behavior mapped to custom origin serverCustom origin server with ability
To download original image from S3 or any other source
Wednesday, 7 August 13
Dynamic ThumbnailingRequires
A thumbnail cache behavior mapped to custom origin serverCustom origin server with ability
To download original image from S3 or any other sourceTo generate thumbnail of requested size and return it to CF distribution to serve
Wednesday, 7 August 13
Dynamic ThumbnailingRequires
A thumbnail cache behavior mapped to custom origin serverCustom origin server with ability
To download original image from S3 or any other sourceTo generate thumbnail of requested size and return it to CF distribution to serveTo set expiration time so that in near-future CF don’t request again
Wednesday, 7 August 13
Dynamic Thumbnailingdef thumb (image, width, height) :
quality = 0.9thumbed = getThumb(image, quality, width, height)thumbed.setCacheControlMaxAge(EX)......return thumbed
Width Height Image
Wednesday, 7 August 13
Dynamic Thumbnailingdef thumb (image, width, height) :
quality = 0.9thumbed = getThumb(image, quality, width, height)thumbed.setCacheControlMaxAge(EX)......return thumbed
Wednesday, 7 August 13
Dynamic Thumbnailing
static/images/thumb/b723eh0f0df.png?width=400&height=300
def thumb (image, width, height) :quality = 0.9thumbed = getThumb(image, quality, width, height)thumbed.setCacheControlMaxAge(EX)......return thumbed
Wednesday, 7 August 13
Dynamic Thumbnailing
static/images/thumb/b723eh0f0df.png?width=400&height=300static/images/thumb/b723eh0f0df.png?width=400&height=300
def thumb (image, width, height) :quality = 0.9thumbed = getThumb(image, quality, width, height)thumbed.setCacheControlMaxAge(EX)......return thumbed
Wednesday, 7 August 13
Dynamic Thumbnailing
static/images/thumb/b723eh0f0df.png?width=400&height=300static/images/thumb/b723eh0f0df.png?width=400&height=300
def thumb (image, width, height) :quality = 0.9thumbed = getThumb(image, quality, width, height)thumbed.setCacheControlMaxAge(EX)......return thumbed
Forward Query Strings is Turned On
Wednesday, 7 August 13
Audio/Video Streaming
Wednesday, 7 August 13
Audio/Video StreamingRequires two CloudFront distributions
Wednesday, 7 August 13
Audio/Video StreamingRequires two CloudFront distributions
Download distribution (HTTP protocol) for media player
Wednesday, 7 August 13
Audio/Video StreamingRequires two CloudFront distributions
Download distribution (HTTP protocol) for media playerStreaming distribution (RMTP protocol) for video/audio file
Wednesday, 7 August 13
Audio/Video StreamingRequires two CloudFront distributions
Download distribution (HTTP protocol) for media playerStreaming distribution (RMTP protocol) for video/audio file
Adobe Flash Media Server 3.5 as the streaming server
Wednesday, 7 August 13
Audio/Video StreamingRequires two CloudFront distributions
Download distribution (HTTP protocol) for media playerStreaming distribution (RMTP protocol) for video/audio file
Adobe Flash Media Server 3.5 as the streaming serverRTMP Variants: RTMP, RTMPT, RTMPE, RTMPTE
Wednesday, 7 August 13
Audio/Video Streaming
Wednesday, 7 August 13
Private Content
Wednesday, 7 August 13
Private ContentRestrict viewer access using signed URL
Wednesday, 7 August 13
Private ContentRestrict viewer access using signed URLSigned URLs control access based on policy statement
Wednesday, 7 August 13
Private ContentRestrict viewer access using signed URLSigned URLs control access based on policy statementPolicy statement can be
Wednesday, 7 August 13
Private ContentRestrict viewer access using signed URLSigned URLs control access based on policy statementPolicy statement can be
Canned policy (access to one object)
Wednesday, 7 August 13
Private ContentRestrict viewer access using signed URLSigned URLs control access based on policy statementPolicy statement can be
Canned policy (access to one object)Custom policy (access to one or more objects using pattern matching)
Wednesday, 7 August 13
Private Content
Wednesday, 7 August 13
Private ContentA complete singed URL contains
Wednesday, 7 August 13
Private ContentA complete singed URL contains
a base URL (http://my.cf.net/image.png, /v/myvideo.flv)
Wednesday, 7 August 13
Private ContentA 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
Private ContentA 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
Private ContentA 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
Private ContentA 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
Private ContentA 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 patternIf signed URL is valid then CF gives viewer access to object
Wednesday, 7 August 13
Private Content (Streaming)
Wednesday, 7 August 13
Private Content (Download)
Wednesday, 7 August 13
Live Streaming
Wednesday, 7 August 13
Live StreamingSupports live streaming with
Wednesday, 7 August 13
Live StreamingSupports live streaming with
Adobe’s Flash Media Server 4.5 (AFMS)
Wednesday, 7 August 13
Live StreamingSupports live streaming with
Adobe’s Flash Media Server 4.5 (AFMS) IIS Media Services (Smooth Streaming)
Wednesday, 7 August 13
Live StreamingSupports 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
Live StreamingSupports 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 formatAFMS streams to Flash clients with HDS
Wednesday, 7 August 13
Live StreamingSupports 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 formatAFMS streams to Flash clients with HDSIIS MS stream to Silverlight clients over HTTP
Wednesday, 7 August 13
Live Streaming
Wednesday, 7 August 13
Live StreamingHow it work?
Wednesday, 7 August 13
Live StreamingHow it work?
Each solution relies on an encoder and a media service or server
Wednesday, 7 August 13
Live StreamingHow it work?
Each solution relies on an encoder and a media service or serverEncoder takes live video as input and convert video into right format
Wednesday, 7 August 13
Live StreamingHow it work?
Each solution relies on an encoder and a media service or serverEncoder takes live video as input and convert video into right formatVideo is pushed to origin server (media service or server)
Wednesday, 7 August 13
Live StreamingHow it work?
Each solution relies on an encoder and a media service or serverEncoder takes live video as input and convert video into right formatVideo 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
Live StreamingHow it work?
Each solution relies on an encoder and a media service or serverEncoder takes live video as input and convert video into right formatVideo 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
Wednesday, 7 August 13
Thank YouQ & A
Wednesday, 7 August 13