5

ほとんどの Python フレームワークには、実動サーバーとして使用しないという警告が表示される、ある種の開発 Web サーバーがあります。それらは、同等の製品とどの程度異なる傾向がありますか?

どのフレームワークを使用するか、ましてやどの運用サーバーを使用するかをまだ決めていないため、これを「開発サーバー x と運用サーバー y を比較する」に絞り込むのはちょっと難しいです。そうは言っても、質問をもう少し正確にさせてください。 Python フレームワークでの過去の経験では、開発環境で開発されたアプリケーションを本番システムで起動して実行するのにどれくらいの時間を費やさなければなりませんでしたか?サーバ?それとも、開発サーバーをスキップして、本番環境で使用するサーバーに近いサーバーでアプリを開発しましたか?

4

5 に答える 5

5

下位環境は、利用可能なリソースを考慮して、本番環境にできるだけ近づけるように努める必要があります。これは、Python ベースであるか Web ベースであるかに関係なく、すべての開発作業に当てはまります。実際には、ほとんどの組織はそのような種類のお金を使う気はありません。この場合、少なくとも本番環境のすぐ下にある環境をできるだけ本番環境に近づけるようにしてください。

留意すべき変数のいくつかは次のとおりです。

  • 多くの場合、本番環境には複数のマシン (アプリケーション サーバー、データベース サーバー、Web サーバー、ロード バランサー、ファイアウォールなど) があります。これらすべてを念頭に置いてください。

  • オペレーティングシステム

  • CPU の数。CPU が 1 つ少ない環境からマルチコアの実稼働環境に移行すると、テストされていないマルチスレッドの問題が明らかになる可能性があります

  • 負荷分散。多くの場合、下位環境は負荷分散されていません。複数の本番アプリケーション サーバー間で (たとえば) セッションをレプリケートする場合は、下位環境で同じことを行うようにしてください。

  • ソフトウェア / ライブラリのバージョン

于 2008-10-19T16:36:03.337 に答える
2

一般に、環境設定を含むアプリケーションを実行するために必要な設定に関しては同じです。
ただし、クライアントには通常、処理能力やその他のハードウェア リソースの点でそれほど強力ではない開発システムがあります。通常、複数のプロジェクトが並行して進行しており、コストの削減に役立つため、開発環境で仮想サーバーを使用しているのを見てきました。

于 2008-10-19T14:50:57.400 に答える
2

私はdjangoで開発しています。私たちが持っている運用サーバーはリモートにあるため、開発に使用するのは苦痛です。したがって、最初は vm を作成し、prod サーバーの環境にできるだけ近づけようとしました。ある時点で、その vm が停止しました (無関係なインシデントが原因で)。当時の状況を調べたところ、カスタマイズされた vm を開発に使用する正当な理由はまったくないことに気付きました。アプリで利用できるリソースは製品サーバーと同じではなかったため、いずれにせよ (絶対的な意味で) クエリのタイミングには適していませんでした。

そうは言っても、私は現在、開発用にsqliteを備えたdjangoの組み込み開発サーバーを使用し、本番用にapache/wsgiとpostgresqlを使用しています。Python の依存関係が両側で満たされている限り、100% 互換性があります。唯一の潜在的な問題は、orm を使用する代わりに生の SQL を記述することです。

于 2008-10-19T16:50:49.467 に答える
1

理想的には、開発サーバー、テスト サーバー、および運用サーバーの論理構成は同じである必要があります。アプリケーションの実行に使用される OS、Web サーバー、およびその他すべてのソフトウェア資産のバージョンが同じである必要があります。ただし、環境の強度に応じて、テストや本番環境を通過しない開発マシン上の画像/スクリプトなどを手でコピーします。

これを最小限に抑えるには、おそらく、ある段階から次の段階に移動できる何らかのプッシュ スクリプト (PushVersionDev、PushVesionTest、PushVersionProd) が必要です。理想的には、これは、さまざまな段階でアプリを移動するために必要なすべてを表すターゲット サーバーのパラメーターを含む同じスクリプトである必要があります。

この問題に関するアイデアについては、Theo Schlossnagle の著書Scalable Internet Architecturesを読むことをお勧めします。

あなたの質問に直接答えるために....アプリケーションのテストと実装が完了したら、OS、Web サーバー、インストールが必要な場合はサポート フレームワーク、アプリケーションを展開し、準備が整いました。ベア メタルから、Linux サーバーが 1 時間、Windows が約 90 分でオンラインになるのを見てきました。OS と Web サーバーが稼働している場合は、さらに数分かかります。

于 2008-10-19T15:06:47.587 に答える
0

ステージング環境は、本番環境を模倣する必要があります。開発は遊び場のようなものであり、開発環境の管理はそれほど厳密であってはなりません。ただし、開発環境は定期的に本番環境から更新する必要があります (たとえば、prod データを dev db にコピーする、prod で閉じられている dev のポートを閉じるなど)。

理想的には、dev、stage、および prod はすべて別のマシン上にあります。個別のマシンは、予算/ニーズに応じて、個別の物理ボックスまたは同じ物理ボックス上の仮想マシンにすることができます。

于 2008-10-20T03:38:02.843 に答える