Google App EngineでDjangoを使用する理由


88

Google App Engine(GAE)を調査すると、GAE上のPythonでの開発では、Djangoの使用が非常に人気があることは明らかです。私はDjangoを使用することのコストと利点に関する情報を見つけるためにWebを精査し、なぜそれがそれほど人気が​​あるのを調べてきました。GAEでDjangoを実行する方法とその実行方法に関するさまざまなソースを見つけることができましたが DjangoがGoogleが提供するwebappフレームワークを使用するよりも好ましい理由に関する比較分析は見つかりませんでした。

明確にするために、GAEでDjangoを使用することが、Djangoで既存のスキルセットを持っている開発者(大部分のPython Web開発者、間違いなく)またはDjangoで既存のコード(GAEを使用するほうが移植作業である)に役立つ理由がすぐにわかります。ただし、私のチームはまったく新しいプロジェクトで使用するためにGAEを評価しており、私たちの既存の経験はDjangoではなくTurboGearsでの経験です。

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

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

GAEでwebappを使用するよりもDjangoを使用する方が優れている理由を指摘してくれて、とても感謝しています。また、私はDjangoをまったく使用したことがないので、GAEで機能する小さな機能や利便性について詳しく説明することも私にとって貴重です。


神聖ながらくたテリー・ブラッドショーはコードを書いていますか?
Woot4Moo 2009

4
Djangoはすばらしいので有益です。それだけです。:)
ヤタニズム2009

私はGoogleアプリエンジンも初めてですが、これは2018年でも非常によくできた質問です(ただし、Django ORMは現在、GAEでサポートされているようです)。:)
Divij Sehgal 2018

回答:


19

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

APIサービスについては、上に非常にシンプルなものを構築しましたwebob。djangoが提供するすべてを必要としないため、はるかに軽量であり、状況によっては少し高速です。


1
どうもありがとう。Djangoの魅力に関する私の混乱の一部は、URLルーティングと要求/応答/エラー処理も提供されたwebappの機能であり、テンプレートエンジンはDjangoなしでもwebappでも使用できるという考えから生じました。私は間違っていますか?Djangoはこれらのサービスをwebappフレームワークよりも優れていますか?
Travis Bradshaw、

彼らは私が言うだろうジャンゴでより広範囲で柔軟です。したがって、実際にそれが必要な場合は、より良いでしょう:-)
Koen Bok

2
これが私が探している答えだと思います!そのDjangoは主にwebappに冗長ですが、それらがDjangoを共有する機能では、より柔軟で堅牢な方法で行われます。それは確かに「マージン」の決定のようですが、私は他のすべての提案に加えて、あなたの提案が説得力のある答えになると思います。ありがとう。
Travis Bradshaw、

1
Cで書かれたPythonモジュールもサポートされていません。
Ryu_hayabusa 2014

51

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

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

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

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

以上のことはすべて、GAEが提供する境界線とんでもないスケーリングが絶対的に確実に必要な場合を除いて、その特定のサービスにフレームワークの選択を許可しないことをお勧めします。私はDjangoが好きなので、GAEでは使用しないでください。

編集(2010年6月): このコメントへの更新としてしばらくして:Googleは、無料ではないGAEのSQLに似た機能を発表しましたが、SQLスタイルのコマンドを実行してデータに関するレポートを生成するなどの操作を簡単に行うことができます。

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

さらに、Summer of Code 2010プロジェクトの間に行われている作業により、djangoコアに非SQLサポートが提供され、拡張により、GAEでの作業が大幅に容易になります。

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

編集(2011年8月):

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

非常に少数の人々が本当にビッグデータの問題を抱えています。「ああ私のスタートアップはいつかスケールするかもしれない」はビッグデータの問題ではない。すぐにビルドして、標準ツールを使用してドアから取り出します。


丁寧な対応をありがとう、ポール。コストモデルが提案されたビジネスプランとよく一致しているため、主にGAEを評価しています。非常にきめ細かいコストモデルで無料で始めて段階的に拡張できる機能は非常に魅力的です。さらに、将来的にGAEから移動または移行する必要があるとは予想されておらず、このプロジェクトのプラットフォームロックインは許容されます。私は主にこの質問を投稿する前に読んだり調査したりして学んだことをかなり包括的にするために、質問に「出口戦略」コメントを含めました。再度、感謝します!
Travis Bradshaw

開発時間のコストをどのように評価しますか?Djangoの優れた点の1つは、Bigtableを使用する場合よりも、データモデルの定義について心配する時間が少なくて済むことです。Bigtableでは、まったく使用する前に、使用方法をより明確にする必要があります。「通常の」SQLを使用すると、特定のクエリが大幅に簡単になります。
ポールマクミラン

3
ペニーを過度に挟まないように注意してください。無料はいいですが、このサービスは急速に現実のお金を要します。「無料」レベルのサービスを利用している場合は、すでに支払っている他のサーバー/ホスティングでホストします。非フリーレベルのサービスを利用している場合、後で簡単にスケーリングできるVPSの月額$ 20は、コストの面で問題です。
ポールマクミラン

11
tbradshaw、していないあなたは、アドホックレポートは、データセット上で実行する必要があります。どのくらいの頻度を検討することを忘れ。私はソーシャルアプリケーションの成長に携わっており、GAEは次のようになりつつあります。悪夢とは言えませんが、データから知識を引き出すことは非常にリソースを消費します。Googleが古いログをパージすることと、すべてのデータをスイープするために必要な極端な長さとの間で、SQLデータベースよりもはるかに高価なレポートを作成します。それは私が始めたときに私が考慮しなかったコストです。第二に、もしあなたが本当に成長してお金を稼ぎ始めたら、バックアップに関して失うコントロールは、まあ、要因です。
JasonSmith、2009

2
ロックインの懸念については、Google App EngineクローンであるAppScaleをチェックしてください。私たちはGAEが最初にリリースされて以来、このプラットフォームに取り組んできており、本番環境のpythonおよびjavaアプリケーションで多くのユーザーを利用しています。実行しているマシンに直接アクセスできるため、インフラストラクチャをより細かく制御できます。github.com/AppScale/appscale.git
Navraj

16

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

小さなものの場合、私は通常、単純さと迅速さのために通常のフレームワークを使用します。同様http://stdicon.comhttp://yaml-online-parser.appspot.com/、またはhttp://text-twist.appspot.com/

大きなものについては、djangoを使用して、すべての優れたミドルウェアとプラグインを利用します。同様http://metaward.com

基本的に私のリトマステストは次のとおりです。これを書いてREALソフトウェアプロジェクトになるには2週間以上かかりますか?もしそうなら、アドオンのためにdjangoを使います。

これには、プロジェクトがBigTableに適さない場合、すぐに移植できるという追加の利点があります(私がBigTableを遅くしたのか、それとも私は愚かですか?


+ 1、bigtableは、ある種のプロジェクトやクエリにとっては悪いことです。それはグーグルがすることのために素晴らしいです、そしてあなたがやりたいことのためにひどいかもしれません。
ポールマクミラン

ポールありがとう!DAEで動作するDjangoミドルウェアとプラグインについて説明しているリソースにリンクしていただけませんか?私たちのプロジェクトに役立つアドオンがある場合、それは確かにwebappではなくDjangoを使用する理由になります。より明らかに便利なもの(セッションや認証など)には、Django ORMの依存関係が明確に示されています。
Travis Bradshaw

2
基本的に、models.pyがないアドオンは完全に動作します。また、models.pyがある場合は、おそらく1対1の変換をbigtableに変換し、必要に応じてそれを使用できます。私が使用しているのは、django_annoying、django_debug_toolbar、およびcontribセクションのcsrf、humanize、そしてもちろんadminです。
ポールタージャン、

11

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

今、あなたは使うことができます Google Cloud SQL

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

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

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


3

GAEではなくDjangoを使用した経験があります。Djangoでの私の経験から、それは非常に単純化されたセットアップであり、展開プロセスはWebプロジェクトの点で信じられないほど簡単でした。物事をしっかりと把握するためにPythonを学ぶ必要があったことは確かですが、結局のところ、プロジェクトでもう一度使用します。これはほぼ2年前の1.0になる前だったので、私の知識は少し古くなっています。

プラットフォームの変更について心配している場合は、これが私が選択するより良い選択です。


1
早速の対応、ありがとうございました!Djangoはすぐに使い始めることができるフレームワークであることに同意しますが、それは私たちにとっては特に問題ではありません。私たちには、Web開発のバックグラウンドを持つ非常に経験豊富なPython開発者が4人いるため、任意のフレームワークを使い始めるのは迅速で簡単です。しかし、GAEでDjangoとwebappのどちらを選択するかという問題が残ります。どちらがより良い選択であり、なぜですか。
Travis Bradshaw

@ Woot4Moo GAEの経験がない場合は展開しますが、GAEは初めてですが、価格はかなり混乱します。ランダムなヒューズ料金です。pythonanywhereと思います。いくつかの推奨事項を教えてもらえますか?
万座

0

質問には答えられませんが、web2pyを調べてみてください。多くの点でDjangoに似ていますが、そのデータベースアブストラクションレイヤーはGAEで動作し、ほとんどのGAE機能をサポートします(すべてを追いかけるわけではありません)。このようにして、GAEが適切に機能する場合、機能しない場合は、コードを別のdb(SQLite、MySQL、PostgreSQL、Oracle、MSSQL、FireBird、DB2、Informix、Ingres、およびすぐに-SybaseおよびMongoDB)に移動できます。 )。


0

GAEの外部でアプリを実行する場合でも、Djangoを使用できます。GAE Webアプリケーションでは、それほどの幸運はありません。


ありがとう、私は元の質問でそれについて正確に述べていますが、「最終的に、Djangoを使用すると、後でGAEから離れて出国をターゲットとするプラットフォームが必要になった場合に「出口戦略」を提供できるという利点があります。 」
Travis Bradshaw

0

私はまだGoogle Appエンジン開発に非常に慣れていませんが、Djangoが提供するインターフェースはデフォルトよりもはるかに優れています。メリットは、App EngineでDjangoを実行するために何を使用しているかによって異なります。Django用のGoogle App Engineヘルパーを使用すると、Google App Engineのすべての機能をDjangoの機能の一部で使用できます。

Django non-relは、Djangoの能力を可能な限り提供しようとしますが、拡張性を高めるためにapp-engineで実行します。特に、これにはDjangoモデル(Djangoのコア機能の1つ)が含まれていますが、これはリレーショナルデータベースとbigtableの違いによるリークの多い抽象化です。ほとんどの場合、機能と効率のトレードオフ、およびバグと癖の数が増加します。もちろん、これは質問で説明されているような状況では価値があるかもしれませんが、後で純粋なapp-engineまたはDjango non-relのいずれかに移動するオプションがあるため、最初にヘルパーを使用することを強くお勧めします。また、Django non-relに切り替えると、

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