SlideShare une entreprise Scribd logo
1  sur  115
Télécharger pour lire hors ligne
Serverless 

Media Workflow
Speaker
• Serverless Lover 

• Software Engineer @ Vingle

• Freelancer Software Engineer
@ Artistscard

• Software Engineer @
Law&Company

• https://github.com/mooyoul

• https://mooyoul.github.io
A journey to

Video Service 🎥
Video is becoming 

the most important content

🔥🔥🔥
Let’s add video feature
on Vingle! 😎
…but how?
Common VOD
workflow
Common Video workflow
Common Video workflow
Common Video workflow
Common Video workflow
Building Ingest block
Ingest Step Requirements
• Support File-based workflow only for now

• Simple upload workflow for clients

• Fast upload speeds anywhere in the world

• Durable, scalable, fast storage

• No additional disk storage required for upload

• No maintenance required
Ingest Step Requirements
• Support File-based workflow only for now

• Simple upload workflow for clients

• Fast upload speeds anywhere in the world

• Durable, scalable, fast storage

• No additional disk storage required for upload

• No maintenance required
S3 Upload using pre-signed
URL
• Allows client can upload
directly to S3 using pre-
signed URL

• AWS-SDK supports pre-
signed url generation
S3 Upload using pre-signed
URL
…but we are using 

us-east-1 region
some regional ISPs have
bandwidth issue on
international network transfer 💩
Slow Upload on some ISPs
Upload speed is so
slow!🐢🐢🐢
Submarine cables 

in South Korea
Submarine cables 

in South Korea
Two options to
accelerate S3 transfer 🚀
Two options to accelerate S3 transfer
• Proxy file transfer traffic through CloudFront

• Cloudfront can accelerate dynamic content

• Uses Cloudfront Edge locations to optimize route path

• Enable S3 Transfer Acceleration

• Takes advantage of CloudFront’s globally distributed
edge locations

• More transfer optimizations
S3 Transfer Acceleration is faster than Cloudfront as
Proxy
S3 Transfer Acceleration makes throughput
faster
Ingest block architecture
Problem solved! ✅
Building Processing
block
Processing Requirements
• use fully-managed service if possible

• scalable, reliable

• adaptive bitrate streaming

• Important: compatible with various platforms, devices

• Desktop Web - IE 10+, Edge, Chrome, Firefox

• Mobile Web - Mobile Safari, Chrome Mobie

• Android - 4.1 ICS+

• iOS - 9+

• Most Important: Delivery video to users ASAP
Wait! 

What is Adaptive Bitrate
Streaming?
Adaptive Bitrate Streaming
• From Wikipedia:

• Adaptive bitrate streaming is a technique used in
streaming multimedia over computer networks. 

• It works by detecting a user's bandwidth and
CPU capacity in real time and adjusting the
quality of a video stream accordingly.
• The result: very little buffering, fast start time and a
good experience for both high-end and low-end
connections.
Adaptive Bitrate Streaming
Choosing 

Streaming Protocol
Choosing Streaming
Protocol
• Non-HTTP based protocols like RTMP are not in our interest

• Looked for HTTP-based protocols, or methods

• Progressive Download Single File via HTTP

• 1st request: Range: 0-255

• 2st request: Range: 256-511

• 3rd request: Range: 512-767

• …

• Apple HLS

• MPEG-DASH
Choosing Streaming
Protocol
• Progressive Download Single File via HTTP

• Apple HLS

• MPEG-DASH
Choosing Streaming
Protocol
• Progressive Download Single File via HTTP

• Apple HLS - Winner!
• MPEG-DASH
Why we choose HLS
Progressive Download

Single File via HTTP
• Pros

• Easy to implement

• Cons

• Implementing Adaptive Bitrate Streaming is so hard (almost
impossible) without getting “choppy” frames, or “pop” gap
sound between streams

• Slow seeking/starting since container requires metadata reading

• Large binary can occur lower cache hit

• No Live Stream compatibility
MPEG-DASH
• Pros

• New standard

• Based on Fragmented MPEG4 (similar to MPEG2 Transport Stream on
HLS)

• Broader codec support

• Cons

• IMO it is not production ready

• Market, Platform, Community support is not good at this moment

• Workflow was unstable during experiment
First Video
Specification
First Spec - Protocol
• HTTP Live Stream (HLS)

• Apple invented standard, natively supported on macOS/iOS/tvOS

• Natively supports adaptive bitrate streaming, Live Streaming, and DRM
(Apple FairPlay)

• Based on HTTP Protocol, Play well with transitional HTTP CDN

• Trusted by many providers, Many stable implementations

• Amazon, Youtube, Facebook, Twitter, Vimeo, Twitch, Akamai, New
York Times, FOX TV, TED, VK, POOQ, SK Broadband TV …

• Android - ExoPlayer

• Web - MediaSource Extension is standard spec, HLS.js, Video.js
First Spec - Input
• No codec limitation of input source



… but expects most input source are H.264/AVC
+ AAC based

• Max acceptable resolution: 1080p

• Max acceptable bitrate: 10Mbps

• Max acceptable duration: 5 minutes
First Spec - Output
• Common

• H.264/AVC1 + AAC LC

• Many graphic chipset supports hardware accelerated decoding

• Most popular codec in market

• Apple HLS

• Three variants for adaptive bitrate streaming

• High Quality: Up to 1080p, 60p, High/4.1, 4Mbps

• Medium Quality: Up to 720p, 30p, Main/4.0, 2Mbps

• Low Quality: Up to 480p, 30p, Baseline/3.1 800kbps

• Progressive Download Single File via HTTP for HLS fallback

• Medium Quality only
First Spec - Output
• 4 Outputs

• HLS HQ

• HLS MQ

• HLS LQ

• HTTP Progressive MP4 MQ
Check requirements
Requirements
• use fully-managed service if possible

• scalable, reliable

• adaptive bitrate streaming

• Important: compatible with various platforms, devices

• Desktop Web - IE 10+, Edge, Chrome, Firefox

• Mobile Web - Mobile Safari, Chrome Mobie

• Android - 4.1 ICS+

• iOS - 9+

• Important: Delivery video to users ASAP
Requirements
• use fully-managed service if possible

• scalable, reliable

• adaptive bitrate streaming

• Important: compatible with various platforms, devices

• Desktop Web - IE 10+, Edge, Chrome, Firefox

• Mobile Web - Mobile Safari, Chrome Mobie

• Android - 4.1 ICS+

• iOS - 9+

• Important: Delivery video to users ASAP
Requirements
• use fully-managed service if possible

• scalable, reliable

• Important: Delivery video to users ASAP
AWS provides bunch
of media products 🎉
Video Encoding Products
• AWS Elastic Transcoder

• Fully-managed service, pay only for what you use (per minute of output video)

• HLS Support

• Configurable Presets

• AWS Elemental MediaConvert

• Newly launched, Fully-managed service, pay only for what you use (per minute of output video)

• HLS Support

• Broadcasting-grade, high quality output, Professional Codec Support (e.g. ProRes)

• Configurable Presets

• In some scenarios, MediaConvert is cheaper than Elastic Transcoder

• New! Basic Tier for Simple Web Videos
…or build your own
video encoding service
Most time-consuming
task is video encoding
Tested two products
Test conditions
• Input

• f(x) 4 Walls M/V (3m 33s)

• H.264/AVC, 1080p, 23.97fps, 8Mbps, High/4.1

• AAC LC, 192k, 48KHz, 2 Channels

• Mr. Robot Clip (52m 54s)

• H.264/AVC, 720p, 23.97fps, 1.5Mbps, High/4.1

• AC3, 384k, 48KHz, 6 Channels

• Output

• Single HLS Output

• H.264/AVC, 1080p, 23.97fps, ABR 3Mbps (Max 4.5Mbps), High/4.1

• AAC LC, 128k, 48KHz, 2 Channels

• No Thumbnail Generation
Elastic Transcoder
Elastic Transcoder
Elemental MediaConvert
Elemental MediaConvert
Results
• Overall workflow was stable

• Quality

• The output quality of both was similar

• Fixed GOP => Consistant segment duration

• Processing Speed (sorted by faster)

• Elastic Transcoder

• MediaConvert Basic

• MediaConvert Pro






Problems
• Pricing is quite expensive

• Needed more faster encoding speed without losing quality

• Missing CRF (Constant Rate Factor) bitrate mode support

• Can’t control encoder options

• MediaConvert has better encoder option (e.g . quantize algorithm -
CABAC)

• Can’t control video filters

(e.g. lanczos for resizing, yadif for deinterlacing, color filters like
instagram)

• There’s no way to remux video
Make our own
processing workflow 💥
Three ways to run job
• Batch - EC2

• Fargate - ECS

• Step Functions + Lambda
Three ways to run job
• Batch - EC2

• Fargate - ECS

• Step Functions + Lambda - WINNER!
Three ways to run job
• Batch - EC2

• Requires additional instance provisioning time (extremely slow)

• Fargate - ECS

• Requires additional container provisioning time

(about 30sec~60sec)

• Setting High CPU power requires High Memory Size

• Lambda 

• Computing Power is quite slower than EC2/Fargate instances

• …but now we have 3008MB Memory option, which has faster processing power

• No additional provisioning time required
Video Processing
Workflow
Video Processing Workflow
Single Video Processing
Function
Issue #1
How to get encoding
software running on AWS
Lambda?
Lambda-runtime compatible
build
• Linux program

• Lambda execution runtime is based on Amazon Linux AMI (amzn-ami-hvm-2017.03.1.20170812-
x86_64-gp2)

• Instead of using build instance, just make build image which is based on amazon linux docker
image

• docker pull amazonlinux:2017.03.1.20170812

• vim Dockerfile # Be careful updating openssl. it can make incompatible shared library issue

• docker build . -t my-awesome-lambda-build-env

• docker run --rm -v $PWD:/workspace my-awesome-lambda-build-env /workspace/build.sh

• Test built binaries or libraries using lambci lambda image

• docker pull lambci/lambda:nodejs8.10

• docker run --rm -v $PWD:/workspace --entrypoint bash lambci/lambda:nodejs8.10 /
workspace/test.sh
Lambda-runtime compatible
build
• Node.js Native Addons

• lambci provides docker images to rebuild
native addons

• docker pull lambci/lambda:build-nodejs8.10

• docker run --rm -v $PWD:/var/task lambci/
lambda:build-nodejs8.10 # runs “npm
rebuild”
Issue #2
Timeout issues

Hard to organize each
steps
Step functions
• Makes workflow simple to orchestrate AWS Lambda functions

• Supports Parallel state

• built-in error handling, retry, fallback conditions

• Useful patterns

• Delay execution for X seconds or until specific date/time

• Recursive Execution using Choice State

• Scan all records from DynamoDB table

• dequeue messages from SQS until queue is empty
Single Video Processing
Function
Break logics
State Machine - 1st version
Issue #3
VPC makes trouble
VPC Issue
• Assigning Lambda to VPC introduces long cold-start time

• about 10 sec, even used 3008MB memory size

• impacts overall video processing time

• Occasionally we had “connection timeout” issues

• AWS Support confirmed sometimes ENI may not have
internet connectivity

• we had to implement our own retry logic
VPC Issue
• Scaling Issue when invocation spikes
VPC Issue
• VPC was required for S3 access through S3
Endpoint only (to authenticate s3 access using VPCE
ID)

• Removed VPC configuration

• Switched to stream data using pre-signed urls or
download object using AWS-SDK

• reduced cold-start time (<40ms)

• “connection timeout” issue has gone
Issue #4
Tiny ephemeral
storage (/tmp)
Tiny ephemeral storage (/
tmp)
• Ephemeral storage capacity is 512MB, too small for media processing

• You can’t add block device to lambda

• NFS / EFS

• Lambda does not provide root permission

• so you cannot mount disks - you cannot use NFS in Lambda

• Ramdisk

• Ramdisk like /dev/shm is not available on Lambda

• Lambda does not provide root permission

• so you cannot create or mount ramdisk
Tiny ephemeral storage (/
tmp)
• S3 - only available option for now

• stream everything if possible
• use s3 as temporary storage

• Video Input - S3 supports seeking object using Range request header => can be streamed

• Video Output - may vary depending on container

• MP4 - requires seekable output => you cannot pipe output => you cannot stream outputs

• HLS - does not support writing outputs to pipes, since HLS consists of several files

• Watch file system (e.g. chokidar)

• Upload segments to s3 if generated

• Removed uploaded file

• Note: Higher memory size option provides faster Disk I/O and Network I/O
• Note: S3 Object keys are stored in UTF-8 binary ordering across multiple partitions in the index

=> UUID key prefix helps to reduce first byte latency
Issue #5
Optimize container
reusability
Optimize container
reusability
• Invoking different functions 

=> lambda container cannot be reused
Optimize container
reusability
• HACK: Group multiple lambda functions to single lambda
function

• Inject task name using Pass State
Processing Pipeline
Architecture - 1st version
Building Delivery block
Delivery block
• Currently we don’t need any DRM or AD
insertion solution

• Simple architecture

• Use S3 as origin, Cloudfront as CDN

• Use maximum TTL to maximize cache hit
Delivery block architecture
Connect blocks to
make pipeline
Media Pipeline Architecture
Media Pipeline Architecture
Media Pipeline Architecture
Media Pipeline Architecture
Launch
Appearing video uploads
Wait! There’s more!
2nd Version
• Improves encoding speed, output quality

• Support Parallel Encoding

• Split video streams to small chunks

• Split Video/Audio encoding process

• Encode streams per each preset, not outputs

• HLS HQ / HLS MQ / HLS LQ / MP4 MQ

=> Encode streams to HQ / MQ / LQ and assemble them

• Bypass encoding if input is compatible with our spec

• Skip HLS encoding process if source quality is not good, or duration is too short

• Support GIF input/output
Parallel Encoding
Break logics
State Machine - 2nd version
Results
• Fast processing without losing quality

• now processing f(x) M/V (1080p, 3m 33s) just takes 60 sec

• if input source is compatible with our spec, processing can be done within <10 sec

• Great output quality

• Saving cost

• encoding is not required if input source is compatible with our spec

• Stable workflow

• There’s no resource to manage

• Acceptable max bitrate: Up to 300Mbps (Tested with ProRes source)

Acceptable max resolution: 4K

Acceptable codec: HEVC, ProRes

Acceptable max duration: 1 hour
Further Steps
• Support 1 hour+ video processing using Elastic Transcoder

• Support Live Streaming

• MediaLive? Fargate?

• Finding solution for WebRTC gateway to relay live video stream

• Video Advertisement

• MediaTailor?

• Metrics, Management Tools …

• NSFW filtering - rekognition video or rekognition
Postmortem
•


• Elastic Transcode Elemental MediaConvert


• Processing pipeline
VOD 

• Lambda 

• Lambda
How about other media
types?

(Audio, GIF, Image…)
We’re hiring!

https://careers.vingle.net
Thank you

* * *

Contenu connexe

Tendances

베스핀글로벌 OpsNow 웨비나_클라우드 비용 50% 절감하기
베스핀글로벌 OpsNow 웨비나_클라우드 비용 50% 절감하기베스핀글로벌 OpsNow 웨비나_클라우드 비용 50% 절감하기
베스핀글로벌 OpsNow 웨비나_클라우드 비용 50% 절감하기BESPIN GLOBAL
 
20210316 AWS Black Belt Online Seminar AWS DataSync
20210316 AWS Black Belt Online Seminar AWS DataSync20210316 AWS Black Belt Online Seminar AWS DataSync
20210316 AWS Black Belt Online Seminar AWS DataSyncAmazon Web Services Japan
 
Jenkins를 활용한 Openshift CI/CD 구성
Jenkins를 활용한 Openshift CI/CD 구성 Jenkins를 활용한 Openshift CI/CD 구성
Jenkins를 활용한 Openshift CI/CD 구성 rockplace
 
20190911 AWS Black Belt Online Seminar AWS Batch
20190911 AWS Black Belt Online Seminar AWS Batch20190911 AWS Black Belt Online Seminar AWS Batch
20190911 AWS Black Belt Online Seminar AWS BatchAmazon Web Services Japan
 
AWS Black Belt Techシリーズ Amazon Route53
AWS Black Belt Techシリーズ Amazon Route53AWS Black Belt Techシリーズ Amazon Route53
AWS Black Belt Techシリーズ Amazon Route53Amazon Web Services Japan
 
[社内勉強会]ELBとALBと数万スパイク負荷テスト
[社内勉強会]ELBとALBと数万スパイク負荷テスト[社内勉強会]ELBとALBと数万スパイク負荷テスト
[社内勉強会]ELBとALBと数万スパイク負荷テストTakahiro Moteki
 
20190326 AWS Black Belt Online Seminar Amazon CloudWatch
20190326 AWS Black Belt Online Seminar Amazon CloudWatch20190326 AWS Black Belt Online Seminar Amazon CloudWatch
20190326 AWS Black Belt Online Seminar Amazon CloudWatchAmazon Web Services Japan
 
AWS Summit Seoul 2023 |투자를 모두에게, 토스증권의 MTS 구축 사례
AWS Summit Seoul 2023 |투자를 모두에게, 토스증권의 MTS 구축 사례AWS Summit Seoul 2023 |투자를 모두에게, 토스증권의 MTS 구축 사례
AWS Summit Seoul 2023 |투자를 모두에게, 토스증권의 MTS 구축 사례Amazon Web Services Korea
 
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...Amazon Web Services Japan
 
20200331 AWS Black Belt Online Seminar AWS Elemental MediaConvert
20200331 AWS Black Belt Online Seminar AWS Elemental MediaConvert20200331 AWS Black Belt Online Seminar AWS Elemental MediaConvert
20200331 AWS Black Belt Online Seminar AWS Elemental MediaConvertAmazon Web Services Japan
 
20191023 AWS Black Belt Online Seminar Amazon EMR
20191023 AWS Black Belt Online Seminar Amazon EMR20191023 AWS Black Belt Online Seminar Amazon EMR
20191023 AWS Black Belt Online Seminar Amazon EMRAmazon Web Services Japan
 
CI/CD for Containers: A Way Forward for Your DevOps Pipeline
CI/CD for Containers: A Way Forward for Your DevOps PipelineCI/CD for Containers: A Way Forward for Your DevOps Pipeline
CI/CD for Containers: A Way Forward for Your DevOps PipelineAmazon Web Services
 
20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier
20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier
20190220 AWS Black Belt Online Seminar Amazon S3 / GlacierAmazon Web Services Japan
 
Kinesis Firehoseを使ってみた
Kinesis Firehoseを使ってみたKinesis Firehoseを使ってみた
Kinesis Firehoseを使ってみたMasaki Misawa
 
20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したことAmazon Web Services Japan
 
서비스 무중단 마이그레이션 : KT에서 Amazon으로
서비스 무중단 마이그레이션 : KT에서 Amazon으로서비스 무중단 마이그레이션 : KT에서 Amazon으로
서비스 무중단 마이그레이션 : KT에서 Amazon으로신우 방
 
Awsでのsql高可用構成 Always On
Awsでのsql高可用構成 Always OnAwsでのsql高可用構成 Always On
Awsでのsql高可用構成 Always OnShinodaYukihiro
 
AWS Black Belt Online Seminar 2017 AWS Storage Gateway
AWS Black Belt Online Seminar 2017 AWS Storage GatewayAWS Black Belt Online Seminar 2017 AWS Storage Gateway
AWS Black Belt Online Seminar 2017 AWS Storage GatewayAmazon Web Services Japan
 

Tendances (20)

베스핀글로벌 OpsNow 웨비나_클라우드 비용 50% 절감하기
베스핀글로벌 OpsNow 웨비나_클라우드 비용 50% 절감하기베스핀글로벌 OpsNow 웨비나_클라우드 비용 50% 절감하기
베스핀글로벌 OpsNow 웨비나_클라우드 비용 50% 절감하기
 
20210316 AWS Black Belt Online Seminar AWS DataSync
20210316 AWS Black Belt Online Seminar AWS DataSync20210316 AWS Black Belt Online Seminar AWS DataSync
20210316 AWS Black Belt Online Seminar AWS DataSync
 
Aurora
AuroraAurora
Aurora
 
Jenkins를 활용한 Openshift CI/CD 구성
Jenkins를 활용한 Openshift CI/CD 구성 Jenkins를 활용한 Openshift CI/CD 구성
Jenkins를 활용한 Openshift CI/CD 구성
 
20190911 AWS Black Belt Online Seminar AWS Batch
20190911 AWS Black Belt Online Seminar AWS Batch20190911 AWS Black Belt Online Seminar AWS Batch
20190911 AWS Black Belt Online Seminar AWS Batch
 
AWS Black Belt Techシリーズ Amazon Route53
AWS Black Belt Techシリーズ Amazon Route53AWS Black Belt Techシリーズ Amazon Route53
AWS Black Belt Techシリーズ Amazon Route53
 
Amazon EBS: Deep Dive
Amazon EBS: Deep DiveAmazon EBS: Deep Dive
Amazon EBS: Deep Dive
 
[社内勉強会]ELBとALBと数万スパイク負荷テスト
[社内勉強会]ELBとALBと数万スパイク負荷テスト[社内勉強会]ELBとALBと数万スパイク負荷テスト
[社内勉強会]ELBとALBと数万スパイク負荷テスト
 
20190326 AWS Black Belt Online Seminar Amazon CloudWatch
20190326 AWS Black Belt Online Seminar Amazon CloudWatch20190326 AWS Black Belt Online Seminar Amazon CloudWatch
20190326 AWS Black Belt Online Seminar Amazon CloudWatch
 
AWS Summit Seoul 2023 |투자를 모두에게, 토스증권의 MTS 구축 사례
AWS Summit Seoul 2023 |투자를 모두에게, 토스증권의 MTS 구축 사례AWS Summit Seoul 2023 |투자를 모두에게, 토스증권의 MTS 구축 사례
AWS Summit Seoul 2023 |투자를 모두에게, 토스증권의 MTS 구축 사례
 
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
 
20200331 AWS Black Belt Online Seminar AWS Elemental MediaConvert
20200331 AWS Black Belt Online Seminar AWS Elemental MediaConvert20200331 AWS Black Belt Online Seminar AWS Elemental MediaConvert
20200331 AWS Black Belt Online Seminar AWS Elemental MediaConvert
 
20191023 AWS Black Belt Online Seminar Amazon EMR
20191023 AWS Black Belt Online Seminar Amazon EMR20191023 AWS Black Belt Online Seminar Amazon EMR
20191023 AWS Black Belt Online Seminar Amazon EMR
 
CI/CD for Containers: A Way Forward for Your DevOps Pipeline
CI/CD for Containers: A Way Forward for Your DevOps PipelineCI/CD for Containers: A Way Forward for Your DevOps Pipeline
CI/CD for Containers: A Way Forward for Your DevOps Pipeline
 
20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier
20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier
20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier
 
Kinesis Firehoseを使ってみた
Kinesis Firehoseを使ってみたKinesis Firehoseを使ってみた
Kinesis Firehoseを使ってみた
 
20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと
 
서비스 무중단 마이그레이션 : KT에서 Amazon으로
서비스 무중단 마이그레이션 : KT에서 Amazon으로서비스 무중단 마이그레이션 : KT에서 Amazon으로
서비스 무중단 마이그레이션 : KT에서 Amazon으로
 
Awsでのsql高可用構成 Always On
Awsでのsql高可用構成 Always OnAwsでのsql高可用構成 Always On
Awsでのsql高可用構成 Always On
 
AWS Black Belt Online Seminar 2017 AWS Storage Gateway
AWS Black Belt Online Seminar 2017 AWS Storage GatewayAWS Black Belt Online Seminar 2017 AWS Storage Gateway
AWS Black Belt Online Seminar 2017 AWS Storage Gateway
 

Similaire à Serverless Media Workflow

Silverlight Wireshark Analysis
Silverlight Wireshark AnalysisSilverlight Wireshark Analysis
Silverlight Wireshark AnalysisYoss Cohen
 
Building A Streaming Apple TV App (CocoaConf San Jose, Nov 2016)
Building A Streaming Apple TV App (CocoaConf San Jose, Nov 2016)Building A Streaming Apple TV App (CocoaConf San Jose, Nov 2016)
Building A Streaming Apple TV App (CocoaConf San Jose, Nov 2016)Chris Adamson
 
AWS re:Invent 2016: Accelerating the Transition to Broadcast and OTT Infrastr...
AWS re:Invent 2016: Accelerating the Transition to Broadcast and OTT Infrastr...AWS re:Invent 2016: Accelerating the Transition to Broadcast and OTT Infrastr...
AWS re:Invent 2016: Accelerating the Transition to Broadcast and OTT Infrastr...Amazon Web Services
 
Multicore ware applications of machine learning for video encoding
Multicore ware applications of machine learning for video encodingMulticore ware applications of machine learning for video encoding
Multicore ware applications of machine learning for video encodingGanesan Narayanasamy
 
Building A Streaming Apple TV App (CocoaConf DC, Sept 2016)
Building A Streaming Apple TV App (CocoaConf DC, Sept 2016)Building A Streaming Apple TV App (CocoaConf DC, Sept 2016)
Building A Streaming Apple TV App (CocoaConf DC, Sept 2016)Chris Adamson
 
HTML5 video & Amazon elastic transcoder - FCIP August 2014
HTML5 video & Amazon elastic transcoder - FCIP August 2014HTML5 video & Amazon elastic transcoder - FCIP August 2014
HTML5 video & Amazon elastic transcoder - FCIP August 2014RZasadzinski
 
[AWS Media Symposium 2019] AWS Media Services Innovation - Christer Whitehorn...
[AWS Media Symposium 2019] AWS Media Services Innovation - Christer Whitehorn...[AWS Media Symposium 2019] AWS Media Services Innovation - Christer Whitehorn...
[AWS Media Symposium 2019] AWS Media Services Innovation - Christer Whitehorn...Amazon Web Services Korea
 
Glitch-Free A/V Encoding (CocoaConf Boston, October 2013)
Glitch-Free A/V Encoding (CocoaConf Boston, October 2013)Glitch-Free A/V Encoding (CocoaConf Boston, October 2013)
Glitch-Free A/V Encoding (CocoaConf Boston, October 2013)Chris Adamson
 
Adobe HTTP Streaming
Adobe HTTP StreamingAdobe HTTP Streaming
Adobe HTTP StreamingYoss Cohen
 
Sm west 2010-microsoft-workshop
Sm west 2010-microsoft-workshopSm west 2010-microsoft-workshop
Sm west 2010-microsoft-workshopPrashant Ohal
 
Cloudsolutionday 2016: DevOps workflow with Docker on AWS
Cloudsolutionday 2016: DevOps workflow with Docker on AWSCloudsolutionday 2016: DevOps workflow with Docker on AWS
Cloudsolutionday 2016: DevOps workflow with Docker on AWSAWS Vietnam Community
 
IBC Content Everywhere Hub Presentation: HTML5 And Fastest Encoding
IBC Content Everywhere Hub Presentation: HTML5 And Fastest EncodingIBC Content Everywhere Hub Presentation: HTML5 And Fastest Encoding
IBC Content Everywhere Hub Presentation: HTML5 And Fastest EncodingBitmovin Inc
 
Zitec+ +new business+-+3iun2010
Zitec+ +new business+-+3iun2010Zitec+ +new business+-+3iun2010
Zitec+ +new business+-+3iun2010Agora Group
 
Criteo Labs Infrastructure Tech Talk Meetup Nov. 7
Criteo Labs Infrastructure Tech Talk Meetup Nov. 7Criteo Labs Infrastructure Tech Talk Meetup Nov. 7
Criteo Labs Infrastructure Tech Talk Meetup Nov. 7Shuo LI
 
NAB Show 2018 Notes
NAB Show 2018 NotesNAB Show 2018 Notes
NAB Show 2018 NotesYusuke Goto
 
AWS Webcast - What's New with Amazon Elastic Transcoder
AWS Webcast - What's New with Amazon Elastic TranscoderAWS Webcast - What's New with Amazon Elastic Transcoder
AWS Webcast - What's New with Amazon Elastic TranscoderAmazon Web Services
 
ReproNow—Save Time Reproducing and Triaging Security Bugs
ReproNow—Save Time Reproducing and Triaging Security BugsReproNow—Save Time Reproducing and Triaging Security Bugs
ReproNow—Save Time Reproducing and Triaging Security BugsPriyanka Aash
 

Similaire à Serverless Media Workflow (20)

Pycon2013
Pycon2013Pycon2013
Pycon2013
 
Silverlight Wireshark Analysis
Silverlight Wireshark AnalysisSilverlight Wireshark Analysis
Silverlight Wireshark Analysis
 
Building A Streaming Apple TV App (CocoaConf San Jose, Nov 2016)
Building A Streaming Apple TV App (CocoaConf San Jose, Nov 2016)Building A Streaming Apple TV App (CocoaConf San Jose, Nov 2016)
Building A Streaming Apple TV App (CocoaConf San Jose, Nov 2016)
 
AWS re:Invent 2016: Accelerating the Transition to Broadcast and OTT Infrastr...
AWS re:Invent 2016: Accelerating the Transition to Broadcast and OTT Infrastr...AWS re:Invent 2016: Accelerating the Transition to Broadcast and OTT Infrastr...
AWS re:Invent 2016: Accelerating the Transition to Broadcast and OTT Infrastr...
 
Multicore ware applications of machine learning for video encoding
Multicore ware applications of machine learning for video encodingMulticore ware applications of machine learning for video encoding
Multicore ware applications of machine learning for video encoding
 
Building A Streaming Apple TV App (CocoaConf DC, Sept 2016)
Building A Streaming Apple TV App (CocoaConf DC, Sept 2016)Building A Streaming Apple TV App (CocoaConf DC, Sept 2016)
Building A Streaming Apple TV App (CocoaConf DC, Sept 2016)
 
HTML5 video & Amazon elastic transcoder - FCIP August 2014
HTML5 video & Amazon elastic transcoder - FCIP August 2014HTML5 video & Amazon elastic transcoder - FCIP August 2014
HTML5 video & Amazon elastic transcoder - FCIP August 2014
 
[AWS Media Symposium 2019] AWS Media Services Innovation - Christer Whitehorn...
[AWS Media Symposium 2019] AWS Media Services Innovation - Christer Whitehorn...[AWS Media Symposium 2019] AWS Media Services Innovation - Christer Whitehorn...
[AWS Media Symposium 2019] AWS Media Services Innovation - Christer Whitehorn...
 
Glitch-Free A/V Encoding (CocoaConf Boston, October 2013)
Glitch-Free A/V Encoding (CocoaConf Boston, October 2013)Glitch-Free A/V Encoding (CocoaConf Boston, October 2013)
Glitch-Free A/V Encoding (CocoaConf Boston, October 2013)
 
Adobe HTTP Streaming
Adobe HTTP StreamingAdobe HTTP Streaming
Adobe HTTP Streaming
 
Mm sys 2013-demo
Mm sys 2013-demoMm sys 2013-demo
Mm sys 2013-demo
 
Apan media encoding
Apan media encodingApan media encoding
Apan media encoding
 
Sm west 2010-microsoft-workshop
Sm west 2010-microsoft-workshopSm west 2010-microsoft-workshop
Sm west 2010-microsoft-workshop
 
Cloudsolutionday 2016: DevOps workflow with Docker on AWS
Cloudsolutionday 2016: DevOps workflow with Docker on AWSCloudsolutionday 2016: DevOps workflow with Docker on AWS
Cloudsolutionday 2016: DevOps workflow with Docker on AWS
 
IBC Content Everywhere Hub Presentation: HTML5 And Fastest Encoding
IBC Content Everywhere Hub Presentation: HTML5 And Fastest EncodingIBC Content Everywhere Hub Presentation: HTML5 And Fastest Encoding
IBC Content Everywhere Hub Presentation: HTML5 And Fastest Encoding
 
Zitec+ +new business+-+3iun2010
Zitec+ +new business+-+3iun2010Zitec+ +new business+-+3iun2010
Zitec+ +new business+-+3iun2010
 
Criteo Labs Infrastructure Tech Talk Meetup Nov. 7
Criteo Labs Infrastructure Tech Talk Meetup Nov. 7Criteo Labs Infrastructure Tech Talk Meetup Nov. 7
Criteo Labs Infrastructure Tech Talk Meetup Nov. 7
 
NAB Show 2018 Notes
NAB Show 2018 NotesNAB Show 2018 Notes
NAB Show 2018 Notes
 
AWS Webcast - What's New with Amazon Elastic Transcoder
AWS Webcast - What's New with Amazon Elastic TranscoderAWS Webcast - What's New with Amazon Elastic Transcoder
AWS Webcast - What's New with Amazon Elastic Transcoder
 
ReproNow—Save Time Reproducing and Triaging Security Bugs
ReproNow—Save Time Reproducing and Triaging Security BugsReproNow—Save Time Reproducing and Triaging Security Bugs
ReproNow—Save Time Reproducing and Triaging Security Bugs
 

Dernier

Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxAndreas Kunz
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfYashikaSharma391629
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZABSYZ Inc
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 

Dernier (20)

Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZ
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 

Serverless Media Workflow

  • 2. Speaker • Serverless Lover • Software Engineer @ Vingle • Freelancer Software Engineer @ Artistscard • Software Engineer @ Law&Company • https://github.com/mooyoul • https://mooyoul.github.io
  • 3.
  • 4. A journey to
 Video Service 🎥
  • 5. Video is becoming 
 the most important content
 🔥🔥🔥
  • 6. Let’s add video feature on Vingle! 😎
  • 14. Ingest Step Requirements • Support File-based workflow only for now • Simple upload workflow for clients • Fast upload speeds anywhere in the world • Durable, scalable, fast storage • No additional disk storage required for upload • No maintenance required
  • 15. Ingest Step Requirements • Support File-based workflow only for now • Simple upload workflow for clients • Fast upload speeds anywhere in the world • Durable, scalable, fast storage • No additional disk storage required for upload • No maintenance required
  • 16. S3 Upload using pre-signed URL • Allows client can upload directly to S3 using pre- signed URL • AWS-SDK supports pre- signed url generation
  • 17. S3 Upload using pre-signed URL
  • 18. …but we are using 
 us-east-1 region
  • 19. some regional ISPs have bandwidth issue on international network transfer 💩
  • 20. Slow Upload on some ISPs
  • 21. Upload speed is so slow!🐢🐢🐢
  • 22. Submarine cables 
 in South Korea
  • 23. Submarine cables 
 in South Korea
  • 24. Two options to accelerate S3 transfer 🚀
  • 25. Two options to accelerate S3 transfer • Proxy file transfer traffic through CloudFront • Cloudfront can accelerate dynamic content • Uses Cloudfront Edge locations to optimize route path • Enable S3 Transfer Acceleration • Takes advantage of CloudFront’s globally distributed edge locations • More transfer optimizations
  • 26. S3 Transfer Acceleration is faster than Cloudfront as Proxy
  • 27. S3 Transfer Acceleration makes throughput faster
  • 31. Processing Requirements • use fully-managed service if possible • scalable, reliable • adaptive bitrate streaming • Important: compatible with various platforms, devices • Desktop Web - IE 10+, Edge, Chrome, Firefox • Mobile Web - Mobile Safari, Chrome Mobie • Android - 4.1 ICS+ • iOS - 9+ • Most Important: Delivery video to users ASAP
  • 32. Wait! 
 What is Adaptive Bitrate Streaming?
  • 33. Adaptive Bitrate Streaming • From Wikipedia: • Adaptive bitrate streaming is a technique used in streaming multimedia over computer networks. • It works by detecting a user's bandwidth and CPU capacity in real time and adjusting the quality of a video stream accordingly. • The result: very little buffering, fast start time and a good experience for both high-end and low-end connections.
  • 36. Choosing Streaming Protocol • Non-HTTP based protocols like RTMP are not in our interest • Looked for HTTP-based protocols, or methods • Progressive Download Single File via HTTP • 1st request: Range: 0-255 • 2st request: Range: 256-511 • 3rd request: Range: 512-767 • … • Apple HLS • MPEG-DASH
  • 37. Choosing Streaming Protocol • Progressive Download Single File via HTTP • Apple HLS • MPEG-DASH
  • 38. Choosing Streaming Protocol • Progressive Download Single File via HTTP • Apple HLS - Winner! • MPEG-DASH
  • 40. Progressive Download
 Single File via HTTP • Pros • Easy to implement • Cons • Implementing Adaptive Bitrate Streaming is so hard (almost impossible) without getting “choppy” frames, or “pop” gap sound between streams • Slow seeking/starting since container requires metadata reading • Large binary can occur lower cache hit • No Live Stream compatibility
  • 41. MPEG-DASH • Pros • New standard • Based on Fragmented MPEG4 (similar to MPEG2 Transport Stream on HLS) • Broader codec support • Cons • IMO it is not production ready • Market, Platform, Community support is not good at this moment • Workflow was unstable during experiment
  • 43. First Spec - Protocol • HTTP Live Stream (HLS) • Apple invented standard, natively supported on macOS/iOS/tvOS • Natively supports adaptive bitrate streaming, Live Streaming, and DRM (Apple FairPlay) • Based on HTTP Protocol, Play well with transitional HTTP CDN • Trusted by many providers, Many stable implementations • Amazon, Youtube, Facebook, Twitter, Vimeo, Twitch, Akamai, New York Times, FOX TV, TED, VK, POOQ, SK Broadband TV … • Android - ExoPlayer • Web - MediaSource Extension is standard spec, HLS.js, Video.js
  • 44. First Spec - Input • No codec limitation of input source
 
 … but expects most input source are H.264/AVC + AAC based • Max acceptable resolution: 1080p • Max acceptable bitrate: 10Mbps • Max acceptable duration: 5 minutes
  • 45. First Spec - Output • Common • H.264/AVC1 + AAC LC • Many graphic chipset supports hardware accelerated decoding • Most popular codec in market • Apple HLS • Three variants for adaptive bitrate streaming • High Quality: Up to 1080p, 60p, High/4.1, 4Mbps • Medium Quality: Up to 720p, 30p, Main/4.0, 2Mbps • Low Quality: Up to 480p, 30p, Baseline/3.1 800kbps • Progressive Download Single File via HTTP for HLS fallback • Medium Quality only
  • 46. First Spec - Output • 4 Outputs • HLS HQ • HLS MQ • HLS LQ • HTTP Progressive MP4 MQ
  • 48. Requirements • use fully-managed service if possible • scalable, reliable • adaptive bitrate streaming • Important: compatible with various platforms, devices • Desktop Web - IE 10+, Edge, Chrome, Firefox • Mobile Web - Mobile Safari, Chrome Mobie • Android - 4.1 ICS+ • iOS - 9+ • Important: Delivery video to users ASAP
  • 49. Requirements • use fully-managed service if possible • scalable, reliable • adaptive bitrate streaming • Important: compatible with various platforms, devices • Desktop Web - IE 10+, Edge, Chrome, Firefox • Mobile Web - Mobile Safari, Chrome Mobie • Android - 4.1 ICS+ • iOS - 9+ • Important: Delivery video to users ASAP
  • 50. Requirements • use fully-managed service if possible • scalable, reliable • Important: Delivery video to users ASAP
  • 51. AWS provides bunch of media products 🎉
  • 52. Video Encoding Products • AWS Elastic Transcoder • Fully-managed service, pay only for what you use (per minute of output video) • HLS Support • Configurable Presets • AWS Elemental MediaConvert • Newly launched, Fully-managed service, pay only for what you use (per minute of output video) • HLS Support • Broadcasting-grade, high quality output, Professional Codec Support (e.g. ProRes) • Configurable Presets • In some scenarios, MediaConvert is cheaper than Elastic Transcoder • New! Basic Tier for Simple Web Videos
  • 53. …or build your own video encoding service
  • 54. Most time-consuming task is video encoding
  • 56. Test conditions • Input • f(x) 4 Walls M/V (3m 33s) • H.264/AVC, 1080p, 23.97fps, 8Mbps, High/4.1 • AAC LC, 192k, 48KHz, 2 Channels • Mr. Robot Clip (52m 54s) • H.264/AVC, 720p, 23.97fps, 1.5Mbps, High/4.1 • AC3, 384k, 48KHz, 6 Channels • Output • Single HLS Output • H.264/AVC, 1080p, 23.97fps, ABR 3Mbps (Max 4.5Mbps), High/4.1 • AAC LC, 128k, 48KHz, 2 Channels • No Thumbnail Generation
  • 61. Results • Overall workflow was stable • Quality • The output quality of both was similar • Fixed GOP => Consistant segment duration • Processing Speed (sorted by faster) • Elastic Transcoder • MediaConvert Basic • MediaConvert Pro 
 
 

  • 62. Problems • Pricing is quite expensive • Needed more faster encoding speed without losing quality • Missing CRF (Constant Rate Factor) bitrate mode support • Can’t control encoder options • MediaConvert has better encoder option (e.g . quantize algorithm - CABAC) • Can’t control video filters
 (e.g. lanczos for resizing, yadif for deinterlacing, color filters like instagram) • There’s no way to remux video
  • 63. Make our own processing workflow 💥
  • 64. Three ways to run job • Batch - EC2 • Fargate - ECS • Step Functions + Lambda
  • 65. Three ways to run job • Batch - EC2 • Fargate - ECS • Step Functions + Lambda - WINNER!
  • 66. Three ways to run job • Batch - EC2 • Requires additional instance provisioning time (extremely slow) • Fargate - ECS • Requires additional container provisioning time
 (about 30sec~60sec) • Setting High CPU power requires High Memory Size • Lambda • Computing Power is quite slower than EC2/Fargate instances • …but now we have 3008MB Memory option, which has faster processing power • No additional provisioning time required
  • 71. How to get encoding software running on AWS Lambda?
  • 72. Lambda-runtime compatible build • Linux program • Lambda execution runtime is based on Amazon Linux AMI (amzn-ami-hvm-2017.03.1.20170812- x86_64-gp2) • Instead of using build instance, just make build image which is based on amazon linux docker image • docker pull amazonlinux:2017.03.1.20170812 • vim Dockerfile # Be careful updating openssl. it can make incompatible shared library issue • docker build . -t my-awesome-lambda-build-env • docker run --rm -v $PWD:/workspace my-awesome-lambda-build-env /workspace/build.sh • Test built binaries or libraries using lambci lambda image • docker pull lambci/lambda:nodejs8.10 • docker run --rm -v $PWD:/workspace --entrypoint bash lambci/lambda:nodejs8.10 / workspace/test.sh
  • 73. Lambda-runtime compatible build • Node.js Native Addons • lambci provides docker images to rebuild native addons • docker pull lambci/lambda:build-nodejs8.10 • docker run --rm -v $PWD:/var/task lambci/ lambda:build-nodejs8.10 # runs “npm rebuild”
  • 75. Timeout issues Hard to organize each steps
  • 76. Step functions • Makes workflow simple to orchestrate AWS Lambda functions • Supports Parallel state • built-in error handling, retry, fallback conditions • Useful patterns • Delay execution for X seconds or until specific date/time • Recursive Execution using Choice State • Scan all records from DynamoDB table • dequeue messages from SQS until queue is empty
  • 79. State Machine - 1st version
  • 82. VPC Issue • Assigning Lambda to VPC introduces long cold-start time • about 10 sec, even used 3008MB memory size • impacts overall video processing time • Occasionally we had “connection timeout” issues • AWS Support confirmed sometimes ENI may not have internet connectivity • we had to implement our own retry logic
  • 83. VPC Issue • Scaling Issue when invocation spikes
  • 84. VPC Issue • VPC was required for S3 access through S3 Endpoint only (to authenticate s3 access using VPCE ID) • Removed VPC configuration • Switched to stream data using pre-signed urls or download object using AWS-SDK • reduced cold-start time (<40ms) • “connection timeout” issue has gone
  • 87. Tiny ephemeral storage (/ tmp) • Ephemeral storage capacity is 512MB, too small for media processing • You can’t add block device to lambda • NFS / EFS • Lambda does not provide root permission • so you cannot mount disks - you cannot use NFS in Lambda • Ramdisk • Ramdisk like /dev/shm is not available on Lambda • Lambda does not provide root permission • so you cannot create or mount ramdisk
  • 88. Tiny ephemeral storage (/ tmp) • S3 - only available option for now • stream everything if possible • use s3 as temporary storage • Video Input - S3 supports seeking object using Range request header => can be streamed • Video Output - may vary depending on container • MP4 - requires seekable output => you cannot pipe output => you cannot stream outputs • HLS - does not support writing outputs to pipes, since HLS consists of several files • Watch file system (e.g. chokidar) • Upload segments to s3 if generated • Removed uploaded file • Note: Higher memory size option provides faster Disk I/O and Network I/O • Note: S3 Object keys are stored in UTF-8 binary ordering across multiple partitions in the index
 => UUID key prefix helps to reduce first byte latency
  • 91. Optimize container reusability • Invoking different functions 
 => lambda container cannot be reused
  • 92. Optimize container reusability • HACK: Group multiple lambda functions to single lambda function • Inject task name using Pass State
  • 95. Delivery block • Currently we don’t need any DRM or AD insertion solution • Simple architecture • Use S3 as origin, Cloudfront as CDN • Use maximum TTL to maximize cache hit
  • 102. Launch
  • 105. 2nd Version • Improves encoding speed, output quality • Support Parallel Encoding • Split video streams to small chunks • Split Video/Audio encoding process • Encode streams per each preset, not outputs • HLS HQ / HLS MQ / HLS LQ / MP4 MQ
 => Encode streams to HQ / MQ / LQ and assemble them • Bypass encoding if input is compatible with our spec • Skip HLS encoding process if source quality is not good, or duration is too short • Support GIF input/output
  • 108. State Machine - 2nd version
  • 109. Results • Fast processing without losing quality • now processing f(x) M/V (1080p, 3m 33s) just takes 60 sec • if input source is compatible with our spec, processing can be done within <10 sec • Great output quality • Saving cost • encoding is not required if input source is compatible with our spec • Stable workflow • There’s no resource to manage • Acceptable max bitrate: Up to 300Mbps (Tested with ProRes source)
 Acceptable max resolution: 4K
 Acceptable codec: HEVC, ProRes
 Acceptable max duration: 1 hour
  • 110. Further Steps • Support 1 hour+ video processing using Elastic Transcoder • Support Live Streaming • MediaLive? Fargate? • Finding solution for WebRTC gateway to relay live video stream • Video Advertisement • MediaTailor? • Metrics, Management Tools … • NSFW filtering - rekognition video or rekognition
  • 112. • • Elastic Transcode Elemental MediaConvert • Processing pipeline VOD • Lambda • Lambda
  • 113. How about other media types?
 (Audio, GIF, Image…)