web-dev-qa-db-ja.com

Google App EngineでDjango=を使用するのはなぜですか?

Google App Engine(GAE)を調査するとき、Django=を使用することは、GAEのPythonで開発するのに非常に人気があります。 whyを見つけるためにDjangoを使用するコストと利点に関する情報を見つけてください。howでさまざまなソースを見つけることができましたDjango GAEおよびそのためのさまざまな方法で、why Djangoの方が望ましいGoogleが提供するwebappフレームワークを使用します。

明確にするために、GAEでDjangoを使用することが、Django(大半のPython Web開発者、間違いなく)またはDjango(GAEを使用することは移植の練習です)の既存のコード。しかし、私のチームは、すべてで使用するためにGAEを評価しています-新しいプロジェクトと既存の経験は、DjangoではなくTurboGearsを使用しています。

BigTableライブラリがDjangoのORMに置き換わり、セッションと認証が必然的に変更され、Djangoのテンプレート(必要な場合)を使用せずに利用できる場合、なぜDjangoが開発チームにとって有益であるかを判断することは非常に困難でした全体Djangoスタック。

最後に、Django=を使用すると、後でGAEから離れて出国のターゲットとなるプラットフォームが必要な場合に「終了戦略」を提供するという利点があることは明らかです。

why using DjangoはGAEでwebappを使用するよりも優れています。また、Djangoに完全に慣れていないので、詳しく説明するのに非常に感謝します。 GAEで機能する小さな機能や便利さも私にとって価値があります。

87
Travis Bradshaw

ほとんどの場合、実際のWebサイトをユーザーに提供する必要がある場合は、appengineインスタンスでDjangoを使用します。優れたテンプレートエンジン、URLルーティング、すべての要求/応答/エラー処理が組み込まれています。魔法のorm/adminを使用することはできませんが、多くのことが必要です。

APIサービスの場合、 webob の上に非常に単純なものを構築しました。 Djangoが提供するすべてを必要としないため、はるかに軽量です。したがって、状況によっては少し速くなります。

19
Koen Bok

GAEが適切であると確信している場合、Djangoはおそらく適切な選択ではありません。 2つのテクノロジーの長所はあまりうまく調和していません-GAEでDjangoの素晴らしいオームの多くを完全に失い、それを使用する場合、bigtableとGAEの動作に実際には直接適さないコードを記述します。

GAEの利点は、ゼロから簡単に拡張できるコードを作成することを強制することで、優れたスケーラビリティを実現することです。スケーリングが不十分な多くのことを行うことはできません(もちろん、スケーリングが不十分なコードを作成することはできますが、落とし穴を避けることができます)。トレードオフは、異なる環境用に設計されたDjangoのようなものを使用する場合、フレームワークの周りで実際にコーディングすることになります。

何らかの理由でGAEを離れることに気付いた場合、インフラストラクチャに投資することには問題があります。 bigtableのコーディングは、別のアーキテクチャへの移行が困難になることを意味します(ただし、ApacheプロジェクトはHadoopプロジェクトのHBaseコンポーネントを使用してこれを解決するために取り組んでいます)。 GAEから移行するには、まだ多くの作業が必要です。

Google製品であると同時にクールな流行語であることに加えて、GAEを使用する動機は何ですか? Mediatempleの製品のようなものを使用したスケーリングがうまく機能しない可能性が低い理由はありますか? GAEのスケーリング方法がアプリケーションに適していると確信していますか?そのパフォーマンス領域に到達することを期待している場合、コストは専用サーバーと比較してどうですか?従来の負荷分散サーバーのセットアップと比較して、GAEが提供するツールを使用して問題をうまく解決できますか?

これらすべては、GAEが提供する境界線にとんでもないスケーリングが絶対に積極的に必要でない限り、その特定のサービスがフレームワークの選択を構成させないことを個人的にお勧めします。私はDjangoが好きなので、それを使用するべきだと言いますが、GAEでは使用しないでください。

編集(2010年6月):このコメントの更新として、後ほど:GoogleはGAEのsql-like機能を発表しましたが、これは無料ではありませんが、SQLスタイルのコマンドの実行などを簡単に実行できますデータに関するレポートを生成します。

さらに、GAEクエリ言語に今後の変更が加えられ、複雑なクエリをはるかに簡単に行えるようになります。 Google I/O 2010の動画をご覧ください。

さらに、Summer of Code 2010プロジェクトで行われている作業により、no-sqlサポートがDjango coreになり、拡張により、GAEでの作業が大幅に容易になります。

GAEはホスティングプラットフォームとしてより魅力的になっています。

編集(2011年8月):

また、Googleは、価格体系を変更することで、プラットフォームのほとんどのユーザーのコストを大幅に引き上げました。ロックインの問題は改善されています(アプリケーションが十分に大きい場合、Apacheの代替を展開できます)が、ほとんどのアプリケーションでは、実行中のサーバーまたはVPS展開の方が安価です。

ビッグデータの問題を抱えている人はほとんどいません。 「私のスタートアップはいつかスケールするかもしれない」はビッグデータの問題ではありません。今すぐビルドして、標準ツールを使用して外に出してください。

51
Paul McMillan

GAEで多くのプロジェクトを行ってきました。 Djangoの一部、通常のフレームワークの一部。

小さなことについては、通常、シンプルさと迅速さのために通常のフレームワークを使用します。 http://stdicon.comhttp://yaml-online-parser.appspot.com/ 、または http:// text-twist .appspot.com /

大規模なものについては、Django=を使用して、すべてのNiceミドルウェアとプラグインを利用します。 http://metaward.com のように。

基本的に私のリトマステストはこれを書いて2週間以上かかって[〜#〜] real [〜#〜]ソフトウェアプロジェクト?もしそうなら、Django=アドオン用に進みます。

あなたのプロジェクトがBigTableにあまり適していない場合、すぐに移植するという追加の利点があります(私がやったように BigTableは遅いですか、私は愚かですか?

16
Paul Tarjan

この答えはすべて時代遅れだと思います。

これで、Google Cloud SQL

Djangoは人気のあるサードパーティですPythonウェブフレームワーク。Google Cloud SQLと組み合わせると、その機能はすべてApp Engineで実行されているアプリケーションでサポートされています。DjangoでのGoogle Cloud SQLの使用のサポートは、カスタムDjango DjangoのMySQLバックエンドをラップするデータベースバックエンド。

https://cloud.google.com/python/Django/appengine

もう1つの新しいニュースは、PostgreSQLのベータ版サポートがあることです。

11
andilabs

DjangoではなくGAEを使用した経験があります。Django確かに、物事をしっかり把握するためにPythonを習得しなければなりませんでしたが、最終的にはプロジェクトで再び使用することになりました。これは2年前に到達しました1.0だから、私の知識は少し時代遅れです。

プラットフォームの変更を心配しているなら、これは私が思うに、より良い選択でしょう。

3
Woot4Moo

私はまだGoogle App engineの開発を始めたばかりですが、Djangoが提供するインターフェースはデフォルトよりもずっと優れているように見えます。利点は、アプリエンジンでDjangoを実行するために使用しているものによって異なります。 DjangoのGoogle App Engineヘルパーを使用すると、Google App Engineのすべての機能を側面にあるDjango機能とともに使用できます。

Django non-relは、できるだけ多くのDjangoのパワーを提供しようとしますが、拡張性を高めるためにアプリエンジンで実行します。特に、これにはDjangoモデル(Djangoのコア機能の1つ)が含まれていますが、これはリレーショナルデータベースとbigtableの違いにより、漏れやすい抽象化です。ほとんどの場合、機能と効率のトレードオフがあり、バグや癖が増えます。もちろん、これは質問で説明されているような状況では価値があるかもしれませんが、純粋なアプリエンジンまたはDjangoのいずれかに移行するオプションがあるので、最初はヘルパーを使用することを強くお勧めします後で非rel。また、Django non-relに切り替えると、Django抽象化が破られた場合にアプリエンジンの動作方法に関する知識が増えます。確かに、他の方法でスワップする場合のDjango non-relの癖/回避策。

0
Casebash