GraphQLを用いたECサイトにおけるパフォーマンス改善
JSConf JP 2019
澤井宣彦 @ FiNC
背景
2015 Rails erbで作った
ページ遷移が長い
2019 GraphQL React でリニューアル
Releaseがシビアでパフォーマンスを犠牲にした
パフォーマンス改善プロジェクト
フロントのチューニング
GraphQLのチューニング
技術構成
フロント React TypeScript
バックエンド Rails apiサーバー
SSR Node.js
GraphQL
フロントにAPIの自由度を持たせたかった
Schema定義
API document
introspection
計測指標の導入
実機テスト
Chrome Audit
PageSpeed Insights
フロントの改善
ページごとに必要なCSSを読み込む
react-helmet
テキスト圧縮(gzip)
viewportの内外でクエリを分割
サーバーの改善
Datadog
ref: paypal engineers resolver best practice
GraphQLはn 1のDBアクセスが発生しがち
batch-loader を使う
フロントの画面の描画以上にサーバーが処理をしている
Over-fetching
pagingがない配列のリクエスト
relay-connection-types-spec を使用
不要なリソースへのリクエスト
Fragment
Fragmentはqueryの部分定義ができるので、コンポーネントに紐付けられる
Collocation
Fragmentを合成して1つのqueryに合成すること
今後
cacheの活用を検討
persisted query