« Change the algorithm, not the dataset | Main | Why SMS GupShup is Bigger than Twitter »


Feed You can follow this conversation by subscribing to the comment feed for this post.


My firefox session-saver got me back at your post. Good to see the number of comments. It seems that Twitter bashing is a really hot topic these days. And to each, his own two words of wisdom!!

I still dont agree with your title though. :-)


Sam: good point! Until unless we read through the comments we dont get the feeling that RoR does support 3-Tier. I feel Anand has mis-leaded the readers

Anand Rajaraman

Prasanth: did you just not read the part of the post where I say clearly that RoR can be used in a 3-tier fashion, and in fact this is how we use it at Kosmix? As I've said many times, this is not a knock on RoR. It's a knock on 2-tier architectures.


Impressed by their achievement.


How about you talk about and invest in something innovative versus competing indian services that are copies.

Anand Rajaraman

Sam: When I invested 3 years ago in Webaroo, the company behind SMS GupShup, Twitter was not even around. These services have developed in parallel. You should also look at the other companies I'm involved with, in the US and in India, and judge for yourself.

Anand Rajaraman

VentureBeat has a follow-up guest post by me, with some more details on SMS GupShup. Also my theory on why SMS GupShup is growing faster than Twitter: Microblogging is a nice-to-have in places with high PC penetration, like the US, but a must-have in places with very low PC penetration, like India:


Chetan Conikee

Great Post .....

Should models like twitter and gupshup adopt a CEP CCL (Continuous Query on Event Stream) system in order to sniff-act-create the next event broadcast?
I met with Mark from Coral8 and was quite impressed in terms of their offering in this space.
Same goes with StreamBase.

This will dissolve the "insert-into-database-and-then-act" paradigm.

Nati Shalom muses on twitter scalabilty:

I would be interested to understand your thoughts on this.....


as AI said i think you are comparing apples to oranges.

ok i will propose an architecture for sms gupshup tell me where i am wrong.

functionality - There are many sms groups. people can post to a group and all the other people who subscribed to that group wil receive the sms.

i will use a mysql database and php and nothing else.

in mysql i have 2 tables. 1 for maintaining the phone nos subscribed to a particular group wit fields id,sms group id, phone no. the 2nd table has the fields id,message,sms group to be sent to.

i write 2 programs in php and use a message queue to pass messages asynchronously between the two programmes.

1 program has following classes -

class number :-
-- add a no :- subscribes a no to an sms group which means 1 database insert into 1st table.
-- delete a no - unsubscribes a no from an sms group which means 1 delete from table one.

class messages :-

-- post message - someone posts a new message to an sms group involves 1 mysql read for checking if that person is authorised to post and 1 write to make an entry into the 2nd table. also 1 more write to the message queue to tell a new message is posted to that particular sms group

thats it for the 1st program.

the other program is a daemon continuously checking the message queue for any messages.

class sendmessages:
--- send sms - needs 1 read from the message queue to get the message and the group id and then 1 more read from the database to get all the numbers subscribed to that group. once it has the message to be sent and the the phone no to send the msg to all it has to do is loop for the sms gateway api call.

thats it you have sms gupshup. with such few database calls i dont think you need more than one machine for database.

waiting to here from you regarding where i went wrong.

ohh in case of twitter. it is more complex because it is a pull mechanism not push. so when a user logs in, twitter should pull messages from all the users. if you want me to explain in more detail i am glad to do so.



oh also,
ignored the timestamp column in all the tables as it has become pretty mandatory in everything.

so add one more program which runs as a cron job once a week which back's up all the old messages and deletes them - 2 database calls.

so your database won't grow past a certain size.

Raja Agrawal

Hi Anand,

Interesting post, but as far as I understand it does not give the right picture. The two products are entirely different. Twitter allows two way communication (in various ways web/IM/phone and the infinite tools), whereas SMSGupShup is only one way communication (that too via only few ways web/phone).

In SMSGupShup, one can cache the subscribers of the top/regular posters and get a very good performance beacause of the "monologue". Whereas for twitter, there is always a "dialogue" going on, which results in lot of processing both off and on database.

Your other points make sense, but comparing the two services is not doing justice to Twitter.

The number of users might be more for SMSGupShup, but I doubt if there are more groups than twitter users. (as no. of groups = no. of persons actually posting content)



OMG, please stop this penis contest. My framework is always better than yours. Just admit it!

David Lloyd

GupShup's starters probably knew they'd get hammered hard and fast from the start. Therefore they brought up a service they knew would cope with such a load.

It's possible that Twitter's growth was a little more unexpected and that scaling their Rails application is more complicated than that used by GupShup.


tell your group member.about my grp for join this grp type JOIN Shaaad sn 567678
>hindi sayari
>one line
>dont miss


The Indian IT sector has grown to such an extent, that almost anything is possible to do from anywhere.I love ROR and I use to run my website.

The comments to this entry are closed.