Building the infrastructure for delivering complex cloud-based services is remarkably difficult, what with having to deal with concurrency, deadlocks, state-management, etc. in a scalable manner. When one adds VoIP - with its combination of short (SIP) and long (RTP) transactions, this becomes near impossible. At Aptela, we have cracked the code and now provide a true telephony cloud with highly complex applications developed using simple web APIs, and with all calling handled in a truly distributed fashion. Our platform includes complex call routing, messaging, web-portals, mobile apps, PSTN/SIP access, and a coffee-grinder attachment, currently handling dozens of calls - and an infinity of HTTP requests - per second.
In this presentation, we will describe the architecture and process model, with an emphasis on the specific challenges associated with manipulating extremely large amounts of data in a near-real-time manner. In addition, we will also elaborate on the benefits of the erlang/OTP environment in developing a truly scalable, concurrent and fault-tolerant environment.
Three types of PBXs – Named Box, High Level App Server, and Granular App ServerNamed Box – point at a box, and say “Yup, that’s my server”High Level App Server – Broadsoft and/or FS/Asterisk using dialplans.
Point features are really easy to do. They are atomic, and don’t interact with each otherWhen you start talking about multiple entities interacting, users xferring amongst each other, state across a distributed environment, life gets a lot more difficult
Really, this is worth repeating. We’ve reached the state where we don’t do anything. Anything. *Anything*. Because something *will* break.
On the other hand, lets not talk about concurrency
Who knew that we’d end up being postgres gurusDo you know how many VMs and faxes we get per day? They have to go somewhereTelco is a reporting business.
Really, this is worth repeating. We’ve reached the state where we don’t do anything. Anything. *Anything*. Because something *will* break.
Explain supervisor trees - restart processes - dynamically move them around - location invariance - resilience
We use event_handlers to get information to endpointsGUI – anytime something interesting ahppens, we ship events off to the GUI (ringing, answered, presenceApplication – The State servers (where processes live) ship events back and forth so that processes can keep up to dateTelephony – Call servers use events to know what to do next (based on the FSMs). Pick up the call, play an error message, etc.
We use event_handlers to get information to endpointsGUI – anytime something interesting ahppens, we ship events off to the GUI (ringing, answered, presenceApplication – The State servers (where processes live) ship events back and forth so that processes can keep up to dateTelephony – Call servers use events to know what to do next (based on the FSMs). Pick up the call, play an error message, etc.
We use Finite State Machines – gen_fsm – to deal with anything and everything involving callsauto_attendant, bridge, check_voicemail, conference, default_phone, fml, dial_out, and havent even gotten to the voicemails and faxes
We use Finite State Machines – gen_fsm – to deal with anything and everything involving callsauto_attendant, bridge, check_voicemail, conference, default_phone, fml, dial_out, and havent even gotten to the voicemails and faxes
We use Finite State Machines – gen_fsm – to deal with anything and everything involving callsauto_attendant, bridge, check_voicemail, conference, default_phone, fml, dial_out, and havent even gotten to the voicemails and faxes
We have our own BGP ASWe have DIDs from multiple providers ( limits exposure)