Erlang for video delivery

25
Erlang for video delivery platforms Friday, October 19, 12
  • date post

    21-Oct-2014
  • Category

    Technology

  • view

    1.217
  • download

    2

description

How Erlang is ideally suited for high volume and low latency systems like video on demand.

Transcript of Erlang for video delivery

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