Hosted VoIP Services using Erlang/OTP VoIP meets the Cloud
Where is the Cloud Going Hardware Clustering Commodity Hardware Software Abstraction of application layer from hardware infrastructure Web 2.0 + Long Polling 24/7 services – always on, on demand Shorten Product Cycles “Easy” languages
Cloud coding – Tougher than expected Geometrical Complexity Concurrency management State management Latency tuning httpd scaling Updating code is a chore
Problems? What problems? Deadlocks Shared memory corruption Unreliable code updates (at best) Synchronous httpd requests Debugging Replication (and I haven’t even started)
Erlang Overview Joe Armstrong Designed for concurrency distributed systems error containment fault tolerance hot code loading Ericsson switches – 99.9999999% uptime (31ms/yr)
Designed for Concurrency Basic unit of concurrency is a process Really light-weight (~300 bytes) Not really a kernel process No shared memory with other processes No differentiation between Local and Remote messages Polymorphism through pattern matching Native multi-master database Runtime environment
Erlang in the wild
Case Study - Aptela Positioned to deliver unified “intelligent communications” (voice, data, video) to small and medium businesses. Launched on-demand PBX Software in 2001, transforming to Voice as a Service in 2005. SaaS delivery of integrated hosted applications and nationwide VoIP telephony infrastructure. Dynamic, growing customer base of 2800+ companies completing over 20 million transactions per month.
Why switch to Erlang/OTP? Concurrency management State management Faster Developer Ramp-up Easier code management & deployment Capacity tailing The roving bottleneck Fault tolerance
And? Development gains – Product Mgrs like the devs Exposing features versus developing features Components scale near-linearly Uptime is not a four-letter word Significant performance gains!
Enabling Integration