実は8月中に、アカツキさんのパフォーマンスチューニングインターン「Server Sonic 2018」に参加してました!
運営の方が開催報告を書いているので詳しいことはそちらを参照ください…!
と、いうわけで僕が書くことがあまりないので、ごはんの写真と当日の様子と感想について軽く書きたいと思います!
事前準備と当日の環境
各参加者にはそれぞれMacbookPro(13インチ、TouchBarなし)が配られ、モニタも1人1台支給されます。
PCについてはだいたい半月前(よく覚えてない)くらいに自宅に送られてくるので、環境構築等々を行います。
こういうときのためにdotfilesを作っておくと便利ですね。
1日目
1日目は、社員の方々による性能改善に関する講義が主でした。
私はRailsに触れるのが実質初めて(前日にRailsチュートリアルとmemcached関連記事を少し読んだ)だったので、常に片方に検索窓を開きながらの闘いでした。
N+1問題を始めとしたRails(というよりActiveRecord)特有の問題から、メモリキャッシング関連のコツ等、様々な性能改善に関するインプットをしていただきました。
N+1を検出する「bullet」や、行単位の実行時間を計測するプロファイラ「rack-lineprof」等々、Railsにおける性能改善でよく使用されるGemを知ることができてよかったです。
※余談ですが、なぜかチームのペアが同じサークルのやつでした。示し合わせてもなかったので奇跡です。いたるところにMIS.Wが偏在している…
昼食
叙々苑弁当です。またおまえか!!!!
夕食
近くの飲み屋で社員の方と飲み会です。
私は前職でLinuxカーネルの開発に携わっていたというお二人の社員さんからいろいろと貴重なお話を聞くことができました。
2日目
2日目は、実際のプロダクトコードにボトルネックを大量に仕込んだものが渡され、チームでスコアを競いました。
我々のチームは、二人ともRailsほぼ未経験という感じだったので、とりあえずN+1を積極的に潰すことを目標にしました。
余裕があればキャッシングもしたかったのですが、さすがにそこまで手が回りませんでした…
一通りN+1は潰すことができたので、個人的には満足でした。
昼食
まい泉のかつサンドだ!!!!!!
夕食(懇親会)
アカツキさんの運営されているケータリングサービス「goody」を利用して懇親会がセッティングされてました!(すごい)
感想
Rails(というかRubyは)かなり遅いというイメージがあったので、ソシャゲのサーバーサイドとしてRailsが採用されていることは、個人的にはかなり驚きでした。
ソシャゲレベルの大量のトラフィックをさばき、かつパフォーマンスも担保するために、様々な工夫が凝らされていることがしれて、とてもいい経験になりました。
N+1に関してはRails(というかORM特有の問題)でしたが、キャッシュの使い所等々は、他の言語やフレームワークでも生きる知識だと思います。
ぜひ他の開発等々でも、パフォーマンスについて考えていきたいなと思いました。
2日間ありがとうございました!!