I’m going to develop an app on Android and iOS. It will allow users to set up group ‘chat rooms’ and talk on chat rooms set up by other users. The service needs to be highly scalable, such that it could accommodate a massive increase in users overnight (we can only dream).
Previously I've used mainly Java and Python, but the most appropriate languages for this task should be used. I don’t mind learning a lot of new skills.
The chat protocol should be flexible: it should allow for determining who can view/post on ‘chat rooms’ based on factors determined by the first poster/creator of the particular ‘chat room’. It should also allow for users to simply install the app and begin using the service, after only providing a simple nickname (which could be changed later).
Chat protocol plans
Having looked around I think the XMPP protocol is the best candidate. In particular the Multi-user chat extension looks like what I’ll need. Would this be most suited to my requirements, or do you know another potential solution?
Update: I've since researched the Protocol for SYnchronous Conferencing and it seems to fit perfectly with my needs. However I am unsure how well documented it is or how I would actually implement it.
I have been deciding between Amazon Web Services, Google App Engine and Windows Azure. I’m coming to the conclusion that Azure will be best, as it is easier to manage than AWS (ease of scalability will be a key factor in the design), I think it may be less restricted than GAE, plus Azure will soon have toolkits to allow easy interfacing with both Android and iOS phones.
Update: Looking into it further it seems that AWS would be cheaper, and that they do have provisions, such as Elastic Load Balancing and Auto Scaling, that makes the extra work needed to maintain scalability fairly negligible.
Is this the decision you would have made, or would you recommend/look into other cloud services?
Any components should be well documented, proven reliable and preferably high-level where possible. For example I would prefer to use a plugin to implement the chat protocol rather than write it myself - thus leaving it to more experienced people.
Thanks for reading, and any advice you have about any aspect would be greatly appreciated :-)