Fast JSON API serialization with Ruby on Rails

by Shishir Kakaraddi, Srinivas Raghunathan, Adam Gross and Ryan Johnston

We are pleased to announce the open source release of Fast JSON API gem geared towards Ruby on Rails applications.

Introduction

Fast JSONAPI is aimed at providing all the major functionality that Active Model Serializer (AMS) provides, along with an emphasis on speed and performance, by meeting a benchmark requirement to be 25 times faster than AMS. The gem enforces performance testing as a discipline.

Active Model Serializer is a great gem and Fast JSON API was inspired by it when it comes to declaration syntax and features. But, AMS begins to slow down when a model has one or more relationships. Compound document, AKA sideloading, on those models makes AMS slow down further. Throw in a need for infinite scroll on the UI, and AMS’s slowness starts becoming visible to users.

Why optimize serialization?

JSON API serialization is often one of the slowest parts of many well implemented Rails API’s. Why not provide all the major functionality that AMS provides and with great speed?

Features:

  • Declaration syntax similar to Active Model Serializer
  • Support for belongs_to, has_many and has_one
  • Support for compound documents (included)
  • Optimized serialization of compound documents
  • Caching
  • Instrumentation with Skylight integration (optional)

How do you write a serializer using Fast JSONAPI?

We like the familiar way Active Model Serializers lets us declare our serializers. Declaration syntax of fast_jsonapi is similar to AMS.

class MovieSerializer
include FastJsonapi::ObjectSerializer
 attributes :name, :year
has_many :actors
belongs_to :owner, record_type: :user
belongs_to :movie_type
end

How fast is it compared to Active Model Serializers?

Performance tests indicates a 25–40x speed gain over AMS, essentially making serialization time negligible on even fairly complex models. Performance gain is significant when the number of serialized records increases.

Difference in performance

Don’t believe us? You can run the benchmark tests for yourself. Refer to readme.

Dependency

JSON API is the anti-bikeshedding tool.

Future Work

We plan to add more features to the gem. We welcome suggestions, improvements, corrections and additional tests.


Fast JSON API serialization with Ruby on Rails was originally published in Netflix TechBlog on Medium, where people are continuing the conversation by highlighting and responding to this story.

Source

https://medium.com/netflix-techblog/fast-json-api-serialization-with-ruby-on-rails-7c06578ad17f

Categories: Ruby on Rails
vinova: