Accessible Video Anywhere with ColdFusion an AWS

86
ColdFusion Summit 2016

Transcript of Accessible Video Anywhere with ColdFusion an AWS

Page 1: Accessible Video Anywhere with ColdFusion an AWS

ColdFusion Summit 2016

Page 2: Accessible Video Anywhere with ColdFusion an AWS

Accessible Video Anywhere with ColdFusion and AWSBrian Klaas Johns Hopkins University [email protected] @brian_klaas

Page 3: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems WinsForces

Page 4: Accessible Video Anywhere with ColdFusion an AWS
Page 5: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems WinsForces

Section 504 Section 508

Title III

Page 6: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems WinsForces

Page 7: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems WinsForces

Page 8: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems WinsForces

Page 9: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems WinsForces

Page 10: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems WinsForces

Page 11: Accessible Video Anywhere with ColdFusion an AWS

Accessible Video Anywhere with ColdFusion and AWSBrian Klaas Johns Hopkins University [email protected] @brian_klaas

Page 12: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems WinsCaveat

Page 13: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems WinsCaveat

Page 14: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems WinsCaveat

Architecture !code

Page 15: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems WinsCaveat

Page 16: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems WinsOverview

So…

Page 17: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems WinsOverview

Page 18: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems WinsOverview

Page 19: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Wins

Simple Storage Service

S3

AWS Services

Page 20: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems WinsAWS Services

<cffile action=“read” file=“s3://somebucket/somefile.txt” variable=“fileData” />

<cfdirectory action=“list” directory=“s3://somebucket/someDirectory” />

Page 21: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Wins

Simple Storage Service

S3

AWS Services

CloudFront

Page 22: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems WinsAWS Services

Page 23: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems WinsAWS Services

http://myDistribution.cloudFront.net/myFile/inS3.mp4

Protect files with signatures or by geographic region

$50/month per TB of traffic

CloudFront

Page 24: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems WinsAWS Services

We built nothing.

Page 25: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems WinsOverview

Page 26: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems WinsAWS Services

Elastic Transcoder

Massively parallel A/V transcoding engine

Cheaper than most desktop transcoding solutions

Repeatable jobs set up through a web form …or…

Page 27: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems WinsAWS Services

Page 28: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems WinsAWS Services

= Serverless computing

Lambda

Page 29: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems WinsAWS Services

<1.5 GB RAM <5 minutes

Page 30: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems WinsAWS Services

Page 31: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems WinsAWS Services

?

Page 32: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems WinsAWS Services

?

Page 33: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems WinsAWS Services

= Pub/Sub

Simple Notification Service

Page 34: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems WinsAWS Services

Page 35: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems WinsAWS Services

v1

Page 36: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems WinsAWS Services

!

Each S3 bucket can only have one Lambda listener

Track changes across multiple functions

ET jobs run asynchronously, and each gets its own ID

How do we know things are done?

Page 37: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Wins

v1

v2

Page 38: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Wins

Persistence

v2

Page 39: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Wins

Crazy scalable NoSQL document datastore

Pay for reads/writes per second

DynamoDB

Flexible data model as we figured what we needed

v2

Page 40: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Winsv2

Job 2

Job 1

Job 3

Page 41: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Winsv2

Job 2

Job 1

Job 3

Page 42: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Winsv2

Job 2

Job 1

Job 3

All done?

Page 43: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Winsv2

Job 2

Job 1

Job 3

All done?

Page 44: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Wins

Massively scalable infrastructure

API for subscribe/unsub, tracks bounces

Simple Email Service

Lambda functions can handle incoming + bounce msgs

v2

Page 45: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Wins

Video uploaded to S3 input bucket

Lambda processes file

Info about source file is stored in DynamoDB by Lambda function

v2

v2

Lambda function fires off all needed Elastic Transcoder jobs

Elastic Transcoder notifies SNS when each job is done

Lambda processes incoming SNS message

Page 46: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Wins

Information about job is updated in DynamoDB

Lambda function moves transcoded file to S3

v2

v2

Lambda function checks to see if all related jobs are done

If yes, SES message is sent to appropriate team member

If yes, Lambda notifies CF-based LMS to make video available

CloudFront picks up the file for global distribution

Page 47: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems WinsOverview

Page 48: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Wins

Bulk purchase savings + variable turnaround time

Highly accurate even on technical jargon + ESL

Caption search plugins

v3

API for job processing and tracking

Page 49: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Winsv3

Page 50: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Winsv3

!

Page 51: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Wins

videoID.mp4

v2

videoID^bklaas.mp4videoID^bklaas^sameDay.mp4videoID^bklaas^sameDay^noCaptions.mp4videoID^bklaas^sameDay^noCaptions^otherbucket/otherPath.mp4

Page 52: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Winsv3

!

Page 53: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Wins

Security credential system

Users, groups, permissions, roles

Identity Access Management

Extremely fine-grained control over access

v2

Page 54: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Winsv3

!

Page 55: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Winsv3

Page 56: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Wins

ctlS3Utils: https://github.com/brianklaas/ctlS3Utils

ctlCloudFrontUtils:https://github.com/brianklaas/ctlCloudFrontUtils

CTL Utils Request signing and file property manipulation

v3

Page 57: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Winsv3

v3

Page 58: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Winsv3

v3

Page 59: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Winsv3

Page 60: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Winsv3

Jobs

Page 61: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Wins

😢 Problems

Problems

Page 62: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Wins

Security

Problems

Page 63: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Wins

Always https

Problems

Add the 3rd party certificate to the Java keystore

Security

Page 64: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Wins

Use custom attributes for internal validation

Problems

Security

Page 65: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Wins

Build for idempotence

Problems

Security

Page 66: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Wins

Network timeouts

Problems

Page 67: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Wins

Lambda function execution time limit

Problems

Network

Page 68: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Wins

Store on S3, let 3rd party API grab

Problems

Network

Page 69: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Wins

Retries

Problems

Page 70: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Wins

Backup Lambda or CF functions for retries

Problems

Retries

Page 71: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Wins

Process

Problems

Page 72: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Wins

Debugging in Lambda is awful.

Problems

Process

Page 73: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Wins

Testing Lambda functions is hard.

Problems

Process

Page 74: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Wins

Everything fails.

Problems

Process

Page 75: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Wins

async:waterfall

Problems

Process

Page 76: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Wins

Distributed, moving pieces

Problems

Process

Page 77: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems WinsWins

👍 Wins!

Page 78: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Wins

No servers. No updating. No admin.

Wins

Page 79: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Wins

Fast!

Wins

Page 80: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Wins

Cheap!

Wins

Page 81: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems WinsWins

Fast Cheap

Good

Page 82: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Wins

+ AWS Services + Node.js + Microservices

Wins

Page 83: Accessible Video Anywhere with ColdFusion an AWS

Forces Caveat Overview AWS Services v2 v3 Problems Wins

Learn

Wins

Page 84: Accessible Video Anywhere with ColdFusion an AWS

Go Do!

Page 85: Accessible Video Anywhere with ColdFusion an AWS

Questions?

Brian Klaas Johns Hopkins University [email protected] @brian_klaas

Page 86: Accessible Video Anywhere with ColdFusion an AWS

Thankyou!