【TECH×GAME COLLEGE#21】Laravelを用いたゲームサーバーのチューニング

概要

ゲームエンジニアに特化した勉強会「TECH x GAME COLLEGE」に、ナウプロダクション・リードエンジニアの木村竜氏が登壇します!

セッションは前半・後半に分かれ、前半では PHP フレームワークの Laravel の通信時間を100msec 以下に収める極意を、そして後半ではスケールアウトの要である水平分散を Laravel で実現する方法を伝授します!

【前半】通信時間100msec以内を達成するための工夫

PHP界隈で、ここ数年一気に台頭してきたFWといえばLaravelです。

しかし、LaravelのFatな機能群を前に「速度がでないのではないか?」という疑念を抱いて採用を諦めたり、採用したはいいものの、Laravelの高機能さに振り回されて、アプリケーションの実行速度が重くなってしまったり、といった事があるのではないでしょうか?

しかし、Laravelが遅いのは、Laravelのせいではありません。

あるいはORMやPHP自体のせいでもありません。

よい設計を行えば、多くのAPIで100msecを切るといった性能を発揮する事が可能です!

前半では、実際の性能試験、負荷試験のデータの一部をお見せしつつ、速度を出すためにどのような工夫をしていったのかをご紹介していきます。

【後半】水平分散への対応

Laravelへの不安として、速度面だけでなく、スケールアウト性が挙げられます。

LaravelのORM(Eloquent)では水平分散の機能がサポートされていないために、大規模化する事を想定しなければならないゲーム用サーバーでの採用を諦めるというシナリオも考えられます。

確かに、水平分散はLaravelではサポートされていません。

これには弊社も頭を悩ませました。

mysqlの水平分散ストレージエンジンであるSpiderを用いるという方法も考えましたが、AWSなど、フルマネージドなクラウドサービスとの親和性はそこまで高くありません。

また、アプリケーション実行速度が下がるという懸念もありました。

そこで、弊社ではアプリケーションレイヤーで自前の水平分散を実装することにしました。

そして2カ月半ほどで設計~実装までを行いました。

後半では、Laravelに水平分散の概念を導入するために、どのような点に気を付けて設計を行い、いかに開発者にとってのシンプルさを保ったまま機能を提供したかをお話します。

お申し込みはこちらから。