見出し画像

学び放題バックエンドのRailsアプリケーションがRuby3.3にバージョンアップされ、パフォーマンスの向上が確認されました

はじめに

こんにちは!「DevEx」チームでお手伝いをしている岩崎です。今回の記事では、学び放題バックエンドで利用するRubyが3.3にアップデートされ、大きなパフォーマンス改善が確認されましたので紹介します。

学び放題のバックエンドはRailsで構築されています。すでにRuby 3.2の段階でYJITを有効にした時点でもレイテンシーの改善が見られましたが、今回 Ruby3.3にアップデートして更なる性能向上が確認できました。改善が確認された項目を一つずつ紹介していきます。

レイテンシー

以下はレイテンシーのグラフです。緑色の縦線がRuby 3.3にアップグレードされた時点を示しており、青いグラフが直近のデータ、灰色のグラフが一ヶ月前のデータとなります(p95)。

Ruby 3.3を適用した直後から、一ヶ月前と比較してレイテンシーが低下していることが確認できます。

Ruby 3.3(+YJIT)適用前後一ヶ月のレイテンシー変化及び前月比較

コンテナのメモリ消費量(Memory RSS)

続いてメモリ消費量の変化です。学び放題バックエンドはKubernetes(k8s)環境で動作しているため、pod単位でメモリ消費量を測定することができます。

Ruby 3.3(+YJIT)適用前後一ヶ月のコンテナRSS変化

色のついているグラフ・点がリリース時点の前後一ヶ月の各コンテナのメモリ消費量です。緑の縦線がRuby 3.3にアップグレード時点を示しています(線が見づらいので先ほどの図より太くしています)。

学び放題バックエンドでは平均して1日に30回ほどのデプロイがあるため、点や線が多数あって見づらいのですが、色のついた緑の線の前後で色のついたグラフの高さ(メモリ消費量)が低下していることがおわかりいただけると思います。Ruby3.2では約5GBほどを消費していましたが、3.3では外れ値を除くと3.0~3.5GBの範囲に収まっていいます。

まとめ

すでにパフォーマンス向上の報告が多数上がっているRuby 3.3 + YJITですが、学び放題バックエンドでも同様にパフォーマンスの向上が確認できました。特にメモリ消費量の低下は著しいため、社内で複数あるRailsアプリケーション全体がRuby 3.3 + YJITにアップグレードされることで、インフラ全体のメモリ使用量が大きく削減できる可能性がありそうです。

グロービスで一緒に働く仲間を募集しています!

日本発、世界をリードするEdTechカンパニーを目指すGLOBISでは、一緒に働けるエンジニアを探しています!

まずは、カジュアル面談を通して、あなたに合う組織かどうか確かめてみませんか?

https://recruiting-tech-globis.wraptas.site/


この記事が気に入ったらサポートをしてみませんか?