voip applications and the cloud - where gen_fsm really shines

16
FSMs can be Useful Mahesh Paolini-Subramanya CTO, Vocalocity

Upload: mahesh-paolini-subramanya

Post on 03-Jul-2015

560 views

Category:

Technology


1 download

DESCRIPTION

VoIP applications and the Cloud - Where gen_fsm really shines Aptela provides hosted communications services for small business. Our - entirely cloud based - platform includes complex call routing, messaging, web-portals, mobile apps, PSTN/SIP access, and a coffee-grinder attachment. At peak, we handle dozens of calls (and an infinity of HTTP requests) per second These complex calling services work thanks to the magic of gen_fsm, a behavior which is frequently overlooked at best, and ignored at worst. In the first part of the talk, I'll describe our architecture, with gen_fsm's critical role in it as the focus. The second part will delve into the specifics of how this behavior can help build out complex calling services, with examples culled from some of Aptela's cooler (or crazier?) features

TRANSCRIPT

FSMs can be Useful

Mahesh Paolini-Subramanya

CTO, Vocalocity

© Vocalocity 2011. Confidential. 2

Hosted PBX Taxonomy

►Named Box

• Pure hosting

• Clustering/Virtual or Big Honking Box

• Load/Scaling issues same as ‘one box’ application

►High Level Application Server

• Calls generate high level events

• Events interact with application server

• Predefined spaces/features

• Load/Scaling issues same as ‘one box’ application

2

© Vocalocity 2011. Confidential. 3

Hosted PBX Taxonomy

►Granular Application Server

• Calls generate granular events

• Events interact with application server

• Easy to create simple applications

Point features: FML, notifications, transcriptions

Call Switch: Routing, voicemail

► Difficult to build complex applications

• Updates and deployments

• Testing and Debugging

• Concurrency

• Scaling and Partitioning

• Persistence

3

© Vocalocity 2011. Confidential. 4

4

Cloud Computing

►Wikipedia

“a style of computing in which typically real-time scalable

resources are provided as a service over the Internet to end-

users who need not have knowledge of, expertise in, or control

over the technology infrastructure”

►Vocalocity

• Horizontal Scaling and/or Clustering

• Abstraction of application layer

• SOA and/or fine-grained API

• Redundancy irrelevance

© Vocalocity 2011. Confidential. 5

5

Cloud Computing

► Telephony makes it harder

• Simple and distributed actions? Done

• High Level Applications? Done

• Both at the same time? Well, Maybe Not…

► Vocalocity

• Distributed application infrastructure (erlang)

• Distributed persistence infrastructure

• Distributed telephony infrastructure

Simple, atomic events!!

© Vocalocity 2011. Confidential. 6

Why erlang?

► Testing

► Code deployment

► Concurrency

► Complexity

► Predictable Performance

► Fault tolerance

► Error Containment

► Testing

► Code Deployment

6

© Vocalocity 2011. Confidential. 7

Clean APIs

►Only interface into System

►Handlers for different modalities

• HTTP for Public

• STOMP for Private

7

Business Rules

STOMP

Workflow

HTTP

Vocalocity Call Server

Event

System

© Vocalocity 2011. Confidential. 8

Clean APIs

► Administrative

• CRUD – Users, Depts, …

• Regulatory – E911, TRS, …

• OSS

► Informative

• Notifications

• High Level Events

• Messages – History, Reporting

► Interactive

• Communications – Calls, Contacts, …

• Profile – Blacklist, FML, Media, …

• Messages – History, Reporting, …

8

Business Rules

STOMP

Workflow

HTTP

Vocalocity Call Server

Event

System

© Vocalocity 2011. Confidential. 9

Processes

► All request goes to any available

application node as a message

►Nodes have processes

• Users

• Clients

• Calls

• Faxes

• Phones

• Load Balancers

► Processes do things

9

© Vocalocity 2011. Confidential. 10

Event Handlers

► They get information to endpoints

• GUI

• API callbacks

1

© Vocalocity 2011. Confidential. 11

Event Handlers

► The perform asynchronous application

activities

• Logging

• notifications

► They bridge between the FSMs and the

calls

• Check blacklist

• Play error message

• Hangup

• Go offhook

1

© Vocalocity 2011. Confidential. 12

Calling

► Calls are tracked as Processes

► Event interface for requests and responses (XML)

► fine-grained events that can

• make/break calls

• record audio and dtmf

• play audio and dtmf

• file operations

► Call Process tracks

• Channel parameters

• FSM name and state

1

Call Server Call Server

erlang / xml / events

Call Server

System SystemSystem

© Vocalocity 2011. Confidential. 13

Finite State Machines

► System has a limited set

of states

► States transition based

on conditions

► Transitions are atomic

► Events and actions at

entry and exit

1

* Diagrams from http://learnyousomeerlang.com/finite-state-machines

A Dog

A Cat

© Vocalocity 2011. Confidential. 14

Finite State Machines

►Many many many FSMs (25 at last count)

• Auto Attendant

• FML

• Voicemail

• Conference

• Fax

• C2C

• Video

• Directory

• Search

• Announcements

• Paging

1

init

Check node

Check Blacklist

Cancelled Blacklisted Next Endpoint Collections Unknown

Move node

Auto Attendant FML Voicemail FaxConference

© Vocalocity 2011. Confidential. 15

Finite State Machines

► Templates are your friend

► So are BIG sheets of paper.

►More is merrier

► But keep them simple, OK?

►Mixing States is BAD

► As is my haiku talent.

1

init

ReturnAutoAttendant

Hangup

init

Setup Call

Get CallerName

Play TransferMessage

Got CallerName

Dial

FSMs can be Useful – See?

Mahesh Paolini-Subramanya

CTO, Vocalocity