Übersicht
Ich werde eine App für Android und iOS entwickeln. Benutzer können Gruppen-Chatrooms einrichten und über Chatrooms sprechen, die von anderen Benutzern eingerichtet wurden. Der Service muss hoch skalierbar sein, damit über Nacht eine massive Zunahme der Benutzer möglich ist (wir können nur träumen).
Hintergrundinformationen
Bisher habe ich hauptsächlich Java und Python verwendet, aber die für diese Aufgabe am besten geeigneten Sprachen sollten verwendet werden. Es macht mir nichts aus, viele neue Fähigkeiten zu lernen.
Chat-Anforderungen
Das Chat-Protokoll sollte flexibel sein: Es sollte die Bestimmung ermöglichen, wer in "Chatrooms" anzeigen / posten kann, basierend auf Faktoren, die vom ersten Poster / Ersteller des jeweiligen "Chatrooms" festgelegt wurden. Außerdem sollten Benutzer die App einfach installieren und den Dienst nutzen können, nachdem sie nur einen einfachen Spitznamen angegeben haben (der später geändert werden kann).
Pläne für Chat-Protokolle
Nachdem ich mich umgesehen habe, denke ich, dass das XMPP-Protokoll der beste Kandidat ist. Insbesondere die Multi-User-Chat- Erweiterung sieht so aus, wie ich es brauche. Wäre dies am besten für meine Anforderungen geeignet, oder kennen Sie eine andere mögliche Lösung?
Update: Ich habe seitdem das Protokoll für SYnchronous Conferencing recherchiert und es scheint perfekt zu meinen Anforderungen zu passen. Ich bin mir jedoch nicht sicher, wie gut es dokumentiert ist oder wie ich es tatsächlich implementieren würde.
Cloud-Dienst
Ich habe mich zwischen Amazon Web Services, Google App Engine und Windows Azure entschieden. Ich komme zu dem Schluss, dass Azure am besten geeignet ist, da es einfacher zu verwalten ist als AWS (einfache Skalierbarkeit ist ein Schlüsselfaktor für das Design). Ich denke, es ist möglicherweise weniger eingeschränkt als GAE, und Azure wird es bald haben Toolkits für eine einfache Anbindung an Android- und iOS-Telefone.
Update: Wenn man es weiter untersucht, scheint es, dass AWS billiger wäre und dass es Bestimmungen wie Elastic Load Balancing und Auto Scaling gibt, die den zusätzlichen Aufwand für die Aufrechterhaltung der Skalierbarkeit vernachlässigbar machen.
Ist dies die Entscheidung, die Sie getroffen hätten, oder würden Sie andere Cloud-Dienste empfehlen / prüfen?
Allgemeine Anforderungen
Alle Komponenten sollten gut dokumentiert, als zuverlässig und vorzugsweise nach Möglichkeit auf hohem Niveau nachgewiesen werden. Zum Beispiel würde ich es vorziehen, ein Plugin zu verwenden, um das Chat-Protokoll zu implementieren, anstatt es selbst zu schreiben - und es so erfahreneren Leuten zu überlassen.
Danke
Danke fürs Lesen und jeder Rat, den Sie zu irgendeinem Aspekt haben, wäre sehr dankbar :-)