クラウドサービスとIMプロトコルのアドバイス、グループチャットモバイルアプリへのバックエンド


8

概要
AndroidとiOSでアプリを開発します。これにより、ユーザーはグループ「チャットルーム」をセットアップし、他のユーザーがセットアップしたチャットルームで話すことができます。このサービスは、夜間のユーザーの大幅な増加に対応できるように、非常にスケーラブルである必要があります(私たちは夢しか見ることができません)。


背景情報
以前は主にJavaとPythonを使用していましたが、このタスクに最も適切な言語を使用する必要があります。新しいスキルをたくさん学んでもかまいません。

チャット要件
チャットプロトコルは柔軟である必要があります。特定の「チャットルーム」の最初の投稿者/作成者によって決定された要素に基づいて、「チャットルーム」を表示/投稿できるユーザーを決定できるようにする必要があります。また、単純なニックネーム(後で変更される可能性があります)を指定した後に、ユーザーがアプリをインストールしてサービスの使用を開始できるようにする必要もあります。


チャットプロトコル計画
周りを見回して、XMPPプロトコルが最良の候補だと思います。特に、マルチユーザーチャット拡張機能は、私が必要とするものに似ています。これは私の要件に最も適していますか、それとも別の解決策を知っていますか?

更新:以来、同期会議プロトコルを調査してきましたが、それは私のニーズに完全に適合しているようです。ただし、それがどれほど適切に文書化されているか、または実際にどのように実装するかはわかりません。


クラウドサービス
アマゾンウェブサービス、Google App Engine、Windows Azureの間で決定しました。AWSよりも管理が容易であるため(設計のスケーラビリティの容易さが重要な要素になるため)、Azureが最適であるという結論に達しました。GAEよりも制限が少ないと考えられます。さらに、Azureも間もなく登場しますAndroidとiOSの両方の電話との簡単なインターフェースを可能にするツールキット。

更新:さらに調べると、AWSの方が安価であり、Elastic Load BalancingAuto Scalingなどのプロビジョニングを備えているため、スケーラビリティを維持するために必要な追加の作業はほとんど無視できます。

これはあなたが行った決定ですか、それとも他のクラウドサービスを推奨/検討しますか?


一般的な要件
すべてのコンポーネントは、十分に文書化され、信頼できることが証明され、できれば高レベルであることが望まれます。たとえば、私はチャットプロトコルを実装するために自分で作成するのではなく、プラグインを使用することを好みます-したがって、より経験のある人々に任せます。



読んでいただきありがとうございます。あらゆる面についてのアドバイスをいただければ幸いです:-)


他の側面をさらに調べてみると、どのクラウドプロバイダーを使うべきかまだわからないという結論に達しました。AWSは、Azureよりも安価であるように見えます。綿密に調査すると、自動管理のスケーラビリティのための優れたツールがいくつかあります。
ジョンコックス

あなたが何を探しているのか、私には完全にはわかりません。もっと具体的な質問をしてもらえますか?「これはあなたがしたであろう決定でしたか?」かなり主観的です。プロトコルに関するアドバイス(良い)を求めますが、全体としては良いSEの質問というよりはRFCのように読みます。
グレッグジャクソン

programmers.stackexchangeがソフトウェア開発に関する主観的な質問の場所であるというのが私の印象でした。そのため、私が質問したことには多くの可能な解決策があり、それらに関するさまざまな人々の意見に非常に興味があります:)
Jon Cox

正しいが、FAQによると、「直面する実際の問題に基づいて、実用的で回答可能な質問のみを行う必要があります。おしゃべりで自由回答の質問は、当サイトの有用性を低下させ、その他の質問をトップページから押し出します。」言い換えれば、より具体的であるほど良い。あなたは主観的で具体的でもあるので、直接的な質問はRFCよりも優れています。違いはここにあります。質問を明確にすることをお勧めしますが、SOの場合は閉じられます(ただし、はい、具体的にはSOには主観的すぎます)。
グレッグジャクソン

私を誤解しないでください、それは非常に良い質問ですが、それでもなお良いかもしれません。
グレッグジャクソン

回答:


2

プロトコル

はい、これは警官隊のように聞こえますが、それはあなた次第です。正直なところ、あなたが説明したことはIRCに非常によく似ていますが、XMPPは非常に拡張性があり、広く使用されているため、IRC以外で最も簡単に動作し、サポートを受けることができます。その方向に進みたいのであれば、両方のプラットフォームの多くの例を見つけることができ、おそらくすでに準備されたライブラリーさえ見つけることができます。おすすめはしませんが、クイック検索は非常に便利なツールです。正解は1つではありませんが、XMPPは確かに悪い選択ではありません。

クラウドサービス

AzureとAWSはどちらも非常に優れたサービスです。多くの有名なアプリケーションや重要なアプリケーションがそれぞれで実行されています。しかし、私がAWSよりもAzureを好む傾向がある理由の1つは、Microsoftが本当に簡単に入手できるようにすることです。まだの場合は、Bizsparkを調べてます。承認されれば、とりわけAzureの無料の小さなインスタンスが提供されます。公平を期すために、Amazonは同じ種類のことをしますが、それらはあなたに少し少なく、1年間しか与えないようです(Bizsparkは3年間です)。一方、Bizsparkでは実際に承認を受ける必要がありますが、Amazonはそれを簡単に提供します。

全体として、どちらも本当に良いサービスであり、MicrosoftとAmazonの両方が開発者の作業を支援することに熱心である傾向があるため、どちらの方法でも問題はありません。決定する最良の方法は、それらが提供する機能を必要なものと比較し、最小レベルと理想レベルの価格を検討することです。たとえば、Windows Phoneをサポートしたい場合、Azureが適切に機能するため、Azureの方が適している可能性がありますが、フルフィルメントサービスを利用してTシャツやコーヒーマグなどを発送したい場合、Amazonが最適です。より良い選択(注:これらのどちらにも目を通さないでください。サービスの固有の機能の例を示すためだけに言及しなかった2つのシナリオを意図的に選択しました。)

Elastic Load BalancingとAuto Scalingに関しては、クラウドサーバーが一般的に行っていることをAWSブランド化するだけです。すべてのまともなクラウドサービスは、システムのスケーリングを少なくともその側から技術的に無視できるようにします(適切にスケーリングしない不良コードがある場合、実際にそれを非難することはできません...)。ええ、それは良いことですが、誰もが持っているので、意思決定者であってはなりません。


お返事ありがとうございます。これにより、実際に何が必要になるかについて考えることができ、他の領域についての私の考えが明確になりました。乾杯。
ジョンコックス

IRCも最初に思いついたものです。非常によく文書化されたシンプルなプロトコルであり、多数のユーザーにスケールアップできるように設計されています。
セルセリラ2011年

0

私はチャットプロトコルについて何も知らないので、クラウドビットにスキップします。

プレゼンス全体をクラウドでホストするという考えは好きではありません。

フェイルオーバーモードの2つの小さな仮想サーバーのセットアップから始めませんか?月に40ドルで2つの小さな仮想インスタンスの地理的なバランスをとるのに十分な設備を提供しているプロバイダーがあります。

成長に合わせて、クラウドをバーストに使用しながら、必要に応じて仮想インスタンスのサイズ/量を増やしたり減らしたりします。VPSは、フルタイムで使用される時間単位のインスタンスよりも安価です。

あなたのシステムはチャットルームに基づいて簡単に分割できるように思えます。さまざまなリソースがさまざまなチャットルームをホストしており、それらは同時ユーザー数に基づいて移動し、最適に近い分散に近づきます。

これには2つの技術的な課題があります。1:フローの途中で部屋を新しいサーバーに移行するにはどうすればよいですか。2:単一のコンピューティングユニット/ vpsユニットよりも多くのリソースを必要とする部屋にどのように対処しますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.