Top Banner
Erlang for video delivery platforms Friday, October 19, 12
25

Erlang for video delivery

Oct 21, 2014

Download

Technology

How Erlang is ideally suited for high volume and low latency systems like video on demand.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Erlang for video delivery

Erlangfor video delivery platforms

Friday, October 19, 12

Page 2: Erlang for video delivery

About me

Worked for Delta, Bellsouth, Sun Microsystems, Weather Channel

Love realtime, high volume systems

Sr. Director Engineering EricssonN2 Broadband -> Tandberg TV -> Ericsson

hwatkins @ github

Friday, October 19, 12

Page 3: Erlang for video delivery

Media Delivery Management SystemErlang (of course!)

Realtime processing

Protocol specific pieces

Ruby on Rails

Front end and some API’s

Friday, October 19, 12

Page 4: Erlang for video delivery

Media Delivery Management SystemMongoDB

Persistence layer

Geo redundant

RabbitMQ (AMQP)

Messaging Bus

Friday, October 19, 12

Page 5: Erlang for video delivery

VOD ecosystem

Friday, October 19, 12

Page 6: Erlang for video delivery

Async processing

Friday, October 19, 12

Page 7: Erlang for video delivery

Sync to Async

Friday, October 19, 12

Page 8: Erlang for video delivery

Dynamic RoutingAbility to add components on the fly

Apply components to different profiles

In harmony with multiple VM’s

Friday, October 19, 12

Page 9: Erlang for video delivery

Competing Consumer

Friday, October 19, 12

Page 10: Erlang for video delivery

Clients

HTTP DSM-CCISO/IEC 13818-6

Friday, October 19, 12

Page 11: Erlang for video delivery

Java binary protocol

Class per section

Lots of code

Lots of objects

Lots of GC

Friday, October 19, 12

Page 12: Erlang for video delivery

Binary Data

Friday, October 19, 12

Page 13: Erlang for video delivery

Pattern Matching

Friday, October 19, 12

Page 14: Erlang for video delivery

Memory Management

Java

Shared memory with reference count

Erlang

per thread heap

single assignment

Friday, October 19, 12

Page 15: Erlang for video delivery

Memory Footprint

Identical functionality developed in Java and Erlang

AMQP workers and connected to MongoDB

Java averaged 1 GB memory

Erlang averaged 200 MB memory

Friday, October 19, 12

Page 16: Erlang for video delivery

Threading ModelThreading is ideal for things like http requests

Java

Threads heavyweight - thread pools

Erlang

Lightweight - spawn on demand

Think linear

Friday, October 19, 12

Page 17: Erlang for video delivery

Clustering

Java

Memory - Terracotta

Erlang

Built in netadm:ping

Mnesia - disk or memory

Friday, October 19, 12

Page 18: Erlang for video delivery

Runtime Debugging

REPL (Read-Eval-Print-Loop)

Cookie

Remote Shell

Issue commands

Friday, October 19, 12

Page 19: Erlang for video delivery

OTP

Built for the real world - Use it!

application, gen_server and supervisor

Use alot!

gen_fsm and gen_event

Not as much but still useful

Friday, October 19, 12

Page 20: Erlang for video delivery

OTP Custom Behavior

Friday, October 19, 12

Page 21: Erlang for video delivery

Packagingreltool

rebar generate

start, stop, console, attach

runtime vm and libraries

small ~29M release

Friday, October 19, 12

Page 22: Erlang for video delivery

Useful Libraries

Friday, October 19, 12

Page 23: Erlang for video delivery

Rebar

De facto build system

Wrap in simple makefile for ease

Make dependancies easy to manage

Friday, October 19, 12

Page 24: Erlang for video delivery

folsom

Github boundary/folsom

Metrics and counters during runtime

Expose through mochiweb

Friday, October 19, 12

Page 25: Erlang for video delivery

Others

Mochiweb - Web Server

Webmachine - Rest

Friday, October 19, 12