(私は.NET開発者ではなく、他の環境に縛られていないことを明確にすることから始めます。)
最近、ロンドン証券取引所が丸一日下落したと聞きました。また、ソフトウェアは.NETで作成されていると聞きました。この時点まで、彼らは忙しい日にパフォーマンスの打撃を経験するでしょう。人々は.NETを非難しているようです。
この話については議論したくありませんが、.NETはどのように拡張できるのかという疑問が浮かびました。.NETには大きすぎますか?
(私は.NET開発者ではなく、他の環境に縛られていないことを明確にすることから始めます。)
最近、ロンドン証券取引所が丸一日下落したと聞きました。また、ソフトウェアは.NETで作成されていると聞きました。この時点まで、彼らは忙しい日にパフォーマンスの打撃を経験するでしょう。人々は.NETを非難しているようです。
この話については議論したくありませんが、.NETはどのように拡張できるのかという疑問が浮かびました。.NETには大きすぎますか?
正直なところ、インフラストラクチャだけでなく、コードの最適化に要約されると思います。
StackOverflow Podcast 19で、Jeffは、StackOverflow が持つ種類の負荷を処理するために SQL Server をどのように調整する必要があったかについて説明しました。ここで微調整が必要だったのは .NET ではないことに注意してください。
また、最も大規模なソーシャル ネットワークの 1 つである MySpace.com が ASP.NET で動作していることにも注意する必要があります。
MySpace が ASP.NET だけを使用していることは、そのスケーラビリティの証です。要するに、開発者がその機能を最大限に活用する方法でアプリケーションを作成する方法にかかっています。
残念ながら、プロジェクトの規模が拡大するにつれてプロジェクトがダウンする原因となる可能性のある問題は他にもたくさんあるため、責任を負うフレームワークに取り掛かる前に、多くのことをやり遂げる必要があります。そして、ソースコードを見て徹底的に分析できなければ、根本的な原因を特定するのは難しいでしょう。フレームワークではなかったに違いない。
いいえ、私は.NETを日常的に使用していません。
どの言語でもスケーリングに失敗する悪いコードを書くことができます。
.Net は、あらゆるサイズのシステムにスケーリングすることができますが、他の技術スタックと同様に、スケーリングを念頭に置いてシステムを構築する必要があります。
LSE は可能な限り最悪の日にダウンしましたが、理由が何であれ、問題が基盤となるスタックであったとは思えません。これは貧しい労働者が自分の道具を非難しているケースだと思います。
実際、LSEでのダウンタイムは、.NET取引プラットフォームとはまったく関係がありませんでした。
LSEは、システムが「接続性の問題」に見舞われたと述べ、問題はその主力製品であるTradElect取引プラットフォームにあるのではないと主張しました。
http://www.itworld.com/networking/54760/london-stock-exchange-trading-stops-network-fails
これは、このトピックについて読むための大きな分厚い本です。
.NET アプリケーションのパフォーマンスとスケーラビリティの向上(Microsoft Press)
ドットネットはうまくスケーリングします。IISサーバーとasp.netWebサイトおよびアプリケーションを実行しているサーバーのクラスターがあり、ユーザーの負荷が増加したときに、サーバーを(簡単に)追加して容量を増やすことができます。これは特定のイベント中に発生し、.netアーキテクチャのスケーラビリティは私たちを失望させませんでした。
これは.netの問題ではなかったと(他の人がそうであるように)推測するのは危険です。
おそらく、取引所を下げたのは取引量でした。
これまでに示した多くの例は優れていますが、大規模な Web サイトに過ぎません。(あなたは私が「ただ」と言うのを嫌います) 彼らはページと時折のアプリケーション (つまり、scrabulous) をユーザーに配布します。証券取引所は売買を処理し、買い手と売り手をマッチングします。これは、アプリ サーバーにとって数桁多くの作業になります。
ただし、データベースがダウンしているのを見ることができました。
その後のニュース...
「TradElect は、LSE が所有するスリランカのテクノロジー ベンダーである MillenniumIT によって開発されたソフトウェアによって今年後半に置き換えられる予定のグループの取引プラットフォーム テクノロジーです。」...
http://www.efinancialnews.com/story/2010-09-13/ex-lse-tech-chief-joins-green-investment-company
「この取引により、グループは、将来の事業開発のために、より機敏で革新的かつ効率的な新しい IT 機能を実装できるようになります。また、レイテンシが大幅に短縮され、キャパシティが大幅に向上し、スケーラビリティが向上した新しい現金取引プラットフォームを実行できるようになります。」...
それはすべて3つのことに要約されます:
MySpace については前に触れましたが、新しいスケーリング ステップ (ユーザー数 / ページビュー数など) に到達したときに、アプリケーションを数回書き直したことが知られています。最初に最後のバージョンを構築することを選択した場合、維持するには費用がかかりすぎて、費用対効果が低くなります。スケーラビリティは、現在の位置と次のスケール目標に基づいている必要があります。
最後にもう 1 つ - ストレス テストはしばしば回避的であると見なされますが、確実なストレス テストを行うことで、ユーザーが負荷を経験して災害が発生する前に、目標とする負荷をアプリケーションがどのように処理するかを把握できます。
他の人が言ったように、それはプラットフォームの問題ではありません。
重要なのは、アプリケーションのアーキテクチャです。負荷分散、状態管理、パーティショニングなどです。これらはプラットフォーム固有ではありません。
.NETには、他のプラットフォームにはないサイズの制限があるのはなぜですか?.NETで「大きくなりすぎる」状況は想像できません。ただし、実際には、.NET WinformsアプリケーションとASP.NETのどちらについて話しているのか、およびその他の関連する要素について指定する必要があります。この質問は曖昧すぎて詳細に答えることができません。
あなたの名前が「DrUnix」であるという事実は、ところで、いくらかの偏見を意味します。
正しく行われると、アーキテクチャはほとんどの一時的な状態をクライアントにオフロードし、クラスタリングを容易にし、驚くほどスケーラブルになります。したがって、その時点で直接ASP.NETを使用するのではなく、システム全体の問題になります。
私の2セント。
このサイトは.netフレームワーク上にあると思います。同様に、Microsoftサイトはその上に構築されています。したがって、適切に実行すれば、.netサイトは拡張できると思います。ジェフがこのサイトについて行ったコメントのいくつかを見てください。問題はコーディングエラーやアーキテクチャの問題に来る傾向があります。
私は比較的大規模な asp.net Web サイトを運営しており、優れた拡張性を備えていることがわかりました。もちろん、これの多くは、コードのボトルネックを診断して修正するための優れたツールがいくつかあることに起因すると考えています。コーディングの問題は、フレームワークで人々が抱える問題の 99.99% を引き起こしていると思います。
.NETが最適なプラットフォームであると人々が言うとき、それは本当に気になります。なぜなら、「スケーラブル」であり、PHP、ColdFusion、JSP、またはC ++ / Delphiなどを備えたネイティブコンパイル済みアプリなど、他のどのプラットフォームよりもスケーラブルではないからです。フレームワークの機能ではなく、アプリケーション設計の機能です。
MySpaceは確かにスケーラビリティを支持していません。代わりに、Google検索の背後にあるテクノロジーまたはSETI@homeプロジェクトを見てください。
.NETは、ソフトウェアを単純化するのに行き過ぎて、やりたいことがあり、できないことがあるため、実際に使用するのが最も嫌いなプラットフォームです。したがって、.NETの制限を克服しようとすると時間が無駄になります。これは、C++またはPHPで簡単かつ迅速に実現できたはずです。.NETは、デュプロブリックが機械工学にとって何であるかをソフトウェア開発することです。自尊心のある機械エンジニアは、インチ幅の正方形のブロックのみを使用するように制約されることはありません。
アプリケーションをスケーラブルにする必要がある場合は、サーバー間で共有する必要のあるデータと、アプリケーションを実行してその目的を果たすために必要な最小データを検討する必要があります。アプリケーションをスケーリングする必要性は、最初に非常に効率的なコード(たとえば、.NETやJavaではない)を使用することで回避できることがよくありますが、これには通常、少なくともアセンブリの基本的な理解と、選択した言語をマシンに変換する方法が必要です。コード。