Scale means Skills
ProcessOne - Mickaël Rémond - October 17, 2011I have read a few comments during the week-end about possible fixes to ejabberd problems. It calls for clarification of to avoid lack of understanding of the area and frustration.

Looking at the given mentioned problems (OTP and binary support), one of them is already in ejabberd 3.0 alpha (binaries), but what got my attention is that finally they might not be problems. It always depends ultimately on what you want to achieve. Some optimisations might be relevant in a few cases, but in a generic situation I still think that optimisations we made for ejabberd project for our customers on a case by case have a much larger impact. Some of the mentioned improvements would also stand on your scaling path for different use cases.
Let me take a specific example. OTP compliance is a controversial topic. Erlang OTP stands for Open Telecom Platform and is essentially a set of good practices and pattern to build Erlang applications. OTP provides a convenient help to get started but it is no silver bullet for all Erlang applications design. Sometimes, they fit in your problem and sometimes you have to do it differently.
One of the typical OTP pattern is supervision. You are supposed to link Erlang workers (the process doing actual work) to a supervisor that can trigger actions when the worker terminates.
However, for extremely large systems, with lots of worker creation and destruction, the supervisor comes with a performance penalty that you cannot afford. You thus have to disable the transient supervisors. In that case, OTP approach can limit your performance and become a bottleneck.
My view is that to get the best performance, you have to know and observe how the system behave in real world situation, for the specific use case. XMPP is a large protocol, especially with tens of XMPP Extension Protocols that have been added over time. If you want to scale you have to have a perfect knowledge of Erlang inside / out, but also a perfect knowledge of the XMPP protocol itself. Some requirements or suggested approach in the protocol do not scale out of the specification, and you have to take into account a full solution design, from the client behaviour itself to the cluster architecture and code optimizations.
Micro optimisations at the code level are doomed to be very limited. However, optimizing the full stack, from client (both desktop and mobile) to server, including specific code level optimisations, is a sure win. From experience, we can squeeze from 2 to 3 times more concurrent users on a single node. Your mileage might vary, but it clearly demonstrate that multiple levels of knowledge are involved in designing a scalable XMPP messaging solution.
I understand it is frustrating to hear that from a customer perspective: they often expect turnkey solutions that scale linearly. However, after a few times working with us, they understand our view and why scaling cannot rely on a one size fits all approach.
We have developed a set of modules for ejabberd and optimisations and a range of expertise at Process One down to the client. This allows us to scale to unprecedented levels. OTP offers nice patterns, but is no substitution for this experience working on the largest XMPP deployments in the world.
Categories: Companies ProcessOne
Comments
That is true. Some requirements or suggested approach in the protocol do not scale out of the specification, and you have to take into account a full solution design, from the client behaviour itself to the cluster architecture and code optimization. Regards, Nawshad
Posted by Tanim on 16 Jan 2012 at 21:10huge system, with a lot of creation and destruction of workers, supervisors came up with a performance penalty you can not afford. So, you can temporarily disable the supervisor. In this case, the OTP approach may limit your performance and become a bottleneck.Golf Auction
Posted by Dang Bui on 26 Jan 2012 at 18:38There have been many great players in the history of football, but a few stand out even among the greats. On this page we pay tribute to players Cristiano Ronaldo
Posted by topplayer on 27 Jan 2012 at 07:26We was very happy to see this great site I truly desire to endorse the following to most people does nono work since there’s no doubt around it’s material.
Posted by Sierra on 27 Jan 2012 at 14:02This includes closing the knife before passing it to someone else. Scouts should cut away from themselves and never with the blade toward their own body. It is also unsafe to use the knife point to pry at an object, as it could break off and cause injury. Thanks a lot.
Regards,
Desert Ridge Real Estate AZ
In psychology, frustration is a common emotional response to opposition. Related to anger and disappointment, it arises from the perceived resistance to the fulfillment of individual will. The greater the obstruction, and the greater the will, the more the frustration is likely to be. Thanks.
Regards,
college paper writing service
Related to anger and disappointment, it arises from the perceived resistance to the fulfillment of individual will. The greater the obstruction, and the greater the will, the more the frustration is likely to be plummer vinson
Posted by plummer vinson on 08 Feb 2012 at 07:56Do you own a business? Well, for it to reach maximum potential you should know how to promote it.ooglaseren
Posted by leonardod on 08 Feb 2012 at 09:13Very informative article. Pretty sure people would love to go to that place for shopping. Specially to those who are semi naughty or semi conservative people.simple smile
Posted by simple smile on 10 Feb 2012 at 17:29
Add comment
Erlang on Twitter
» diogobaeder (diogobaeder): @fmorgenstern Sugestões de experimentos: Go (language), Python, Erlang, Lisp, JavaScript+NodeJS
» rerongs (laehyoung, kim): RT @iamkimtree: 트위터가 제공하는 라이브러리들: ActionScript/Flash, C++, Clojure, ColdFusion, Erlang, Java, JavaScript, .Net, Obj-c/Cocoa, Perl, PHP, Python, Ruby, Scala
» voluntas (V): 自分の知る限り XMPP 関連やってる会社はほぼ ejabberd で、確実に求人に ejabberd ガチで使える Erlang 使いを募集している。ということは ...
» petrohi (Peter Hizalev): RT @jedisct1: #erlang in production: “I wish I’d known that when I started” http://t.co/WwC8GAoW
» Ghezhaa (Reigheza_Tappei_48): Nih ajak @BennyMahayana ama @HaqGhif ..lagi krumah erlang tuh RT @veemaw13: @Ghezhaa @wisnuwardana__ bwakakakakakakak,, mau ya zaa??
» iamkimtree (Namwoo Kim): 트위터가 제공하는 라이브러리들: ActionScript/Flash, C++, Clojure, ColdFusion, Erlang, Java, JavaScript, .Net, Obj-c/Cocoa, Perl, PHP, Python, Ruby, Scala
» jedisct1 (Frank Denis): #erlang in production: “I wish I’d known that when I started” http://t.co/WwC8GAoW
» juanjhs (Juan Herrera): ¿Cómo puedo imprimir un número en erlang? Osea, el caracter de escape en io:fwrite(”“, Num),
» xnotn (メメント・ぞんもリ): xnotnにおすすめの関数型プログラミング言語は『Erlang』です。ゆっくりコーディングしていってね! #functionallang http://t.co/tzoQXben
» hama_du (hama_du): hama_duにおすすめの関数型プログラミング言語は『Erlang』です。ゆっくりコーディングしていってね! #functionallang http://t.co/CcwLQlcd
Statistics
Number of aggregated posts: 10462
Number of comments: 1502
Most recent article: February 20, 2012
Latest comments
» Jisan on OpaDo: Personal ToDo Lists: I actually don’t like to use to do list. I am not as much busy to forget my regular schedule.…
» Torres on OpaDo: Personal ToDo Lists: I use Opa Do to keep my to do list updated. Very helpful. I even write about What To Do When You’re Bored in it.
» Mike on Erlang Queue and Merle.: Still couldn’t figure out how this is functioning and had to read the whole manual to get at least some idea vocabulary answers