The document discusses using Erlang for building video delivery platforms. It highlights aspects of Erlang like real-time processing, lightweight concurrency using processes and messaging, and built-in clustering and fault tolerance. It compares Erlang favorably to Java in areas like memory usage, threading model, and runtime debugging. Erlang tools like OTP, Rebar, and libraries like folsom and mochiweb are also covered.
Driving Behavioral Change for Information Management through Data-Driven Gree...
Erlang for video delivery
1. Erlang
for video delivery platforms
Friday, October 19, 12
2. About me
Worked for Delta, Bellsouth, Sun
Microsystems, Weather Channel
Love realtime, high volume systems
Sr. Director Engineering Ericsson
N2 Broadband -> Tandberg TV -> Ericsson
hwatkins @ github
Friday, October 19, 12
3. Media Delivery
Management System
Erlang (of course!)
Realtime processing
Protocol specific pieces
Ruby on Rails
Front end and some API’s
Friday, October 19, 12
4. Media Delivery
Management System
MongoDB
Persistence layer
Geo redundant
RabbitMQ (AMQP)
Messaging Bus
Friday, October 19, 12
14. Memory Management
Java
Shared memory with reference count
Erlang
per thread heap
single assignment
Friday, October 19, 12
15. 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
16. Threading Model
Threading is ideal for things like
http requests
Java
Threads heavyweight - thread pools
Erlang
Lightweight - spawn on demand
Think linear
Friday, October 19, 12
17. Clustering
Java
Memory - Terracotta
Erlang
Built in netadm:ping
Mnesia - disk or memory
Friday, October 19, 12
19. 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