ライアン・ドハティの答えを少し拡張するために...
私は日常業務(.NET / C#)で静的に型付けされた言語で作業し、副次的なものとしてRubyで作業しています。現在の仕事の前は、ニューヨークタイムズシンジケーションサービスの仕事をしているルビー開発会社のリードプログラマーでした。その前は、PHPでも働いていました(ずっと昔ですが)。
簡単に言うと、レール(およびより一般的にはルビー)のパフォーマンスの問題や、その他のいくつかの問題を直接経験しました。ライアンが言うように、自動的にスケーリングすることはありません。ボトルネックを見つけるには、作業と膨大な忍耐が必要です。
他の人や私たち自身から見たパフォーマンスの問題の大部分は、ORMレイヤーでパフォーマンスの遅いクエリを処理していました。Rails/ActiveRecordからRails/DataMapper、そして最後にMerb / DMに移行しましたが、基盤となるフレームワークのおかげで、各反復の速度が向上しました。
キャッシングは、パフォーマンスに驚くべき驚異をもたらします。残念ながら、データをキャッシュできませんでした。キャッシュは最大で5分ごとに事実上無効になります。私たちのサイトのほぼすべてのビットが動的でした。ですから、それができない場合は、おそらく私たちの経験から学ぶことができます。
データベースインデックスを真剣に微調整し、クエリが非常に愚かなことをしていないことを確認し、絶対に必要な数よりも多くのクエリを実行していないことを確認する必要がありました。 1+Nクエリの問題を意味します。
#1 query
Dog.find(:all).each do |dog|
#N queries
dog.owner.siblings.each do |sibling|
#N queries per above N query!!
sibling.pets.each do |pet|
#Do something here
end
end
end
DataMapperは、上記の問題を処理するための優れた方法です(1 + Nの問題はありません)が、さらに良い方法は、頭脳を使用して、次のようなクエリの実行を停止することです:D生のパフォーマンスが必要な場合、ほとんどのORMレイヤーは非常にカスタムなクエリを簡単に処理できないため、手書きで作成することをお勧めします。
常識的なこともしました。拡大するデータベース用に強力なサーバーを購入し、専用のボックスに移動しました。また、大量の処理とデータのインポートを絶えず行わなければなりませんでした。処理を独自のボックスに移しました。また、データインポートユーティリティのためだけに、おかしなスタック全体の読み込みを停止しました。絶対に必要なものだけを上品にロードしました(したがって、メモリのオーバーヘッドが削減されます!)。
まだわからない場合は...一般的に、ruby / rails / merbに関しては、スケールアウトして、問題にハードウェアを投入する必要があります。しかし、結局のところ、ハードウェアは安価です。それは見苦しいコードの言い訳にはなりませんが!:D
そして、これらの困難があっても、私がそれを助けることができれば、私は個人的に別のフレームワークでプロジェクトを開始することは決してありません。私はその言語が大好きで、毎日それについてもっと学び続けています。これは私がC#から得られないものですが、C#の方が高速です。
私はまた、オープンソースツール、その言語での作業を開始するための低コスト、何かを手に入れてそれが市場性があるかどうかを確認するための低コストを楽しんでいます。 ..。。
結局のところ、フレームワークの選択に関しては、毎日何を生き、呼吸し、食べ、そして眠りたいかがすべてです。Microsoftの考え方が気に入った場合は、.NETにアクセスしてください。オープンソースが必要であるが構造が必要な場合は、Javaを試してください。動的言語を使用し、それでもrubyよりも構造を少し増やしたい場合は、pythonを試してください。そして、優雅さが必要な場合は、Rubyを試してみてください(私は子供です、私は子供です...法案に合う他の多くのエレガントな言語があります。炎上戦争を始めようとはしていません:D)
地獄、それらすべてを試してみてください!私は上記の答えに同意する傾向があります。最適化を早期に心配することは、フレームワークを選択する必要がある、または選択すべきでない理由ではありませんが、これが唯一の答えであることに同意しません。
つまり、はい、克服しなければならない困難がありますが、言語の優雅さ、imhoは、それらの欠点をはるかに上回っています。
小説で申し訳ありませんが、私はそこに行って、パフォーマンスの問題で戻ってきました。それは克服することができます。だから、それがあなたを怖がらせないでください。