📝

Ruby on Rails パフォーマンス アポクリファ 読書会を完走した

2024/12/24に公開

SRE Advent Calendar 2024 12/23(月) 分の記事です。

あいさか です。
Ruby on Rails パフォーマンス アポクリファ の読書会を社内で実施し、めでたく完走しました。

Special Thanks willnet さん読書会一緒にやらせていただきありがとうございました!

やり方

  • 月曜 30 分
  • 前半 20 分読書、 10 分感想戦
  • 場にいるメンバーが読み切ったところから次の回をやる
  • Kibela に感想をメモっておく
  • 参加者はほとんど Rails のエンジニアと SRE の私

結果

10 回で完走しました!
読書会って先が見えないと結構やり切るの辛いので読み終わるのにいいサイズ感だったな〜と思います。読書会むき。オススメです。
読書会の内容をアプリケーションに適用できる方法はないか、この対策は有用なのか、と言うことを社内で話せたことはとても有意義でした。

感想

Rails アプリケーションの運用に関する課題や解決方法や数値目標、パフォーマンスを下げる要因がすごくよく書かれていて、SRE の立場として興味深く読みました。

「Rails アプリケーションの動作が遅くなる一番の原因はデータベース (p26)」と明記されており首がもげるほど頷きました。対策としてプロファイラを使う、一度に読み込むレコード数を制限する、キャッシュヒット率を上げる、 APM を見るなど、 Rails アプリケーションとしてどう対策すべきかと言うことが (なんとなく当たり前のように考えているものも含めて) 多方面のアプローチが書かれていてよかったです。

これ知らなかった。不勉強でした。
https://github.com/ioquatix/rack-freeze

Ruby そもそもの仕組みを理解する文脈で、GC や GVL、CPU やメモリの話題もあります。
CDN を効果的に使うことや、単一ドメインで運用することの重要性など、アプリケーションの外からのアプローチについても参考になりました。

パフォーマンスの文脈だけではなく開発者として大事なマインドにも触れる機会がありました。

  • 計測せずに最適化しない
  • アプリケーションの向こうにはユーザがいて、ユーザのために何を計測するのか
  • ビジネス上何が重要で、何を開発しなければならないのか

Minitest はマルチスレッドなのでマルチスレッドな課題をテストで発見できる、は結構盲点だった気がします。たしかに。

ちなみに NewRelic や Heroku の話がよく出てきます。

まとめ

Ruby on Rails パフォーマンス アポクリファ いい本で読書会むきなのでみなさんぜひ読んでみてください。パフォーマンスのためのインフラ的なアプローチを知るにも、アプリケーション的なアプローチを知るにも、どっちにもいい感じです。

Discussion