Upgrade to Pro — share decks privately, control downloads, hide ads and more …

WebサーバーとPHP実行方式を きちんと理解してPHPランタイムを 適切に使い分ける - PHPカンファレンス福岡2024

Kanon
June 21, 2024

WebサーバーとPHP実行方式を きちんと理解してPHPランタイムを 適切に使い分ける - PHPカンファレンス福岡2024

PHPカンファレンス福岡2024での登壇資料です。

Kanon

June 21, 2024
Tweet

More Decks by Kanon

Other Decks in Technology

Transcript

  1. 自己紹介 2 Copyright © 2023 blessing software. All Rights Reserved.

    Illustrated by @amon_mikio Kanon 株式会社 虎の穴ラボ 個人事業 blessing software samurai_se ↓詳しくは↓ • 3次元に嫁が1人います。2次元にはたくさんいます。 • 声優の水瀬いのりさんが推しです • 最近「アイコンみたことある!」と声かけていただける率が増えてて嬉しい ◦ オフラインでも「xxで発表してましたよね?」声かけ率up ◦ ついに「KanonさんのXを見て採用応募して…」という人まで現れたらしい(嬉しみ) • 本業はJava, Ktor(Kotlin), Next.jsで副業がLaravel, Nest.js,Next.js
  2. 📢 最初に宣伝 3 Copyright © 2023 blessing software. All Rights

    Reserved. Illustrated by @amon_mikio 登壇枠は満員御礼 🎉 参加枠も残り3枠で す!!
  3. 7 Copyright © 2023 blessing software. All Rights Reserved. Illustrated

    by @amon_mikio 水瀬いのりさんのライブツアー初日に当選🎉
  4. 9 Copyright © 2023 blessing software. All Rights Reserved. Illustrated

    by @amon_mikio ライブツアーファイナルに初当選!!👏
  5. 11 Copyright © 2023 blessing software. All Rights Reserved. Illustrated

    by @amon_mikio        終
      制作・著作
      ━━━━━
       ⓃⒽⓀ
  6. 13 Copyright © 2023 blessing software. All Rights Reserved. Illustrated

    by @amon_mikio (Webの)PHPのランタイムを作る時
  7. 14 Copyright © 2023 blessing software. All Rights Reserved. Illustrated

    by @amon_mikio 意識的に使い分けてますか?
  8. おそらく、こういう方も多いのでは? • 仕事で使うのがApache / nginxなので、自然と使い慣 れた方を使っている • 最近はググるとだいたいnginx×Dockerの構築方法が 出てくるので、脳死でそれ •

    そもそも違いすら意識してなくて、ベースになるリポジト リで使われてる環境をそのまま使ってる(この場合 nginxが多い) 15 Copyright © 2023 blessing software. All Rights Reserved. Illustrated by @amon_mikio
  9. 16 Copyright © 2023 blessing software. All Rights Reserved. Illustrated

    by @amon_mikio 今日はこの状態を卒業しましょう🌸
  10. 18 Copyright © 2023 blessing software. All Rights Reserved. Illustrated

    by @amon_mikio そもそも、デプロイ先を意識してますか?
  11. 実際にあった話 • 本番、STGはAppEngineで動いてる • 開発環境はnginx使ってる • 自分がjoin • 環境作ってみる •

    ぶっ壊れてて動かない ◦ nginxのドキュメントルートの指定が間違ってる (master) • どうやって開発してるの …? ◦ 自分で設定変えて直してました ▪ いや、masterにpushしてくれ… • そもそもAppEngineならわざわざ開発環境に nginx使う意味ないので は? 19 Copyright © 2023 blessing software. All Rights Reserved. Illustrated by @amon_mikio
  12. デプロイ先の候補 • レンタルサーバーやGCEなどのIaaS • CloudRunなどのCaaS • AppEngineなどのPaaS 20 Copyright ©

    2023 blessing software. All Rights Reserved. Illustrated by @amon_mikio Googleが好きなので 例えは全部GCPのソ レです
  13. デプロイ先の特性を理解してますか? • レンタルサーバーやGCEなどのIaaS、CloudRunなどのCaaS ◦ 出来るだけ開発環境と同じように動かしたい ▪ ローカルもコンテナで構築しておく方が良さげ ◦ そもそもデプロイ先で Apache

    / nginxなど、どのWebサーバーで動かすか?から決める必要 がある • AppEngineなどのPaaS ◦ フレキシブル環境のように、コンテナで動かすでないなら WebサーバーはPaaSで用意された ものに勝手に決まる。つまりソースだけデプロイすれば動く。 ◦ ので、Apache or nginxどっちを選んでも結局関係ない。 ◦ その場合、ローカル開発環境は Laravelなら`php artisan serve`でもいいくらい 21 Copyright © 2023 blessing software. All Rights Reserved. Illustrated by @amon_mikio
  14. 22 Copyright © 2023 blessing software. All Rights Reserved. Illustrated

    by @amon_mikio Webサーバーを(自分で)入れるとなったとき
  15. 25 Copyright © 2023 blessing software. All Rights Reserved. Illustrated

    by @amon_mikio そんなに流行ってないイメー ジ(完全に主観) のため、今回の議論からは 外させて…
  16. そもそもなぜWebサーバーがいるか? 27 Copyright © 2023 blessing software. All Rights Reserved.

    Illustrated by @amon_mikio 今回は入れるんで すよ、うん。 という前提で話し ます
  17. 29 Copyright © 2023 blessing software. All Rights Reserved. Illustrated

    by @amon_mikio Apache と nginx の違いを論じる時
  18. 30 Copyright © 2023 blessing software. All Rights Reserved. Illustrated

    by @amon_mikio あーはいはい C10Kですよね? 知ってます 知ってます
  19. 31 Copyright © 2023 blessing software. All Rights Reserved. Illustrated

    by @amon_mikio あーはいはい C10Kですよね? 知ってます 知ってます
  20. C10Kを一言で… 34 Copyright © 2023 blessing software. All Rights Reserved.

    Illustrated by @amon_mikio クライアントが10,000件を超え たら、どう頑張っても CPUのリ ソースを使い切っちゃうよね?
  21. けど、現代はもう違う 35 Copyright © 2023 blessing software. All Rights Reserved.

    Illustrated by @amon_mikio LB web server web server web server … web server CPU CPU CPU … CPU 最初の図は これしかない 前提の話 負荷に応じて どんどん増えていく オンプレ中心の過去と 違い、今は仮想化が 進んでどんどん水平ス ケールできる CDN CDN clients 静的コンテンツは CDNに分散
  22. 37 Copyright © 2023 blessing software. All Rights Reserved. Illustrated

    by @amon_mikio Apache と nginx の違いを C10K問題を引き合いに出して 語る時代は終わった
  23. 38 Copyright © 2023 blessing software. All Rights Reserved. Illustrated

    by @amon_mikio では、何を引き合いに出すか?
  24. 41 Copyright © 2023 blessing software. All Rights Reserved. Illustrated

    by @amon_mikio なんか怖い人出てきそう😭
  25. 42 Copyright © 2023 blessing software. All Rights Reserved. Illustrated

    by @amon_mikio ので少し怖いんですが、違ってたら優しく教えてください
  26. モジュール方式 • Apacheではデフォルト、nginxでは出 来ない • コンテナが一つで済むので、環境構築 が楽。すぐに動かせる • WebサーバーとPHPは同じ実行権限 (root権限など)で動くため、レンタル

    サーバーやIaaSのマルチテナントでは セキュリティ面に不安がある 43 Copyright © 2023 blessing software. All Rights Reserved. Illustrated by @amon_mikio
  27. まとめ 46 Copyright © 2023 blessing software. All Rights Reserved.

    Illustrated by @amon_mikio • 本番環境はどのようなインフラを使うか? ◦ IaaS, CaaSであれば、Webサーバーを決めて用意する必要がある ◦ PaaSなのであれば、無理に用意する必要はない ▪ Laravelならビルトインで開発し、STGでテストすればよい • Webサーバーが必要で、Apache と nginx どっちを使うか? ◦ C10K問題を意識しすぎる必要はない ◦ モジュール版で動かしたいか、CGI版で動かしたいか? ▪ モジュール版ならApache。環境構築が楽だけど、レン鯖やIaaSのマルチテナントならセキュリティリスク がある ▪ CGI版ならnginxが主流っぽい。Apache使いたい特別な理由があればそれもいいと思う。環境構築が少 し面倒だけど、WebサーバーとAppサーバーが分離されることによる恩恵がある
  28. 47 Copyright © 2023 blessing software. All Rights Reserved. Illustrated

    by @amon_mikio ご清聴、あざざました
  29. Copyright © 2023 blessing software. All Rights Reserved. Illustrated by

    @amon_mikio おわりに 三ノ宮で待ってます!!