7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Ruby on RailsAdvent Calendar 2022

Day 23

20万人が利用しているサービスのJSONシリアライザをAlbaに置き換えた話

Posted at

TL;DR

NewRelic transactions
image.png

はじめに

株式会社KINECAでエンタメマッチングサービスを運営している@ryosk7です。
この記事はRuby on Rails Advent Calendar 2022の23日目の記事です。

Albaって?

AlbaはRuby製のJSONシリアライザです。
Ruby on Rails Advent Calendar 2022 14日目の記事にも、ちょうど作成者の@okuramasafumiさんが記事を執筆してくださってます。

Albaの特徴として、他シリアライザーよりも高速な点が挙げられます。

ベンチマーク

参考

Comparison:
               panko:      283.8 i/s
       turbostreamer:      102.9 i/s - 2.76x  (± 0.00) slower
                alba:      102.4 i/s - 2.77x  (± 0.00) slower
         alba_inline:       98.7 i/s - 2.87x  (± 0.00) slower
         jserializer:       93.3 i/s - 3.04x  (± 0.00) slower
     fast_serializer:       60.1 i/s - 4.73x  (± 0.00) slower
         blueprinter:       53.8 i/s - 5.28x  (± 0.00) slower
               rails:       37.1 i/s - 7.65x  (± 0.00) slower
            jbuilder:       37.1 i/s - 7.66x  (± 0.00) slower
           primalize:       31.2 i/s - 9.08x  (± 0.00) slower
 jsonapi_same_format:       28.3 i/s - 10.03x  (± 0.00) slower
       representable:       27.8 i/s - 10.23x  (± 0.00) slower
             jsonapi:       27.5 i/s - 10.34x  (± 0.00) slower
          simple_ams:       16.9 i/s - 16.75x  (± 0.00) slower
                 ams:        8.3 i/s - 34.36x  (± 0.00) slower

こちらの記事にも書かれていますが、pankoはCで拡張されているため、純粋なRubyで書かれているAlbaはかなり健闘しているなと感じました。

弊社では主にjbuilderを使っていますが、こうやってベンチマークでみると、差が明らかです。(現在はOjを使って多少早くしています。)

Albaの特徴は他にも、拡張性の高さや、レイアウトという機能もあるので、後日試してみようと思います。

そんな、速さに特徴のあるAlbaですが、実際に本番運用で試している記事が見当たらなかったので、サービスの中でも重たいAPIに対して、
jbuilderからAlbaに置き換えてみました。
実際にリリース後、NewRelicで計測してみたので、この記事で公開します。
現在jbuilderを使っている方、速度改善を試みている方、Albaが気になっている方の参考になればと思います。

計測

スクリーンショット 2022-12-23 15.33.59.png

結果がすごくわかりやすい!!
赤枠がリリースタイミングですが、リリースした後、大体半分くらいまで下がっています。
やはり、partialがボトルネックになっており、Albaに変えたことで改善されました。
ただし、APIの処理として巻き込まれてしまったので、NewRelic上では見辛くなってしまいました。

まとめ

Albaを導入したことにより、劇的な速度改善に繋がりました。
今回は試しに1個のAPIに絞って変更しましたが、徐々に広げていき全体的な速度改善に繋げていこうと思います。

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?