ネットサービス

「Amazon対抗馬」ともいわれるShopifyの効率的なシステム移行方法とは?


手軽にオンランショップを開設できる「Shopify」は、Amazonを打ち負かすことができる「真のプラットフォーム」と指摘されるほど、多様性にあふれたエコシステムを持っています。そんなShopifyが新システムへの移行により、各オンラインショップのトップページである「ストアフロント」の応答速度を4~6倍高速化することに成功したと報告しており、その移行過程をShopifyのエンジニアであるMaxime Vaillancourt氏が公開しています。

How Shopify Reduced Storefront Response Times with a Rewrite – Shopify Engineering
https://engineering.shopify.com/blogs/engineering/how-shopify-reduced-storefront-response-times-rewrite

Shopifyにとってストアフロントのレスポンスタイムをミリ秒単位で短縮することは重要な課題であるとのこと。レスポンスが遅いと、SEOなどに悪影響を与えるほか、売上の低下につながる可能性もあります。15年以上前に開発されたストアフロントの実装は、ストアフロント以外のサービスが稼働するRuby on Railsのシステムに同居していましたが、Shopifyのストアフロントは他のサービスと比較してパフォーマンス要件がはるかに厳しく、他サービスと同じシステムを利用するには性質上の違いが大きいと気付いたとVaillancourt氏は語っています。


そこでShopifyでは、従来のシステムはチェックアウト、管理、APIトラフィックの処理に専念させ、ストアフロントのトラフィックはゼロから設計した新しい実装で処理することに。新しい実装では読み取り専用のレプリカサーバーを用意することで、書き込みを行うプライマリサーバーの負荷を軽減。また、開発者が利用できるデバッグツール、シンプルなオンボード設定、ドキュメントなどの整備や、セール時の急激なアクセス増に耐えるため、高負荷時におけるシステム復旧能力とキャパシティの向上に取り組んでいるとのこと。


新しい実装を導入する前に、新しい実装が従来の実装と同じように動作するかの確認が必要。そこで、両方の実装の出力を比較することができるメカニズムを構築したとのこと。検証は本番環境のトラフィックを用いて行われており、クライアントからのリクエストをLuaによるNGINXのカスタムルーティングモジュールで中継し、、新しい実装と従来の実装にそれぞれリクエストを送信。


リクエストに対する旧環境からのレスポンスはカスタムルーティングモジュールで中継され、新環境へと送信されます。新環境内の検証メカニズムは受け取った旧環境のレスポンスと新環境のレスポンスを比較し、検証結果に応じて正もしくは負の値を返答するとのこと。


新環境の検証が十分に行われたら、新しい実装を使用してストアフロントをレンダリングするテストを実施したとVaillancourt氏。クライアントからのリクエストは、先ほどの検証時と同じように両方の実装に送信されますが、レンダリングのテストにおいては、ルーティングモジュールは受け取ったリクエストと類似したリクエストに対する前回の検証結果に基づいて、リクエストの送信先を決定するとのこと。


つまり、検証アルゴリズムの結果が良好な種類のリクエストは新しい実装に送信され……


そうでないリクエストは従来の実装に送信されます。検証結果をもとに新しい実装の改善を重ねていくことで、検証を行いながら、従来の実装から新しい実装へと徐々に移行することができるというわけです。


新しい実装では、SQLクエリやメモリ割り当ての最適化によるパフォーマンスの向上が行われており、新しい実装によって提供されるリクエストの平均サーバー応答時間は、従来の実装よりも4倍から6倍速くなったとのこと。また、新しい実装がレンダリングに失敗した場合は従来の実装にフォールバックされるため、安全性も考慮されています。

Shopifyはストアフロントの実装を置き換える過程で多くのことを学んだとのこと。「私たちは将来に向けて、可能な限り優れた開発者体験を提供しながら、ますますシステムを高速化する方法を模索し続けています」とVaillancourt氏はコメントしています。

この記事のタイトルとURLをコピーする

・関連記事
無料で手軽にオンラインショップを開設できる「Shopify」 - GIGAZINE

世界最大のECサイト・Amazonに反旗を翻す「反Amazon同盟」とは? - GIGAZINE

最強の捕食者Amazonを打ち負かすのは多様性を持った「真のプラットフォーム」だという指摘 - GIGAZINE

Amazon打倒のカギとも呼ばれる「Shopify」が新型コロナ以降も従業員の自宅作業を許可 - GIGAZINE

in ソフトウェア,   ネットサービス, Posted by log1n_yi

You can read the machine translated English article here.