5

My company uses OpenFire for server-side and smack for client-side in its XMPP Android application.

AWS seems like a good and scalable service for what we need. We use it for testing our app, but I'm afraid that the server will crash with 20k-50k users.

I have 2 questions:

  1. Is AWS good enough for an XMPP (OpenFire) server? What are the pros and cons?
  2. How do I build such an application that can handle 20k online users at least, and lets say 2k opened chat rooms?
  3. Is there any specific tutorial for this kind of stuff?

Money is not a problem in terms of server costs. Time is what matter for us right now.

1
  • Does OpenFire support running your XMPP service across multiple servers? Because if it does I would think that AWS would be great for that. You could bring up new servers and spread the load as you add more users.
    – thelsdj
    Jan 31, 2011 at 9:13

1 Answer 1

5

AWS will work for what you intend without any problem, things to be aware though of an EC2 implementation

  • You'll lose CPU cycles when the underlying node is under high load, be ready for your machines to sometimes not deliver enough CPU juice
  • Disk I/O will be a bit slower than a regular machine

Apart from that Openfire does have a clustering solution, which is commercial, and as far as I know the company behind it died (and they haven't open sourced it, gah), I've been trying to contact them to get the clustering solution myself, to no avail.

So if you choose Openfire you'll be stuck with one server having to carry all the workload, which sounds a bit stressing with the numbers you're talking about, if you want to start with Openfire it looks like a good easy way to get rolling but when you need to be aware of your options when you start to grow ;)

For tutorials have a look at the Openfire howto at http://ubuntuforums.org/showthread.php?t=525670, it's not a bad one :)

6
  • I need the ability to grow. Do you recommend another XMPP server-side application? Also, what about this connection module? igniterealtime.org/projects/openfire/connection_manager.jsp
    – shaimagz
    Jan 31, 2011 at 9:31
  • Any XMPP server should do the task, although clustering is a bit of a daunting task. That connection module will connect your XMPP server to other networks, maybe you can end up using this to connect multiple XMPP servers between them, but they'll see the users as being on remote servers, try it out though.
    – lynxman
    Jan 31, 2011 at 9:33
  • ejabberd scales a bit more linearly. Jan 31, 2011 at 9:39
  • I just found this thread: community.igniterealtime.org/thread/32723 . They say that we should use: docs.safehaus.org/display/PENROSE/Home . After reading about this it sounds exactly like what AWS does. am I wrong?
    – shaimagz
    Jan 31, 2011 at 9:43
  • Yeah, that's the main issue, if you have separate Openfire servers users will see one each other form different domains, as Tom O'Connor says ejabberd will be a bit more linear to grow but also the learning curve is steeper than Openfire. Try starting your project with Openfire so you can test your code but keep in mind that you'll need to look at other XMPP servers as soon as you start growing.
    – lynxman
    Jan 31, 2011 at 9:46

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .