一般に、アプリケーションを適切にスケーリングするには、どのような設計上の決定が必要でしょうか?
(注: Big O Notationについて学んだばかりなので、ここでプログラミングのより多くの原則を収集しようとしています。以下の私自身の質問に答えて Big O Notation を説明しようとしましたが、コミュニティにこの質問と両方を改善してもらいたいです。回答。)
これまでの回答
1) スケーリングを定義します。仮想環境で多数のユーザー、トラフィック、オブジェクトをスケーリングする必要がありますか?
2) アルゴリズムを見てください。彼らが行う作業量は、実際の作業量 (つまり、ループする項目の数、ユーザー数など) に比例しますか?
3) ハードウェアを見てください。アプリケーションは、1 台のマシンが追いつかなくなった場合に複数のマシンで実行できるように設計されていますか?
二次的な考え
1) あまりにも早く最適化しすぎないでください - 最初にテストしてください。思わぬところでボトルネックが発生するかもしれません。
2) スケーリングの必要性がムーアの法則を上回らない可能性があり、ハードウェアのアップグレードはリファクタリングよりも安価になる可能性があります。