<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jun 16, 2014 at 6:14 AM, Ben Merrills <span dir="ltr"><<a href="mailto:b.merrills@mersontech.co.uk" target="_blank">b.merrills@mersontech.co.uk</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Asterisk is scalable, ARI's issue (some would argue) is that you establish a connection with it for Stasis, not the other way round like FastAGI.<br>

<br>
To that end, the current accepted work around is to have some sort of local proxy on the Asterisk instances that establishes the ARI connection for your application, and then forwards on messages (using a message bus) to a central application.<br>

<br>
Most of what you want to do (by the sounds of it) can be done just as easily with FastAGI. ARI has a use case more in common with Asterisk Applications (e.g. app_queue etc). That's not to say however you can't use ARI for your setup.<br>

<br>
I am not sure if anyone has a large production scale setup out there using ARI, but all being well if they have they'll chip in to this conversation. We have large FastAGI deployments out there though, so if you feel ARI might not be the best solution right now, use AGI and revisit this later maybe?<br>

<span class="HOEnZb"><font color="#888888"><br>
Ben<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
Damir Wrote:<br>
Hi Ben,<br>
<br>
Thank you for you answer.<br>
<br>
With regards to scalability I am not so much concerned with scalability of .NET part, I am more worried about Asterisk itself. For example, would current implementation support having 200 concurrent channels all 'inside stasis'? Has anyone tried out anything like that?<br>

<br>
How about stability/robustness of the ARI itself? Would you consider it production ready? At least to the extent of current APIs? Or would you say that I am better off using FastAGI?<br>
<br>
Damir<br>
<br>
On Mon, Jun 16, 2014 at 6:20 PM, Ben Merrills <<a href="mailto:b.merrills@mersontech.co.uk">b.merrills@mersontech.co.uk</a>> wrote:<br>
Hi,<br>
A number of us are looking at scalability at the moment for Asterisk ARI (multi node etc), Paul Belanger has created a solution to work with Python and his ARI framework (<a href="https://github.com/kickstandproject/python-ari" target="_blank">https://github.com/kickstandproject/python-ari</a>) , and I am currently investigating options for AsterNET.ARI (<a href="https://asternetari.codeplex.com/" target="_blank">https://asternetari.codeplex.com/</a>) which is a .NET framework for Asterisk ARI.<br>

<br>
ARI itself is of course still in development and improvements and features are being added all the time. Myself (skrusty) and Paul (pabelanger) are both on IRC and I am sure he, as I would be happy to discuss what we've done in this area so far.<br>

<br>
Ben<br>
<br>
Damir Wrote:<br>
Hi All,<br>
<br>
I am new to this mailing list and maybe this question was asked before. Sorry if that is the case.<br>
<br>
I am starting a new greenfield project and I am strongly considering using ARI. I have just started learning about ARI.<br>
<br>
The project itself is going to be .NET based and have features like IVR, voicemail management, call routing etc.<br>
<br>
I plan to use ARI for as much as the API provides (and I have a feeling that it will cover most of my needs) however I am not sure about its stability/scalability, I know that version 12 is not a long term release but it is still an official release.<br>

<br>
Do you think that ARI is considerably stable/scalable ( for handling ~200 simultaneous calls) so that I can use it in production? <br></div></div></blockquote><div><br></div><div>In many ways, ARI is "closer" to the actual Asterisk core than Asterisk's other interfaces. While any layer of abstraction that involves external communication is going to add some overhead, I'd expect that whatever performance you can get out of a machine is going to be dictated by factors other than ARI.<br>
</div><div><br></div><div>For example: if your intended use case is to record all calls, setting up a Snoop channel and issuing the /record operation is not going to be the bottleneck - your disk I/O will be.<br><br></div>
<div>A few other thoughts:<br><br></div><div>- "Scaling" is an ambiguous term. Do you mean to scale up on a single machine, or scale out? As Ben alluded to, there are things you have to consider when scaling out. Since your application connects to each Asterisk instance (currently, at any rate), a proxy to manage the location of the Asterisk servers can be beneficial. Being HTTP based, there are lots of options in this area. Scaling up, on the other hand, is much more a factor of your hardware choices and use cases.<br>
<br></div><div>- I would treat each of your use cases separately. Building out an IVR in ARI is much different than building a VoiceMail system. ARI works well on a model of separate application spaces, which will help keep your separation of concerns in each application clean.<br>
</div><div><br></div></div>-- <br><div dir="ltr"><div>Matthew Jordan<br></div><div>Digium, Inc. | Engineering Manager</div><div>445 Jan Davis Drive NW - Huntsville, AL 35806 - USA</div><div>Check us out at: <a href="http://digium.com" target="_blank">http://digium.com</a> & <a href="http://asterisk.org" target="_blank">http://asterisk.org</a></div>
</div>
</div></div>