×

Layer0 by Limelightのサーバーレスホスティングを用いてGraphQL APIをエッジでキャッシュ

Lauren Bradley

2021/12/13

Layer0 by Limelightのサーバーレスホスティングを用いてGraphQL APIをエッジでキャッシュ

 

Layer0 by Limelightのサーバーレスホスティングを用いてGraphQL APIをエッジでキャッシュし、パフォーマンス向上とオリジンでのトラフィック削減を実現します。Cookie、認証、URLパターン、HTTPヘッダをベースにした強力なカスタムキャッシュロジックを作成できます。

 

GraphQLは、APIでデータを読み込んだり変更したりするための人気のクエリ言語であり、ヘッドレスウェブサイトという最近のトレンドにおける重要な技術です。GraphQLによって、ウェブ構築者は柔軟、強力、かつ効率的なAPIレイヤーを構築することができます。しかし開発者が今、ネットワークエッジでGraphQL APIをキャッシュしようとすると、課題に直面します。Layer0 by Limelightはこれを解決するために、GraphQLをエッジでキャッシングするソリューションを開発し、同時に開発チームがサーバーレス環境でGraphQLサーバーをホストすることもできるようにしました。GraphQLのキャッシングは、ヘッドレス(およびAPIファースト)なウェブアプリケーション市場におけるギャップを埋め、Layer0とLimelightの価値を証明しています。

 

GraphQLとは

 

GraphQLは従来のREST APIを改良したクエリ言語で、開発者の間で急速に人気が高まり、採用が進んでいます。Facebookで開発された後、オープンソース化されたGraphQLは、データの過剰な先読みを減らし、パフォーマンスを向上させます。また、クライアントとサーバーの間で柔軟かつ強力に型付けされたAPIを定義することで、開発チームはバージョン管理に頭を悩ませることなく、APIを迅速に反復することが可能になります。

 

GraphQLは、あらゆるバックエンドフレームワークやプログラミング言語と組み合わせて使用することができます。このメリットと強力なツール(強い型付けやイントロスペクションの組み込みサポートなど)の組み合わせにより、GraphQLはTwitterやAirbnbなどのヘッドレス(またはAPIファースト)アーキテクチャを使用する企業や組織の開発者に特に人気があります。毎年行われる JS 調査では、GraphQLは他のどのデータレイヤーソリューションよりも高い認知度(98%)、満足度(94%)、関心度(87%)を獲得しています。

 

エッジでのGraphQLを使ったキャッシュの問題

 

従来のCDNやキャッシュソフトウェアはREST APIを中心に構築されており、HTTP GETリクエストのみがキャッシュ可能で、キャッシュキーはREST URLから導き出す構造になっています。しかし残念ながら、より複雑なHTTP POST形式を使用するGraphQLでは、キャッシュ可能性とキャッシュキーの決定にはHTTPボディが必要です。スイッチを切り替えるようにHTTP POSTをキャッシュできればいいのですが、そう簡単ではありません。GraphQLをキャッシュするには、CDNがGraphQL形式をパースして理解しなければなりませんが、通常のCDNはそれを行うことができません。その結果、GraphQLのパフォーマンス向上は開発者にとって難しい課題となります。

 

多くの開発チームがGraphQLをキャッシュするためにゼロから回避策を構築することに時間を費やしていますが、それでもキャッシュを構築するには最適ではありません。GraphQLの管理を誤ると、キャッシュのヒット率が低くなることがあります。しかし正しい方法で行えば、エッジでのGraphQLのキャッシングによって、より速く、より信頼性の高い、スケーラブルなAPIを実現することにつながります。Layer0はこれを簡単に実現できるようにしました。

 

Layer0がネットワークエッジでのキャッシュの課題を解決

 

Layer0はエッジでのGraphQL APIのキャッシングを完全にサポートし、パフォーマンスの向上とオリジンでのトラフィックを削減します。Layer0は、エッジロジックのための高性能なJavaScriptベースの宣言型言語であるEdgeJSに、GraphQLのパースとPOSTメソッドのサポートを追加することにより、ネットワークエッジでのGraphQL APIのキャッシュという重要な課題を解決しています。ウェブ制作者はEdgeJSを使用して、GraphQLクエリのプロパティとCookieや認証などのHTTPヘッダーの両方に基づいて、強力なカスタムキャッシュロジックを作成することができます。

 

Layer0のEdgeJSを使えば、GraphQLのレスポンスからeCommerce APIの商品IDなどの情報をキャッシュすることができます。また、リクエストヘッダに埋め込まれた言語、通貨、パーソナライゼーション設定などの属性をキャッシュすることも可能です。これらは、GraphQLに移行されていないスタック内の他の非GraphQLコンポーネントによって定義されている可能性があります。

 

キャッシュされた後、Layer0 はキャッシュされた各レスポンスにサロゲートキーを割り当てることにより、エッジから個々のクエリまたはクエリコレクションのパージを行う機能を提供します。たとえばeコマースアプリケーションでは、開発者はEdgeJSを使用して商品ID、商品カテゴリ、またはクエリ内のその他の商品属性によって選択的にキャッシュをパージする機能を、Layer0のコンソールまたはAPI経由でチームに提供することができます。

 

下のデモビデオでは、人気の高いNext.jsフレームワーク、Apollo Server、Layer0を使用してREST APIをGraphQLに変換し、エッジにキャッシュを追加する方法を説明しています。

 

人気の高いNext.jsフレームワーク、Apollo Server、Layer0を使用してREST APIをGraphQLに変換し、エッジにキャッシュを追加する方法

 

 

キャッシュヒット率100%を達成

 

Layer0ほど、キャッシュヒット率を最大化するために尽力しているCDNは他にないでしょう。EdgeJSは、開発者がアプリケーション内からキャッシュを簡単にできるようにし、これまでキャッシュできなかったものをキャッシュできるようにします。

 

EdgeJSはStale-While-Revalidateやサロゲートキーなどの最新のキャッシュ機能をサポートしており、柔軟かつ強力です。Layer0のお客様はすでにサロゲートキーを使ってLayer0を注文システムやコンテンツ管理システムに接続し、在庫や価格、コンテンツが変更されたときに個々の商品ページがキャッシュからクリアされるように構成しています。これにより、個々の商品が変更されたときに、変更されていない他のすべてのページとAPIのキャッシュヒット率を高く維持することができます。

 

さらに、デプロイ後にトラフィックの多いコンテンツについて自動的にキャッシュをウォームアップする機能も備えています。Layer0ネットワークは、キャッシュヒットの可能性を最大化するために、POP間のルーティングとキャッシングをインテリジェントに調整します。あるPOPにデータがない場合、リクエストがオリジンサーバーに転送される前に、他のPOPにパフォーマンスよくリクエストされます。ウェブサイトのパフォーマンスとキャッシュヒット率を簡単に監視するために、開発者は観測可能な主要メトリクスにアクセスすることができます。さらにこのプラットフォームは、改善が必要なアプリケーションルートを積極的に表示します。

 

Layer0のGraphQLキャッシングはライムライトのプライベートグローバルバックボーンによって支えられています。ライムライトネットワークスは、プレミアリーグフットボールクラブやDisney BYJUなど、世界最大のストリーミング企業からの信頼を得ています。ライムライトは世界中に135以上のPOP(Point of Presence:大規模配信拠点)を持ち、CDNの平均的な機能を超えて、相互にデータを調整し、キャッシュをウォームアップします。

 

GraphQLのサーバーレスホスティング

 

Layer0では、GraphQLホスティングを含むサーバーレスサービスも提供しています。チームはLayer0上のサーバーレス環境でホスティングされたGraphQLサーバーへのランタイムコールを管理・送信することができ、インフラやスケールに関する心配を解消することができます。

 

Layer0で生産性、パフォーマンス、セキュリティを向上

 

Layer0は、ウェブ構築者チームが開発者の生産性を高め、サイトパフォーマンスを向上させ、セキュリティを改善することを支援します。Layer0は、開発ライフサイクルを通じてエッジロジックの開発と保守を容易にし、動的コンテンツの予測型プリフェッチによりウェブサイトの読み込みを1秒未満にできるため、開発チームが好んで使用するCDNとなっています。

 

Layer0には、ホスティング、サーバーレス、オブザーバビリティ、RUM、CI/CDとの統合など、開発チームやDevOpsチームがヘッドレスやJamstackアーキテクチャを実装するために必要なものがすべて含まれています。チームは、GraphQL APIのキャッシュ、サーバーレス環境でのGraphQLサーバーの実行、あるいはヘッドレスアプリケーション全体のホスティングなど、Layer0をどのように活用するかを柔軟に選択できます。またLayer0には強力なルーティングオプションがあり、レガシーアプリケーションをヘッドレスまたはAPIファーストのアーキテクチャに段階的に移行することができます。

 

Layer0はGraphQLをサポートし、従来のシステムとも互換性があるため、従来のコンポーネントと最新のコンポーネントが混在する大企業がGraphQLに移行する際に理想的です。

 

さらに詳細をお知りになりたい場合は下記にてご連絡ください。

お問い合わせ : https://www.limelightnetworks.jp/email/