SlideShare a Scribd company logo
© 2015, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Alex Smith, ASEAN Media Solutions Architect, AWS
Vidhya Narayanan, Director, Verizon onCue
October 2015
Pure Play Video, Over-The-Top
A Microservices Architecture in the Cloud
ARC303
The Problem
Your Consumers Have Changed
More content choices
More devices
More delivery methods
New experiences
Your Business Has Changed
More data
Faster go to market
Leaner teams
Innovation and failure
What to Expect from the Session
Content is king
Building from scratch
Battle-hardened lessons – Verizon onCue
Clarifications
OTT, OVP, AVOD, TVOD, SVOD
It doesn’t matter
Microservices
Buzzword?
Specific scope, interoperable services
Allow rapid innovation
Over the Top Platform
Content
Production
Content
Storage
Processing &
Management
Content
Production
Content
Storage
Processing &
Management
Content
Production
Content
Distribution
Content
Storage
Processing &
Management
Content
Production
Content
Distribution
Content
Storage
Content
Consumption
Processing &
Management
Shared IT Services
NetworkInfrastructure OperationsSecurity
Content
Production
Content
Distribution
Content
Storage
Content
Consumption
Processing &
Management
Content
Production
Content
Distribution
Content
Storage
Content
Consumption
Your Existing Physical Requirements
HD-SDI
Satellite transmission
Local SAN
HW transcoder
Your OTT Approach
FTP / Accelerator
Large NAS
DAM / Workflow System
Storage and Ingest — Serverless
AWS Import/ Export
S3 Ingest
Content
provider
Storage and Ingest — Serverless
AWS Import/ Export
S3 Ingest
Lifecycle
policies
S3 bucket
Amazon Glacier
Content
provider
Lifecycle
policies
S3 IA
Storage and Ingest — Serverless
AWS Import/ Export
S3 Ingest
S3
notification
AWS Lambda
Lifecycle
policies
S3 bucket
Amazon Glacier
Content
provider
Lifecycle
policies
S3 IA
Storage and Ingest — Serverless
AWS Import/ Export
S3 Ingest
S3
notification
AWS Lambda
Metadata
extract & persist
Amazon
DynamoDB
Amazon
CloudSearch
S3 bucket
Amazon Glacier
Content
provider
Lifecycle
policies
Lifecycle
policies
S3 IA
Storage and Ingest — Serverless
AWS Import/ Export
S3 Ingest
For source, renditions, metadata sidecar files
S3
notification
Amazon Elastic
Transcoder
proxy / thumbnail
generation
AWS Lambda
Metadata
extract & persist
Amazon
DynamoDB
Amazon
CloudSearch
S3 bucket
Amazon Glacier
Content
provider
Lifecycle
policies
Lifecycle
policies
S3 IA
Storage and Ingest — Serverless
AWS Import/ Export
S3 Ingest
For source, renditions, metadata sidecar files
API Gateway
CloudFront
distribution
S3
notification
Amazon Elastic
Transcoder
proxy / thumbnail
generation
AWS Lambda
Metadata
extract & persist
Amazon
DynamoDB
Amazon
CloudSearch
AWS Lambda
S3 bucket
Amazon Glacier
Content
provider
Lifecycle
policies
Lifecycle
policies
S3 IA
Processing &
Management
Content
Production
Content
Distribution
Content
Storage
Content
Consumption
Encoding, Packaging, Encrypting
Challenges
Multiple client devices
Higher quality content
Parallel, complex workflow
Uneven load distribution
Content Processing Pipeline (Using Lambda)
AWS Import/ Export
S3 Ingest
Ingest
Content Processing Pipeline (Using Lambda)
AWS Import/ Export
S3 Ingest
S3 notification
Ingest
Content Processing Pipeline (Using Lambda)
AWS Import/ Export
S3 Ingest
S3 as backend storage for content files accessible
to other processing tasks
Amazon Elastic
Transcoder
S3 notification
Trigger a Lambda
function to start a
transcoding job
Ingest
Content Processing Pipeline (Using Lambda)
AWS Import/ Export
S3 Ingest
S3 as backend storage for content files accessible
to other processing tasks
Amazon Elastic
Transcoder
S3 notification
Trigger a Lambda
function to start a
transcoding job
Ingest
S3 notification
Content Processing Pipeline (Using Lambda)
AWS Import/ Export
S3 Ingest
S3 as backend storage for content files accessible
to other processing tasks
Amazon Elastic
Transcoder
S3 notification
Trigger a Lambda
function to start a
transcoding job
Ingest
S3 notification
Lambda function to
extract metadata
Update CMS or
metadata
Content Processing Pipeline (Using Lambda)
AWS Import/ Export
S3 Ingest
S3 as backend storage for content files accessible
to other processing tasks
Amazon Elastic
Transcoder
S3 notification
Trigger a Lambda
function to restart a
transcoding job
Ingest
S3 notification
Lambda function to
extract metadata
Update CMS or
metadata
API Gateway
What About Packaging?
All moving towards HTTP –
RTMP is hard to scale
Battle of the standards –
HLS, HDS, SmoothStream,
MPEG-DASH
Alliance for Open Media
And Encryption / DRM?
Still largely driven by studio
requirements
Just-in-time encryption (hard)
Reusability across packaging
methods (PlayReady across
HLS & SmoothStream)
Pitfalls of Content Prep
Betting big on closed
standards
Technologies in vogue
Adoption is device-driven
Avoiding Pitfalls of Content Prep
Keep your mezzanine / masters (S3 IA, Glacier)
Mix and match your encoding
Contradictory — JIT packaging and heavy caching
Remember 80/20 (95/5) rule of content
Top Tip
CPU-based encoding
c4.8xlarge / m4.10xlarge
P-State, C-State configuration
Varies with particular encoding
libraries – experiment and
baseline
(Thanks PocketMath!)
Processing &
Management
Content
Production
Content
Distribution
Content
Storage
Content
Consumption
Live
RTMP ingest to origin
Repackaged and encrypted on
the fly
DRM less common
WebRTC for 1-to-few, then
RTMP/HTTP when traffic
increases
Content Delivery Architectures
VOD / Catchup
File-based – stored on S3/CDN
Usually prepared
(encrypted/packaged) before final
storage
DRM by default
ISPs worried about unicast
delivery
HTTP Live Streaming (HDS & HLS)
HLS was pretty close to de facto
Space becoming disrupted again
Network considerations in the real world
HLS and HDS
Uses “parent / child / chunk”
model
HLS: Playlist contains
chunklists, which contain
chunks
HDS: Manifest contains
bootstrap files, which contain
fragments
HTTP Dynamic Streaming — HDS
> GET /live/channel1.abst HTTP/1.1
< Seg1-Frag55
< Seg1-Frag56
[…]
> GET /live/channel1.abst HTTP/1.1
< Seg1-Frag1
< Seg1-Frag2
HTTP Dynamic Streaming — HDS
Use fragment name alignment in the event of a republish
Ensure that fragments are aligned across bitrates
Players will error otherwise
Top Tip
HDS bootstraps are binary
To view, you must decode
them first
https://bitly.com/abstdecoder
(Thanks SwiftServe!)
HTTP Live Streaming — HLS
> GET /live/channel1.m3u8 HTTP/1.1
< HTTP/1.1 200 OK
< Date: Tue, 15 Sep 2015 13:37:56 GMT
< Server: Apache
< Last-Modified: Mon, 03 Aug 2015 3:14:15 GMT
< Accept-Ranges: bytes
< Content-Length: 219
HTTP Live Streaming — HLS
> GET /live/channel1.m3u8 HTTP/1.1
< HTTP/1.1 200 OK
< Date: Tue, 15 Sep 2015 13:37:56 GMT
< Server: Apache
< Last-Modified: Mon, 03 Aug 2015 3:14:15 GMT
< Accept-Ranges: bytes
< Content-Length: 219
< Cache-Control: max-age=5
HTTP Live Streaming
Add a no, or short age, cache header
Use segment name randomisation
Use Player metrics to detect problem ISPs / CDNs
Multi-CDN
CDN Selector
Build vs. buy
Excellent offerings on the
market
Metadata often tightly coupled
with platform, so tricky to use a
third party
CDN Selection Methods
DNS-based
Geo / latency / intelligent routing at DNS level
Asset sharding
50% of assets on CDN A, 50% on CDN B
CDN-aware asset info service
CDN-aware Asset Info Service
AWS Elastic
Beanstalk
CDN
Authentication
Authorisation
Asset info
request
CDN-aware Asset Info Service
> GET /asset/31337 HTTP/1.1
< assetUrl: "http://cdn-a.alexjs.im/vod/31337.m3u8"
< adProvider: "alexjsAds"
< countryCode: "[im, sg, id]"
CDN-aware Asset Info Service
S3 Ingest
Ingest
Amazon
DynamoDB
Media processing
Amazon Elastic
Transcoder
Processing
CDN-aware Asset Info Service
S3 Ingest
Ingest
AWS Elastic
Beanstalk
Amazon
DynamoDB
Media processing
Amazon Elastic
Transcoder
Processing
Authentication
Authorisation
Asset info
request
CDN-aware Asset Info Service
S3 IngestAuthoritative Source – for multi-CDN
Ingest
AWS Elastic
Beanstalk
CDN
Amazon
DynamoDB
Media processing
Amazon Elastic
Transcoder
Processing
Authentication
Authorisation
Asset info
request
S3 IngestAuthoritative Source – for multi-CDN
Ingest
API
Gateway
CDN
Amazon
DynamoDB
Media processing
Amazon Elastic
Transcoder
Processing
Authentication
Authorisation
CDN-aware Asset Info Service
Perfect for microservices – and for serverless computing
Lambda
Processing &
Management
Content
Production
Content
Distribution
Content
Storage
Content
Consumption
Concurrency Management (and
More)
Concurrency
Problem
Studio mandate on stream
concurrency
Cross-account sharing
Approach
Player heartbeat
Subscription-based thresholds
Subscriber Concurrency Management
Heartbeat sent from every
player at regular intervals
Supports both native and
web-based players
Amazon
Kinesis
Lambda
Subscriber Concurrency Management
{
assetId: "d6f9fe" // Programme ID
userId: "33114220875dc" // Token / User
ID timeStamp: "T00:00:05" // Progress
deviceId: "93d2d4fef95cb" // Fingerprint
deviceType: "Amazon Fire" // From API
}
(Pseudo JSON)
Amazon
Kinesis
Lambda
Subscriber Concurrency Management
Heartbeat received by Amazon
Kinesis
Data fed into DynamoDB
DRM licence server reads
DynamoDB table
Decision made
Amazon
Kinesis
DynamoDB
Lambda
EC2
Subscriber Concurrency Management
Amazon
Kinesis
Lambda
Track drop-off
Highlight popular content
Feed back into content
developmentDynamoDB Amazon Redshift
Subscriber Concurrency Management
Amazon
Kinesis
Lambda
Syndicate data to ads server
Recommendations-based
demographic
DynamoDB Amazon Redshift
Amazon MLAd server
Subscriber Concurrency Management
Amazon
Kinesis
Lambda
Cross-device
Play / pause / resume
No servers needed
Client-side “stop” can be
enabled, too (non-DRM based)
DynamoDB Amazon Redshift
Lambda
API Gateway
Go90 — Verizon
Go90 go90.com, #go90
Processing &
Management
Content
Production
Content
Distribution
Content
Storage
Content
Consumption
Go90 — from 30,000 ft
100+ micro services/systems
10+ deployments per week
Multiple clients, large target user base
High reliability/availability, low latency, superior
user experience
APIs — Edge Services
Typical Service Stack
Storage
Logging Service Client
Monitoring Configuration
Domain Logic
NGINX
https://github.com/oncue
Governor
Accounts
Log Upload
Search
Profile Image
Discovery
Event Q
DRM
Metadata
Processing
Metadata
Ingest
Content
Ops
Analytics, Ad, Curate
3rd
Party
Analytic
s
Favorites
Cert
Prov
AWS
HSM
Ads
Offers and
Packages
DAI
backend
STB Maestro
Content
Ingest
CDN
Reco
Discovery
Accounts
Favorites
Search
DRM
Profile
Rights
SU
and…a 100 others
Profiles Profiles Q
STB Maestro
Content
Ingest
CDN
Governor
Accounts
Log Upload
Search
Profile Image
Discovery
Event Q
DRM
Analytic
s
Favorites
Cert
Prov
AWS
HSM
Ads
Offers and
Packages
DAI
backend
STB Maestro
Content
Ingest
CDN
Reco
and…a 100 others
Profiles Profiles Q
Governor
Accounts
Log Upload
Search
Profile Image
Discovery
Event Q
DRM
Favorites
Cert
Prov
AWS
HSM
Ads
Offers and
Packages
DAI
backend
STB Maestro
Content
Ingest
CDN
Reco
Discovery
Accounts
Favorites
Search
DRM
Profile
Rights
SU
and…a 100 others
Profiles Profiles Q
Governor
Analytic
s
Governor
Accounts
Log Upload
Search
Profile Image
Discovery
Event Q
DRM
Metadata
Processing
Metadata
Ingest
Content
Ops
Analytics, Ad, Curate
3rd
Party
Analytics
Favorites
Cert
Prov
AWS
HSM
Ads
Offers and
Packages
DAI
backend
STB Maestro
Content
Ingest
CDN
Reco
Discovery
Accounts
Favorites
Search
DRM
Profile
Rights
SU
and…a 100 others
Profiles Profiles Q
Metadata — Ingest and Storage
Courtesy: IMDB
Nile
Linear
(Airings)
VODLive
Nile
MMS
(content ops)
Linear Ingest
Provisioning
Workflow
Content
Types
Input
Process
Nile
Workflow
Package Info
Raw
Data
Normalized
Data
Blended
Data
Search
River
DB
Profile
Service
Search River
(Publish Logic)
Amazon EC2
Image
Processing
Amazon EC2Auto Scaling
Amazon S3
CDN
Catalog
Index
Analytics
River
Ads
River
3rd Party
Linear
(Airings)
VODLive
Content
Types
Package Info
Amazon EC2
Linear
(Airings)
VODLive
MMS
(content ops)
Linear Ingest
Provisioning
Workflow
Content
Types
Input
Process
Package Info
Amazon EC2
Linear
(Airings)
VODLive
Nile
MMS
(content ops)
Linear Ingest
Provisioning
Workflow
Content
Types
Input
Process
Nile
Workflow
Package Info
Raw
Data
Normalized
Data
Blended
Data
Search
River
DB
Amazon EC2
Nile
Linear
(Airings)
VODLive
Nile
MMS
(content ops)
Linear Ingest
Provisioning
Workflow
Content
Types
Input
Process
Nile
Workflow
Package Info
Raw
Data
Normalized
Data
Blended
Data
Search
River
DB
Profile
Service
Search River
(Publish Logic)
Amazon EC2
Catalog
Index
Amazon EC2
Nile
Linear
(Airings)
VODLive
Nile
MMS
(content ops)
Linear Ingest
Provisioning
Workflow
Content
Types
Input
Process
Nile
Workflow
Package Info
Raw
Data
Normalized
Data
Blended
Data
Search
River
DB
Profile
Service
Search River
(Publish Logic)
Amazon EC2
Catalog
Index
Analytics
River
Ads
River
3rd Party
Nile
Linear
(Airings)
VODLive
Nile
MMS
(content ops)
Linear Ingest
Provisioning
Workflow
Content
Types
Input
Process
Nile
Workflow
Package Info
Raw
Data
Normalized
Data
Blended
Data
Search
River
DB
Profile
Service
Search River
(Publish Logic)
Amazon EC2
Image
Processing
Amazon EC2Auto Scaling
Amazon S3
CDN
Catalo
g Index
Analytics
River
Ads
River
3rd Party
Product Intelligence
Data
Collection
Camus
(Consume
events)
Amazon S3
Real-time
Processing
Amazon
S3
Amazon Redshift
Data
Warehouse
Batch
Processing
Amazon
SWF
Amazon
EMR
Amazon
S3
Best Practices
Avoid a priori optimization
Deploy often
Keep simple and separate systems
Don’t always give in to “right tool for the right job”
Summary
Summary
• Avoid a priori optimization
• Deploy often
• Keep simple and separate
systems
• Don’t always give in to “right
tool for the right job”
Processing &
Management
Content
Production
Content
Distribution
Content
Storage
Content
Consumption
Summary
• Serverless by default
• Avoid lock-in
• Be cautious of the outside
• Reuse data for good
• Avoid a priori optimization
• Deploy often
• Keep simple and separate
systems
• Don’t always give in to “right
tool for the right job”
Processing &
Management
Content
Production
Content
Distribution
Content
Storage
Content
Consumption
Summary
• Serverless by default
• Avoid lock-in
• Be cautious of the outside
• Reuse data for good
• Avoid a priori optimization
• Deploy often
• Keep simple and separate
systems
• Don’t always give in to “right
tool for the right job”
Go Build.
Thank you!
Remember to complete
your evaluations!

More Related Content

(ARC303) Pure Play Video OTT: A Microservices Architecture