Google App Engineの使用に関するフィードバックはありますか?[閉まっている]


125

非常に小さく、迅速で汚れたサイドプロジェクトを行うことを検討しています。Google App EngineがDjangoが組み込まれたPythonで実行されているという事実が好きです-そのプラットフォームを試す口実を与えてくれます...しかし私の質問はこれです:

おもちゃの問題以外にApp Engineを利用した人はいますか?良いサンプルアプリが世の中にあるので、これは本当の取引には十分だと思いますが、フィードバックを求めていました。

他の成功/失敗のメモは素晴らしいでしょう。


8
コミュニティWikiである必要があります
SilentGhost '28年

回答:


63

私は小さな地震時計アプリケーションhttp://quakewatch.appspot.com/の App Engineを試しました

私の目的はApp Engineの機能を確認することでした。そのため、主なポイントは次のとおりです。

  1. Djangoにはデフォルトで付属していません。PythonicにはDjangoのようなURLディスパッチャーがあり、Djangoテンプレートを使用する独自のWebフレームワークがあります。あなたはそれが使いやすいでしょう
  2. サーバーで実行時間の長いプロセスを実行することはできません。何をすべきかは、リクエストへの返信であり、それが迅速でなければなりません。そうでない場合、appengineはそれを強制終了します自分のサーバー上
  3. 私のquakewatchアプリにはサブスクリプション機能があります。つまり、最新の地震が発生したときにメールで送信する必要がありましたが、アプリエンジンでバックグラウンドプロセスを実行して新しい地震ソリューションを監視することはできません。あなたのページの1つに接続し、それはサブスクリプションメールを実行しますが、ここでも、ここで多くの時間を費やしたり、タスクをいくつかに分割したりしないように注意する必要があります
  4. Djangoのようなモデリング機能を提供しますが、バックエンドは完全に異なりますが、新しいプロジェクトでは重要ではありません。

しかし、全体的には、バックグラウンド処理をあまり必要としないアプリの作成には優れていると思います。

編集:タスクキューをバッチ処理またはスケジュールされたタスクの実行に使用できるようになりました

編集:1年間GAEで実際のアプリケーションを作成または作成した後、今の私の意見は、何百万ものユーザーにスケーリングする必要があるアプリケーションを作成しない限り、GAEを使用しないことです。GAEでの簡単なタスクの維持と実行は、分散型の性質による頭痛の種です。期限超過エラーを回避したり、エンティティをカウントしたり、複雑なクエリを実行したりするには、複雑なコードが必要になるため、小さな複雑なアプリケーションはLAMPに固執する必要があります。

編集:モデルは、将来必要となるすべてのトランザクションを考慮して特別に設計する必要があります。同じエンティティグループ内のエンティティのみをトランザクションで使用でき、2つの異なるグループを更新するプロセスが悪夢になるため、user1からuser2に送金する場合などです。同じエンティティグループに属していない限り、トランザクションでのトランザクションは不可能ですが、同じエンティティグループにすることは、頻繁な更新の目的には最適でない場合があります。... http://blog.notdot.net/2009/9/Distributed-Transactions-をお読みくださいon-App-Engine


6
GAEでバッチプロセスを実行できるようになりました
Anurag Uniyal 2009年

2
App-Engineドキュメントで新しいTask Queue Python APIも確認してください。
Jason Rikard、

11
多くこの情報のは時代遅れです- 0.96は今、2009年7月17日のようGAEに組み込まれています
INE

3
Djanjo 1.0.xもGAEに含まれています。必要なDjangoのリビジョンを選択できます。
ローラン・

5
もう1つの更新であるDjango 1.1が、GAEと過去のバージョンで利用可能になりました。
SingleNegationElimination 2009

36

いくつかの高トラフィックアプリケーションをホストするためにGAEを使用しています。およそ50-100リクエスト/秒程度です。それは素晴らしいです、私はそれを十分にお勧めすることはできません。

以前のWeb開発の経験はRuby(Rails / Merb)でした。Pythonの学習は簡単でした。DjangoやPylonsなどのフレームワークをいじるのではなく、GAEの例から始めて、提供されている基本的なWebアプリケーションライブラリから必要なものを構築しました。

SQLの柔軟性に慣れている場合は、データストアに慣れることができます。外傷的すぎることはありません!最大の調整は、JOINから離れることです。正規化が重要であるという考えを捨てる必要があります。

ベン


23

Google App Engineを使用するために私が遭遇した説得力のある理由の1つは、ドメインのGoogle Appsとの統合です。基本的に、ドメインの(制御された)ログインに制限されるカスタムの管理されたWebアプリケーションを作成できます。

このコードに関する私の経験のほとんどは、単純な時間/タスク追跡アプリケーションを構築することでした。テンプレートエンジンはシンプルでありながら、マルチページアプリケーションを非常に親しみやすくしました。ログイン/ユーザー認識APIも同様に役立ちます。あまり問題なくパブリックページ/プライベートページのパラダイムを作成できました。(ユーザーはログインしてプライベートページを表示します。匿名ユーザーにはパブリックページしか表示されませんでした。)

「実際の仕事」のために引っ張られたとき、私はちょうどプロジェクトのデータストア部分に入っていました。

非常に短い時間で多くのことを達成できました(まだ完了していません)。私は以前にPythonを使用したことがなかったので、これは特に快適でした(両方とも私にとって新しい言語であったため、また、新しい言語にもかかわらず開発がまだ速いためです)。私は自分の仕事を成し遂げることができないだろうと私を信じるように導いた非常に少しに遭遇しました。代わりに、私は機能性と機能についてかなり前向きな印象を持っています。

それが私の経験です。たぶん、それは未完成のおもちゃプロジェクト以上のものではないかもしれませんが、プラットフォームの十分な情報を得た試用を表しており、それがお役に立てば幸いです。


私の状況とほとんど同じです-「実際の仕事」は別として、それでも私がしなければならず、最後に機能する必要がある何か。
agartzke 2008

こっちも一緒。また、大きな利点は、開発環境のインストールが簡単であることです(1分以内にコーディングします)。デプロイメントについても同様です。
Jilles

12

「Djangoを実行するApp Engine」のアイデアは少し誤解を招きます。App EngineはDjangoモデルレイヤー全体を置き換えるので、データのモデリングと考え方の異なる方法を必要とするApp Engineのデータストアに慣れるための時間を費やす準備をしてください。


良い点-デフォルトではDjangoのテンプレートを使用しているようですが、残りのテンプレートは必ずしもそうではありません。
agartzke 2008

7

GAEを使用してhttp://www.muspy.comをビルドしました

それはおもちゃのプロジェクトより少し多いですが、過度に複雑でもありません。私はまだGoogleが対処するいくつかの問題に依存していますが、全体的にWebサイトの開発は楽しい経験でした。

ホスティングの問題、サーバー管理などに対処したくない場合は、ぜひお勧めします。特にあなたがすでにPythonとDjangoを知っているなら。


7

現時点では、App Engineは小規模なプロジェクトにはかなり優れていると思います。ホスティングについて心配する必要がないことについては多くのことが言われています。APIはまた、スケーラブルなアプリを構築する方向にあなたをプッシュします。これは良い習慣です。

  • app-engine-patchはDjangoとApp Engineの間の優れたレイヤーであり、認証アプリなどの使用を可能にします。
  • Googleは2008年末までにSLAと価格モデルを約束しました。
  • リクエストは10秒で完了する必要があり、Webサービスへのサブリクエストは5秒で完了する必要があります。これにより、高速で軽量なアプリケーションを設計し、深刻な処理を他のプラットフォーム(ホストされたサービスやEC2インスタンスなど)にオフロードする必要があります。
  • より多くの言語がすぐに来ています!グーグルはそれを言ってはいけない:-)。次はJavaです。

2009年2月現在、上記の制限の多くが緩和されています。
husayt 2009

3
誰かがこの回答を編集できる場合は、Javaが実際に利用可能な次の言語であることを反映しておくとよいでしょう。
JasonSmith、2009年

1
@jhsあなたのコメントはそれをうまくやっています!
午後

また、Go言語もサポートされています。
davewasthere

6

この質問は完全に回答されています。どっちがいい。しかし、おそらく1つ言及する価値があります。Googleアプリエンジンには、Eclipse IDEのプラグインがあり、これを使用するのは楽しいです。

あなたがすでにEclipseで開発をしているなら、あなたはそれについてとても幸せになるでしょう。

Google App EngineのWebサイトにデプロイするには、飛行機のロゴの付いた小さなボタンを1つクリックするだけです。


4

sql gameを見てください。それは非常に安定していて、実際にある時点でトラフィック制限を押して、Googleによって抑制されていました。App Engineについては、他の誰かが完全に制御しているサーバーでアプリをホストする以外に、良いニュースはありません。


SQLゲームはGoogle App Engineからプライベートサーバーに移動しました。
systempuntoout 2010年

4

私はGAEを使用して、いくつかのパラメーターを受け入れ、電子メールを送信する単純なアプリケーションを作成しました。それは非常にシンプルで高速でした。また、GAEデータストアとmemcacheサービス(http://dbaspects.blogspot.com/2010/01/memcache-vs-datastore-on-google-app.html)でいくつかのパフォーマンスベンチマークを作成しました。それほど速くはありません。私の意見は、GAEは特定の方法論を実施する深刻なプラットフォームであるということです。私はそれが本当にスケーラブルなプラットフォームに進化すると思います。そこでは悪い習慣は単に許されません。


4

フラッシュゲームサイトのBearded Gamesで GAEを使用しました。GAEは優れたプラットフォームです。PHPの昔よりもずっと簡単なDjangoテンプレートを使用しました。優れた管理パネルが付属しており、本当に優れたログを提供します。データストアはMySQLのようなデータベースとは異なりますが、操作がはるかに簡単です。サイトの構築は簡単でわかりやすく、サイトに関する有益なアドバイスがたくさんあります。


3

私はGAEとDjangoを使用してFacebookアプリケーションを作成しました。http://code.google.com/p/app-engine-patchは、Django 1.1をサポートしているため、出発点として使用しました。私は、manage.pyコマンドが機能しないと想定していたので、それらを使用しようとはしませんでしたが、詳しく調べませんでした。アプリケーションには3つのモデルがあり、pyfacebookも使用されていましたが、それが複雑さの程度でした。http://brianyamabe.comでブログを書き始めた、より複雑なアプリケーションを作成しているところです。


サーバーの実行と単体テストの実行にmanage.pyを使い始めました。サーバーの実行は問題なく機能しますが、私のアプリケーションはFacebookアプリとして実行されるため、それほど役に立ちません(Facebookが参照するホストされたサーバーが必要です)。単体テストも機能し、フィクスチャでも機能しました。しかし、他のモデルを参照するフィクスチャを機能させることができませんでした。それが私のフィクスチャの問題なのか、app-engine-patchの問題なのかはまだわかりません。
byamabe 2009
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.