2

次のスタック オーバーフローの質問によると: Django はスケーリングしますか? Django は、1 日/1 か月あたり数千のユーザーが予想される Web アプリに最適ですが、これを実現するには、適切な設計が必要です。

今私のシナリオは次のとおりです。

私はテック リード / リード デベロッパーとしてスタートアップに参加したばかりで、Django で 3 年の経験がありますが、大規模なアプリとして使用したことはありません。私が関わった最新の大規模アプリは Zope を使用しており、SQL Server に依存してキャッシュなどを処理していました (私の意見では恐ろしい慣行です)。このスタートアップのユーザー数はわずか 20,000 か月でわずか 20,000 人であり、彼らが私を雇ったのと同時にマーケティング スペシャリストも雇ったことを考えると、成長の機会を予測できます (または、少なくとも予測したいと考えています)。 . 既存の Django コードの多くはリファクタリングが必要です。つまり、ModelForm ではなく静的な html フォームを使用するなどです。

私の質問は、このアプリをリファクタリングするときに、毎月 100,000 から 500,000 のユーザーに拡張できるように、アプリを正しく実行するために従うべき設計パターンは何ですか? 私が気をつけなければならないいくつかの落とし穴は何ですか? モデル設計に関して、スケーラブルなモデル設計とは何ですか? DB サポートに関して、このスケーラビリティを実現するには、どのような種類の DB セットアップが役立ちますか? ロード バランシングに関して、ロード バランシングに適したアーキテクチャはどれですか?

私は、箱から出してDjangoを使用してもこれを達成できないと思います。また、スケーラビリティの専門家を雇うように依頼する必要がある状況に陥りたくありません...また、負荷が何であるかを知りたいです現在のパフォーマンス/スケーラビリティを測定するために使用できるテスト手法/ツールは? 私は彼らと一緒に数日しか経っていないので、まだ本番環境についてはわかりません。本番環境を変更する必要があると感じた場合、いくつかの良いオプション(クラウドソリューション)は何ですか。適切で手頃な価格ですか?

編集: 彼らはまた、すべてに Ajax を使用しているようで、それが心配です。私が彼らにそれを変更するよう説得できないと仮定すると、いくつかの優れた Ajax テクニック ライブラリ (私は django-dajax/dajaxice を知っています) を使用でき、まだスケーラブルです。

ありがとう、

サム

4

1 に答える 1

6

残念ながら、あなたの質問には多くの詳細がありません。Google 検索では、django のスケーリングに関する多くの情報が得られます。

http://www.morethanseven.net/2011/06/30/Django-performance-1-measuring-performance.html

このリンクは、さまざまなパフォーマンス指標を測定するための約 5 つの方法を提供します。アプリの規模を拡大する方法については詳しく説明できないため、どのサイトにも当てはまる一般的な原則を以下に示します。

  1. 静的メディアが django ではなく Web サーバーによって提供されていることを確認してください
  2. すべての EXPLAIN をプロファイリングすることは非常に重要です。
  3. 可能な限りすべてをキャッシュします。メモリは非常に高速で、django を使用すると簡単に実装できます。
  4. テンプレートでの django ORM の落とし穴に注意してください。django-debug ツールバーを使用して、結果セットを反復処理するときに不注意で複数のクエリを作成していないことを確認してください。
  5. データベースの場合、データが正規化されていることを確認してください。
  6. CDN を使用して、Web サーバーと DB サーバーが別々のマシンにあることを確認してください。

時期尚早に最適化しないでください!! Django は、箱から出してすぐに多くのことを処理できます。ajax やモデル フォームなどについては、それらがサイトの成長に固有のボトルネックであることが判明しない限り、心配する必要はありません。パフォーマンスと同じくらい重要なのは、サイトがモジュール化され、バージョン管理され、簡単に移動できるようにすることです。これにより開発が容易になり、十分に大きくなると、新しいマシンを即座に立ち上げることができます。

于 2012-04-15T22:54:23.990 に答える