私の同僚と私は、トラフィックの多いWebサイトを開発するためのWebフレームワークを選択する過程にあります。 node.js + express
およびphp + symfony2
。どちらもすばらしいフレームワークですが、Symfony2は、ほとんどのWebフレームワークよりも優れているように見えるため、少し心配しています。
以下に、それを証明するベンチマークを示します。 http://www.techempower.com/benchmarks/
このため、おそらくnode.js + expressを使用しますが、ベンチマークでSymfony2のパフォーマンスがそれほど悪いのはなぜだろうかと思います。
最終的には、すべて正しいキャッシュ処理になります...
symfonyまたはPHP一般的にIS他の言語またはフレームワークよりも低速で、リッチで安全でテスト可能なWebアプリケーションを非常に高速に作成するツールを提供します。
Varnishおよび[〜#〜] esi [〜#〜](Edge side includes)などのリバースプロキシを使用する場合あなたが本当にsymfonyを通して更新する必要があるテンプレートの部分を提供することになります。あなたは非常に速い経験をするでしょう。
さらに、[〜#〜] apc [〜#〜]および最適化されたデータベースのようなオペコードキャッシュを使用する場合、人間のユーザー実際のアプリケーションでは数ミリ秒の違いに実際には気付かないでしょう。
リクエストに応じて、もう少し深く掘り下げて、考えるべきことをもう少しお伝えします。
クラウドサービス(s3、ec2、gae、...)をロードバランサーと組み合わせることでほとんど費用がかからず、簡単なプロビジョニング(シェフ、パペット、...)、そしてすべてのファンキーなものが利用可能になりました。大規模データやトラフィックの多いアプリケーションを実行および管理する中小企業。
より多くのストレージはキャッシュのためのより多くのスペースを意味します-より多くの計算能力はより速いキャッシュwarmimgを意味します。
人々がphpまたはフレームワークのパフォーマンスについて話している場合によく耳にするもの:
では、なぜこれらのサイトは完全に崩壊しないのでしょうか?キャッシングルーチンは賢いからです。
たとえば、ステータスの更新を書く場合、facebookが何をするのか知っていましたか?
すべてのステータスの更新とともにデータベーステーブルに保存されません。また、友人がストリームにアクセスすると、すべての友人のすべてのステータスが提供される前にデータベースから取得されます。
facebookは、すべての友達のニュースストリームにステータスを書き込み、キャッシュのウォームアップを開始します。これで、すべてのストリームの配信準備が整い、友人の1人がストリームにアクセスすると、キャッシュバージョンが配信されます。コードの実行をほとんど伴わずに即座に。キャッシュウォーミングが終了すると、ストリームには新しく作成されたステータスのみが表示されます。私たちはここでmsについて話している...
これは何を教えてくれますか?現代の非常に頻繁なアプリケーションでは、ほとんどすべてがキャッシュから提供されており、ページの実際の計算に1msまたは5秒かかった場合、ユーザーは気づきません。
「現実の」シナリオでは、エンドユーザーはフレームワーク間でreq/secの違いに気付かないでしょう。マイクロキャッシングのようなシンプルなものであっても、hackernewsのランディングページにアクセスすると、vpsでホストされたブログがすぐにダウンすることはありません。
最後に、より重要なことは...私のフレームワークがツール、ドキュメント、チュートリアル、サンプルを提供していることです...このすべてをすばやく簡単に実行できるようにするためです。 symfonyは私に役立ちます!
あなたが立ち往生している場合...あなたのパフォーマンス関連の質問に喜んで答えることができる人は何人いますか?このフレームワークを使用して、すでにいくつの実世界のアプリケーションが作成されているか、近い将来作成されますか?
フレームワークを選択してコミュニティを選択します!
...大丈夫、それは重要な部分ですか...今、これらのベンチマークに戻ります:)
ベンチマークのこれらすべての光沢のある色と派手なグラフでは、これらの各フレームワークでテストされたセットアップ(ウェブサーバー、データベースなど)が1つしかないのに、各フレームワークでさまざまな設定を行うことができます。
例:symfony2 + doctrineORM + mysqlを使用する代わりに、symfony + doctrineODM + MongoDBを使用することもできます。
MySQL ... MongoDB ...リレーショナルデータベース... NoSQLデータベース... ORM ...マイクロORM ...生SQL ...これらの構成ですべてが混ざり合っています------>リンゴとオレンジ。
ほぼすべてのベンチマーク(PHPフレームワークを比較するだけの場合も含む)に共通する問題は、Webおよび「TechEmpower Web Framework Benchmarks」で見られますが、等しくない最適化です。
これらのベンチマークは、それらのフレームワークで可能な(そして経験豊富な開発者によって知られている)最適化を利用しません...少なくともsymfony2とそのテストでは、これは事実です。
最新のテストで使用されるsymfony2セットアップに関するいくつかの例:
リストは続きますが、これがどこにあるのか理解できたと思います。 90件の未解決の問題 今では...終わりのない物語。
サーバーやストレージなどのリソースは安価です。本当に安い...開発時間と比較して。
私はかなり一般的な料金を請求するフリーランサーです。 2〜3日の時間を得ることができます...または計算能力とストレージの負荷を軽減できます!
フレームワークを選択するときは、迅速に開発するためのツールキットも選択します。完全に満足しない、機能を忍び寄る顧客と戦うための武器です。
代理店(またはフリーランサー)として、機能豊富なアプリケーションを短時間で構築したいと考えています。あなたは何かにこだわっているポイントに直面するでしょう...おそらくパフォーマンス関連の問題です。しかし、開発コストと時間にも直面しています。
もっと高価になるのは何ですか?追加のサーバーまたは追加の開発者?
このブログでは、質問の2番目の部分に回答しています。 http://symfony.com/blog/is-symfony-too-slow-for-real-world-usage
「hello、world」テストの速度がFooBarフレームワークの場合ほど良くないため、symfonyを終了するのは間違いです。生の速度は専門家にとって重要な要素ではありません。コストが重要な要素です。また、symfonyを使用したアプリケーションの開発、ホスティング、メンテナンスのコストは、他のソリューションのコストよりも低くなります。
フレームワークを選択するときは、開発の総コストを考慮する必要があります。つまり、フレームワークのコード品質(単体テスト、ドキュメントなど)、パフォーマンス(およびホスティングコスト)、すぐに使用できる機能の量と品質、コミュニティのサイズ、組織の使用状況を調べることを意味しますあなたやスケーラビリティなど.
Symfonyの開発者として、私はWordPress=技術的な観点から嫌いです。しかし、シンプルなWebサイトにはこれをお勧めします(さらには使用します!)。コミュニティの大きさ:WordPressデザイナー/開発者を雇うのは非常に簡単です。WordPressとSymfonyは何もしません。この場合の意味。