質問

ほとんどのpythonフレームワークには、実稼働サーバーとして使用するためのものではないという警告が表示される何らかの種類の開発Webサーバーがあります。制作物との違いはどのくらいですか?

どのプロダクションサーバーを使用するか、どのプロダクションサーバーを使用するかはまだ決定していないので、これを「開発サーバーxとプロダクションサーバーyを比較する」に絞り込むのは少し難しいです。ということで、質問をもう少し正確にしましょう:pythonフレームワークの過去の経験では、開発で開発されたアプリケーションを運用システムで稼働させるのにどれだけの時間を費やしましたかサーバ?または、開発サーバーをスキップして、本番で使用するサーバーに似たサーバーでアプリを開発しましたか?

役に立ちましたか?

解決

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

留意すべき変数の一部は次のとおりです。

  • プロダクションには複数のマシン(アプリサーバー、データベースサーバー、Webサーバー、ロードバランサー、ファイアウォールなど)が何度もあります。これらすべてに留意してください。

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

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

  • 負荷分散。多くの場合、より低い環境は負荷分散されていません。複数の実稼働アプリサーバー間でセッションを複製する場合(たとえば)、より低い環境で同じことを試みる必要があります

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

他のヒント

djangoで開発しています。運用サーバーはリモートであるため、開発に使用するのは苦痛です。したがって、最初はvmを作成し、prodサーバーの環境にできるだけ近いものを一致させようとしました。ある時点でvmがホースされました(関係のない事件のため)。当時の状況を調査し、カスタマイズされたvmを開発に使用する正当な理由がないことに気付きました。アプリで利用可能なリソースはprodサーバーと同じではないため、とにかく(絶対的な意味で)クエリのタイミングには適していませんでした。

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

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

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

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

Theo Schlossnagleの本を読むことをお勧めしますスケーラブルインターネットこの問題に関するより多くのアイデアについては、アーキテクチャを参照してください。

質問に直接答えるには...アプリケーションをテストして実装したら、productoinに移行する時間は長くありません。インストール、アプリケーションが必要な場合、OS、Webサーバー、サポートフレームワークを展開します。行く。ベアメタルから、Linuxサーバーが1時間でオンラインになり、ウィンドウが約90分になるのを見ました。 OSとWebサーバーの稼働時間がさらに短い場合..分

ステージング環境は、運用環境を模倣する必要があります。開発は遊び場に似ており、開発環境の制御はそれほど厳しくすべきではありません。ただし、開発環境は本番環境から定期的に更新する必要があります(たとえば、devデータベースにコピーされたprodデータ、prodで閉じられているdev上のポートを閉じるなど)。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top