Servizio cloud e consulenza sul protocollo IM, per un back-end per raggruppare l'app mobile di chat

8

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: -)

    
posta Jon Cox 19.06.2011 - 19:41
fonte

2 risposte

2

Protocollo

Sì, sembrerà una vera e propria esclusione, ma dipende solo da te. Onestamente, quello che hai descritto sembra molto simile a IRC, ma XMPP è abbastanza estensibile e ampiamente utilizzato, quindi è probabilmente il sistema IRC più semplice da utilizzare e da cui ottenere supporto. Sarai in grado di trovare molti esempi per entrambe le piattaforme e probabilmente anche le librerie già preparate, se vuoi andare in quella direzione. Non ho intenzione di andare a raccomandare qualsiasi, ma una ricerca veloce dovrebbe essere uno strumento molto utile qui. Non c'è una risposta giusta, ma XMPP non è certamente una cattiva scelta.

Servizio cloud

Sia Azure che AWS sono ottimi servizi. Molte di queste applicazioni di alto profilo o importanti vengono eseguite su ognuna di esse. Uno dei motivi per cui tendo a favorire Azure su AWS, tuttavia, è che Microsoft cerca davvero di renderlo facile per te. Se non lo hai ancora, vorrei esaminare Bizspark , che, se ti viene approvato, ti darà, tra l'altro cose, una piccola istanza gratuita di Azure. Per essere onesti, Amazon fa lo stesso tipo di cose , ma sembrano darti un po 'meno, e solo per un anno (Bizspark è per 3 anni). D'altra parte, Bizspark richiede effettivamente che tu venga approvato, mentre Amazon ti dà davvero molto facilmente.

Tutto sommato, o è davvero un buon servizio con cui andare, e sia Microsoft che Amazon tendono ad essere molto impegnati ad aiutare gli sviluppatori a fare le cose, quindi non si può sbagliare in entrambi i casi. Il modo migliore per decidere è guardare le funzionalità che offrono rispetto a ciò che ti serve e il prezzo per i tuoi livelli minimi e ideali. Ad esempio, se si desidera supportare Windows Phone, Azure potrebbe essere un'opzione migliore, perché funzionano bene insieme, ma se si desidera sfruttare i servizi di evasione e spedire magliette o tazze da caffè o qualcosa di simile in relazione, Amazon potrebbe essere il scelta migliore (Nota: non leggere in nessuno di questi elementi: ho scelto di proposito due scenari che non hai menzionato solo per dare un esempio di alcune delle caratteristiche uniche dei servizi.)

Per quanto riguarda il bilanciamento del carico elastico e il ridimensionamento automatico, questo è solo il marchio AWS sui server cloud in generale. Tutti i servizi cloud decenti renderanno tecnologicamente trascurabile il ridimensionamento del sistema, almeno dalla loro parte (se si dispone di un codice errato che non si adatta bene, non si può davvero biasimarlo su di essi ...). Quindi sì, quelli sono cose buone, ma tutti li hanno, quindi non dovrebbero essere un decisore.

    
risposta data 22.06.2011 - 18:48
fonte
0

Non so nulla sui protocolli di chat, quindi salterò sul cloud bit.

Non mi piace l'idea di ospitare un'intera presenza nel cloud.

Perché non iniziare con l'installazione di 2 server virtuali piccoli in modalità di failover? Ci sono fornitori che offrono servizi sufficienti per bilanciare 2 piccole istanze virtuali geograficamente per $ 40 al mese.

Man mano che cresci, aumenta / diminuisci la dimensione / quantità dell'istanza virtuale come richiesto mentre usi il cloud per lo scoppio. VPS è più economico delle istanze orarie utilizzate a tempo pieno.

Mi sembra che il tuo sistema possa essere partizionato facilmente in base alle chat room. Diverse risorse ospitano chat room diverse e si spostano in base al numero di utenti simultanei per avvicinarsi alla distribuzione ottimale.

Questo lascia due sfide tecniche: 1: come si esegue la migrazione di una stanza a un nuovo server a metà del flusso? 2: Come gestisci una stanza che richiede più risorse di una singola unità di calcolo / unità vps?

    
risposta data 23.06.2011 - 14:59
fonte

Leggi altre domande sui tag