20

モバイル アプリ用のバックエンド サーバーが必要です。データベース全体をダウンロードする必要がないように、サーバー側のロジックを記述できる必要があります。モバイルアプリに JavaScript + HTML5 を使用しています。

Amazon EC2 または Google App Engine はそれを行うことができますか? 他のオプションはありますか?

4

8 に答える 8

33

完全な開示: 私は Google の AppEngine で働いていますが、公平を期すよう努めています。 また、(いつものように)会社の意見ではなく、私自身の意見を述べていることにも注意してください。

理論的には、あらゆる種類のバックエンド サービス プロバイダーを実際に使用する必要がある理由はありません。サーバーは、静的 IP アドレスとドメイン名を任意の場所に接続できます。実際には、このすべてを自分で行うという面倒なことに対処したいと思う人は誰もいません。

一方で、答えなければならないもう 1 つの質問があります。煩わしさの解消にかかる費用はいくらですか? 経験から、コストは通常​​、コントロールの欠如にあることがわかりました。煩わしさを最小限に抑えるには、人々が選択を迫られるのを防がなければなりません。選択肢が少ないということは、自分でコントロールできなくなるということです。

したがって、答えるべき質問は次のとおりです。どの程度の制御が必要で、どの程度の煩わしさに対処できますか?

高レベルの制御が必要で、大量の面倒に対処する意思がある場合は、おそらく「静的 IP を使用するボックス」オプションが必要です。

AWS は、boxen をセットアップする手間をいくらか減らしますが、ソフトウェアを実行するハードウェアに対する制御を減らします。非常に特殊なハードウェア要件がない限り、これはほぼ確実に受け入れられます。

Google App Engine を使用すると、ソフトウェアを構成する手間が省けますが、ソフトウェアを実行するソフトウェア スタックに対する制御が軽減されます。特別なソフトウェア要件はありますか? たとえば、Linux の特定のバージョンで実行する必要があるかどうかなど。memcache/データベースの組み合わせだけでなく、たとえば Redis を使用するために特別な要件が必要ですか? そうでない場合、これはおそらくあなたにも受け入れられます。

Backend as a Service プロバイダーのほとんどは、バックエンドを作成する手間を完全に取り除きますが、バックエンドに対する制御を取り除くという代償を払います。サポートされている認証方法は十分ですか? バックエンドでは、必要に応じて正確にデータにアクセスできますか? もしそうなら、これはおそらくあなたに受け入れられます。

さて、ここで私の公平性は終わります。個人的には、App Engine が最適な位置にあると感じています。アプリケーションのすべての詳細を管理しなくても、十分な制御が可能です。さらに制御が必要な場合は、AWS を検討することをお勧めします。バックエンドを自動的に作成し、より少ない制御で処理できるようにしたい場合は、BaaS を検討することをお勧めします。

于 2012-04-13T19:26:43.200 に答える
11

イーサン、

StackMob には、試用できる無料のパッケージがあります。JS SDK を使用して HTML5 アプリを作成し、StackMob サーバーに保存することができます。一方、カスタム コード スニペット (java/scala/clojure) を StackMob にアップロードすることで、バックエンド サーバー側ロジックを記述できます。このコードが自動的に REST API になるように設計されているため、どこからでもヒットしてロジック サーバー側を実行し、代わりに JSON を取得できます。StackMob で HTML5 を無料でホストし、独自のドメインを指定することもできます。

エリック - StackMob エンジニア

于 2012-05-08T23:38:34.543 に答える
7

Daanの答えは、明示的に指定された2つのプロバイダー(+1)に関して正しいです。

手間を省いたり、途中でガイダンスを取得したりする場合は、モバイルアプリのバックエンドセグメントを特に対象とする専用のPlatform as a Service(PaaS)プロバイダーの1つを調べることをお勧めします。その間におそらくさらに12がありますが、私の頭のてっぺんから、これら3つを今思い出します(すべて商用ですが、通常は、開発目的でさえ、開始および/または永遠に開始するためのある種の無料利用枠です)-いいえ特定の順序:

このアプローチで達成できる主な利点は、インフラストラクチャ自体ではなくプラットフォームを扱うことです。これにより、専用のシステム管理スキルを必要とする多くの(すべてではないにしても)トピックが抽象化されます(通常、チームでその知識を持っていても問題はありません)。とにかく、 DevOpsを参照してください)。

注意すべき主な欠点は、最終的にベンダーロックインを回避することです。つまり、ニーズによっては、アプリのバックエンドを別のプロバイダーに移行できるようにしたい場合があります。これは、可能であれば、現在は必ずしも単純ではありません。一方、たとえば、迅速に開始したり、プロトタイプを開発したりする場合は、現時点ではこれは問題にならない可能性があります。

これらのほとんどは、AWSJoyentなどのInfrastructure as a Service(IaaS)プロバイダーをバックエンドとして使用します。

幸運を!

于 2012-04-12T07:55:06.737 に答える
5

Steffanの答えはコアポイントに当てはまり、インフラストラクチャ/ DevOps側を処理するだけでなく、サービスとしてのバックエンド(BaaS)プラットフォームを使用することにはいくつかの追加の利点があります。(完全な開示:私はサービスとしてのバックエンドプロバイダーであるKinveyのエンジニアです)。

  • これらのサービスの多くは、データに直接アクセスするためのRESTfulAPIを提供します。時間をかけて自分でロールする(そしてもう一度車輪の再発明をする)のではなく、通常、自分のデータAPIを焼き付けて、すぐに使用できるようにします。

  • BaaSプロバイダーは通常、APIへの接続を簡素化するためのコードライブラリを提供します。

  • 多くの場合、それは単なるアプリケーションデータ以上のものです。たとえば、Kinveyでは、大きなファイル(blob)ストレージも提供しています。画像や動画などがある場合は、設定なしで保存できます。

  • 一部のプロバイダーは、APIの使用状況に関する分析も提供しています。これは、再発明する必要のないもう1つのホイールです。

  • 他のプロバイダーとのパートナーシップ:たとえば、KinveyはUrbanAirshipを介してプッシュ通知を提供します

全体として、BaaSを調べて、ニーズに合うかどうかを確認することはおそらく理にかなっています。

于 2012-04-12T15:25:21.077 に答える
2

アマゾンウェブサービス(AWS)とGoogle App Engine(GAE)はどちらも、最初は無料で使用できます。AWSは、デフォルトでAWS無料利用枠とGAEを介して使用できます。バックエンドサービスが何であれ、最初はクラウドプロバイダーのようにできるだけ軽くしてください。計算が大きくなるほど、コストが高くなります(または、無料の使用制限をすばやく超えることができます)。RackSpaceクラウド(RS)も検討します。ここでRSはサービスをAWSと比較します。

1つの重要な違い。AWSとRSでは、インスタンス全体を「所有」(支払い)して制御するため、インスタンスを制御できます。一方、GAEはクラウドアプリケーションプラットフォームであるため、Herokuの場合と同様に、このようなアプリケーションプラットフォームで動作するようにコードを作成する必要があります。クラウドアプリケーションプラットフォームには、いくつかの長所と短所があります。

たとえば、GAEの利点として、ほとんどのDevOpsを無料で入手できます。たとえば、GAEでアプリケーションを更新するのは非常に簡単ですが、AWSでは独自のデプロイスクリプトを作成する必要があります。一方(私が遭遇した問題として)、GAEでは、完全な制御がないため、同じインスタンスに独自のDBサーバーを置くことはできません。GoogleCloudSQLまたはGAEの高レプリケーションデータストアなどの独自のソリューションを選択する必要があります。

于 2012-04-12T07:59:29.577 に答える
2

完全にオープンソースのソリューションバックエンドをお探しの場合は、Amazon EC2またはDeployd.comサービス、あるいはその他のnode.jsプロバイダーにデプロイすることをお勧めします。動作するネイティブiOSクライアントライブラリとしてDeployedKitまたはRestKitもあります。

于 2013-01-05T22:11:37.487 に答える
1

EC2でセットアップできるAdobeメディアサーバーを参照している場合を除いて、AdobeEC2のようなものはありません。しかし、私はあなたが単にアマゾンウェブサービスEC2クラウドコンピューティングサービスを参照していると仮定しています。その場合:はい、EC2(およびGoogle App Engine)でモバイルアプリのバックエンドサーバーを実行できます。あなたがしなければならないのは、モバイルアプリからのリクエストを受け入れ、データベースにクエリを実行し、適用するために必要なロジックを適用して、データをモバイルアプリに送り返すWebサービスを作成することだけです。しかし、最初にWebサービスとクラウドコンピューティングについて調べたいと思うかもしれません。さもないと、これはかなり骨の折れる作業になります:)

ただし、あまり多くのユーザーを期待していない場合は、PHPスクリプトなどをウェブホスティングプロバイダーとの「従来の」共有サーバーに配置するだけで、アプリ専用のEC2インスタンスを実行するよりもはるかに価値があります。

于 2012-04-12T06:53:54.500 に答える
1

Steffen と Dave が言ったように、Backend as a Service プロバイダーの 1 つがあなたの路地裏にあるかもしれません。これらのプラットフォームのすべてではないにしても、ほとんどがかなり堅牢なクエリ システムを備えているため、DB からの無関係な情報をふるいにかけることについて心配する必要はありません。Parse は、DB から x 個のトップ スコアのみを取得することについて言及したのとまったく同じユース ケースを具体的に説明していると思います。

サーバー側のコードが絶対に必要な場合は、StackMob でカスタム コードのホスティングが可能です。Kinvey は同じことを行うためにベータ版になっていると思います。StackMob は、サーバー コード用に Java と Clojure のみをサポートしていると思います。

柔軟性と使いやすさの間には常にトレードオフがありますが、データをどの程度制御する必要があるかに応じて、これらのサービスはアプリの機能を実際に低下させることなく、多くの時間を節約できます。

于 2012-04-25T02:20:23.520 に答える