モバイルアプリ用のREST APIバックエンドを作成しています。 pythonで Twisted matrix とNodejsで Express Framework を決定するのが困難です。
私はいくつかの参照を行ってきました:
ブロック上の他のすべての子供のように、私も同じ要件を持っています:
私は事実を理解しています:
それでも、一方のテクノロジースタックをもう一方よりも選択する必要がある場合、どうすればよいですか?一方では、Nodejsはネイティブの非同期および非ブロッキングI/O機能を提供します。しかし、twistedmatrixにはいくつかの深刻な問題があります 子猫の大成功事例 。 pythonや他の言語でも他のフレームワークが可能です。他の提案も歓迎します。
私の特定の質問は、RESTful APIを構築するためにpythonでTwisted Matrixを使用する予定です。 pythonおよびDjangoでの経験があり、コードは非常にきれいです。 Nodeまたは他の技術スタックを使用する必要がある致命的な理由はありますか?
詳細な議論を巻き込まないでください。
ps1:モバイルアプリについてのアイデアを提供するために、地理的位置に基づいた大規模なメッセージングを紹介します。 REST APIは空間計算を処理する必要があります。
ps2:私は信仰の飛躍をする準備ができています。
あなたがあなたの質問で述べたすべてを考慮し、あなたは信仰の飛躍を受け入れます。私は答えがあると思う:
私はpython-Django開発者なので、最初はpython
を好まないでしょう。なぜなら、あなたが扱っている問題のためです。
非常に大規模なシステムの一部となるジオアプリケーションでは、アプリケーションの最初のフェーズの実装が完了すると、同時実行と最適化の問題が発生します。
間違いなくnode.js
を選ぶべきだと思います[実装には時間がかかるかもしれませんが、最善の解決策になるでしょう]。
nginx
のようなプロキシサーバーは必要ありません。オーバーヘッドを節約できます。mongo db
で非常にうまく機能し、これも優れたキャッシュバックエンドとして機能します。
10 line
のnode.js
Webサーバーを使用すると、nginx
と同等のパフォーマンスを実現できます。
一言で言えば、Python
は設計により同期的に機能し、tornado
およびTwisted
を使用すると、async
をトリッキーなスレッドで処理できます。
開発者の生産性を考慮して、ウェブサイトの開発に前もってnode.js
を好まないというのは本当です。しかし、問題を本当に解決する場合はnode.js
を使用する必要があります。つまり、ソリューションとして、次にテクノロジーとして(質問で引用するように)来ます。
nosqldb
のような優れたリレーショナルデータベースがあるのに、なぜpostgres
を使用するのかというような質問ですか? mongoのようにpostgres
でできることと、mongoのようにnosqldb
でできることはできません。
したがって、あなたの問題領域はnode.js
に固有であるため、python
でホイールを再発明しようとする意味はありません。
考慮事項:
node.js
との最初の摩擦に直面するのは、その新しいテクノロジーだからです。javascript
は、最初にpython開発者に対して維持するのが難しい場合があります。例として:
php
を使用しますが、チャットには本質的に同時のerlang
を使用します。erlang
を考慮することは、pythonエミュレーションを考慮することよりも論理的です。純粋に技術的な用語では、提案された2つのソリューション間で実際のパフォーマンスの違いはほとんどあり得ないため、あなたの質問は、純粋に技術的ではないサブ質問に大きく依存します。質問する必要があるのは、次の行です。
1)どの言語で最も経験が豊富ですか?
2)どの言語で書くのがより快適ですか?
3)プロジェクトにもっと多くの人を連れて行く場合、前の2つの質問にどのように答えますか?
4)私のプロジェクトで発生する一般的なタスクを処理するための、より優れた/より包括的なライブラリを持つ言語はどれですか?
5)初期の段階でプロジェクトのために検討するほとんどのホスティング環境で、どの言語/環境がより見つけやすく/セットアップしやすいか。
「私のプロジェクトが次のFacebookになったら、どのテクノロジースタックが最適だろうか」と自問することさえ考えないでください。そのポイントに到達するのに十分幸運であるならば、あなたはあなたが始めたのと同じ技術スタックを使用することはないでしょう。時期尚早に最適化しようとしないでください。
Nodeを使用する場合、サーバー側とクライアント(必要な場合)の両方で同じ言語を使用できるという事実も考慮する必要があります。これは大きなプラスになる可能性があります。この場合、JavaScriptの経験を積むと、プロジェクトの両側にメリットがあります。