昨日、テイラー・オトウェル、 ジェフリー・ウェイ 、マット・スタッファーとララベル・ポッドキャストの新しいエピソードを聴きました-そして彼らは(最終的に!)ララベルで素晴らしいアプリケーションを作成することについて話しました、最近この質問非常に頻繁に尋ねられました。
Laravelは、大きなプロジェクトに十分な年齢ですか?
ポッドキャストのメンバーはトランスクリプトを提供しなかったので、50分間を聞く必要はないかもしれないので、簡単な要約を書いて、トピックに関するリンクを付けて、より便利な質問回答形式で回答を分類することにしました。 行こう!
1.優れたアプリケーションとは何ですか?
Matt :トピックに入る前に、エンタープライズアプリケーションとは何かを決めましょうか? コードの行数、依存関係、またはセキュリティ、または負荷に関するものですか?
ジェフリー :同じ質問があります。 フレームワークには、Laravelではなくエンタープライズにするためにどのような機能がありますか? Zendの背後に大きな会社があり、誰もがLaravelに「 Taylorが亡くなったらどうなるか 」 と尋ねるのは問題ですか。 」
Taylor :ほとんどの人はたくさんのクラスを意味していると思うし、たくさんのコードがあると思う。
2. Laravelは大規模なアプリケーションに使用できますか?
テイラー :明らかに、はい、大規模なアプリケーションに使用できます。
- それはすでに大規模なアプリケーションに使用されており、私たちはそれを知っています。
- Laravelは、PHPが適しているすべてのアプリケーションに適しています。 それはすべてあなた次第です-それがコントローラーになるとすぐに、あなたはあなたがやりたいことができます。
- また、Laravelには独自の利点があり、多くの理由で、現時点で他のPHPソリューションよりも大規模なアプリケーションの作成に適していると思います。 ホーム-Laravelには依存関係、複雑さ、 DIがあります。 複雑なアプリケーションについて話すときは、タスクのバックグラウンド処理も意味します。Laravelは、すべての主要なPHPフレームワークの組み込みキューイングシステムを備えている唯一のものです。 そしてもちろん、大規模なアプリケーションに固有のイベントブロードキャストなどの機能もあります。
そのため、大規模なアプリケーションに使用できるだけでなく、PHPの他の代替手段よりも大規模なアプリケーションには間違いなく優れています。
Laravelのエントリのしきい値が低いため、これは誤解を招く可能性があることを理解しています。 ただし、同時に、ニーズに合わせて拡張できます。
3.人々は不合理です
テイラー :ところで、人々はフレームワークを合理的に選択しません。 多くの主観的なもの。 彼らはマーケティングが好きではないかもしれないし、フレンドリーなララベルスタイルが好きではないかもしれないので、彼らはZendのようなより厳密なものを選択します。 時々彼らは私を個人的に好きではありません!
4.企業の世界
Matt :エンタープライズといえば、大規模プロジェクトと企業プロジェクトには違いがあります。 「CEO、取締役会、財務ディレクター、弁護士、または数十億ドル規模の会社の誰かが、Xに多くの時間とお金を投資することを非常に心配している」と常に言っています。多くの開発者が開発以外の入力を受け取るため、たとえばLaravelを使用しないなどの制限があるのではないかと思います。
5. Laravelを使用した大規模なアプリケーションの例
Matt :企業から離れて、大規模なアプリケーションについて話しましょう。
Laravelの多くのサイトに名前を付けることはできません。 私は彼らの多くとNDAの下にあり、Alexa 500、Fortune 500リストの多くの企業から数千万の訪問があるので、私はいくつかを知っています。
Taylor :Fallout 4などのさまざまなコンピューターゲームサイトでは、ランディングページでLaravelを使用しています。 しかし、主な質問は-なぜ人々はこれが機能するという証拠が必要なのでしょうか? 証拠は常にほとんどありません。
6.フレームワークではありません。
Taylor :人々は知りたいかもしれません:「Laravelで大規模なアプリケーションを作成した場合、それは永久にサポートおよび保守されますか?...」。 いいえ、Laravelは今後10年間、アプリケーションを自動的にクールにサポートしません。
このフレームワークにより、コードに集中できます。 フレームワークはルーティング、セッション、キャッシュ、データベースへのアクセスですが、サブジェクト領域の詳細を記述し、フレームワークの機能よりもはるかに複雑なビジネス上の問題を知ることができるのはあなただけです。
Matt :悪い開発者はどんなフレームワークでも悪いコードを書くでしょう。
7.いいでしょう、大規模なアプリケーションを構築する方法は?
マット :まあ、人々はLaravelが良いことに同意すると仮定します。 大規模なアプリケーションを作成する方法、1週間に数百万のビューを持つアプリケーションの微妙な違いは何ですか?
テイラー :簡単です。 AWSの Elasticcacheなどのサーバーでは、 MemcachedやRedisなどの適切なセッションおよびキャッシュドライバーを使用してください。
おそらくロードバランサーが必要です。その意味で、PHPは非常にうまく拡張できます。
Laravelレベルで、composer dump-autoload -optimizeを実行したconfig:cache 、 route:cacheを使用していることを確認してください。
Jeffrey :突然、負荷の高いプロジェクトでもあるLaracstsでは、それほど多くのことをしませんでした! 写真のサイズなど、人々が完全に無視する多くの基本的なものがあります!
Taylor :もう1つの良いアイデアは、データベースをアプリケーションサーバーから分離することです。 これにより、たとえば、2番目のサーバーが必要な場合に、スケーリングが容易になります。
キャッシングといえば、最近Cloudflareを使用しています。 Laravelの公式サイト全体はハードキャッシュされており、ドキュメントなどほとんどすべてが静的であるため、実際にサーバーに届くリクエストはわずかです。
Matt :Cloudflareには別の問題があります。キャッシュを更新するには、保持期間を考慮する必要があります。 Cloudflareの問題ではなく、あなたの問題です-ヘッダーのExpiresを確認してください!
結論の代わりに
彼らの考えを聞いた後(みんなに感謝!)、私は同じ結論に達しました-大規模なアプリケーションはフレームワークに関するものではなく、DevOps、キャッシングメカニズム、アプリケーションのユニークなビジネスロジック、データベース構造など、さらに多くのトピックがあります。 「Laravelは十分ですか?」という質問は間違った質問です。 「私のコードは十分ですか?」または「大規模なアプリケーションでLaravelを効果的に使用するのに十分なスキルがありますか?」 追加するものがある場合、記事の著者は自分のブログでコメントを受け入れます。ここにポッドキャスト自体へのリンクがあります 。
私は自分で付け加えます:議論の本質は非常に議論の余地があり、多くの点でテイラーの分類に同意しません(各ポップは彼の到着を称賛します、はい)が、ポッドキャストを通る主なアイデアは、フレームワークに関係なく悪いコードを書くということです。 このフレームワークは、コアビジネスロジックに焦点を合わせるためのツールのみを提供します。
PPS: PMでエラーと不正確を報告してください。