Panoramica
Svilupperò un'applicazione su Android e iOS. Permetterà agli utenti di creare gruppi di chat room e parlare nelle chat room impostate da altri utenti. Il servizio deve essere altamente scalabile, in modo da poter ospitare un massiccio aumento degli utenti durante la notte (possiamo solo sognare).
Informazioni di background
Precedentemente ho usato principalmente Java e Python, ma dovrebbero essere usate le lingue più appropriate per questa attività. Non mi dispiace imparare molte nuove abilità.
Requisiti della chat
Il protocollo di chat dovrebbe essere flessibile: dovrebbe consentire di determinare chi può visualizzare / pubblicare su "chat room" in base a fattori determinati dal primo poster / creatore della particolare "chat room". Dovrebbe inoltre consentire agli utenti di installare semplicemente l'app e iniziare a utilizzare il servizio, dopo aver fornito solo un semplice nickname (che potrebbe essere modificato in seguito).
Piani del protocollo di chat
Dopo essermi guardato attorno, il protocollo XMPP è il miglior candidato. In particolare, l'estensione Chat multiutente ha l'aspetto di cui ho bisogno. Questo sarebbe più adatto alle mie esigenze o conosci un'altra potenziale soluzione?
Aggiornamento: Da allora ho ricercato il Protocollo per SYNchronous Conferencing e sembra adattarsi perfettamente con i miei bisogni. Tuttavia non sono sicuro di quanto sia ben documentato o di come lo realizzerei.
Servizio cloud
Ho deciso tra Amazon Web Services, Google App Engine e Windows Azure. Sono giunto alla conclusione che Azure sarà il migliore, dal momento che è più facile da gestire di AWS (la facilità di scalabilità sarà un fattore chiave nella progettazione), penso che potrebbe essere meno limitato di GAE, più Azure presto avrà toolkit per consentire un facile interfacciamento con entrambi i telefoni Android e iOS.
Aggiornamento: Guardando oltre, sembra che AWS sarebbe più economico, e che hanno disposizioni, come Elastic Load Balancing e Auto Scaling , che rende il lavoro extra necessario per mantenere la scalabilità abbastanza trascurabile.
Questa è la decisione che avresti preso o consiglieresti / guarderei in altri servizi cloud?
Requisiti generali
Qualsiasi componente dovrebbe essere ben documentato, dimostrato affidabile e preferibilmente di alto livello ove possibile. Ad esempio, preferirei usare un plugin per implementare il protocollo di chat piuttosto che scriverlo da solo, lasciandolo quindi a persone più esperte.
Grazie
Grazie per la lettura, e ogni consiglio che hai su qualsiasi aspetto sarebbe molto apprezzato: -)