Home 技術記事 LimelightによるLayer0でのサーバーレスホスティングによるEdgeでのGraphQL APIのキャッシュ
Applications

LimelightによるLayer0でのサーバーレスホスティングによるEdgeでのGraphQL APIのキャッシュ

About The Author

Outline

GraphQLはAPIのデータを読み書きするための一般的なクエリ言語であり、ヘッドレスWebサイトへのトレンドにおいて重要な技術です。 これにより、WebビルダーはAPIレイヤーを柔軟で強力で効率的にすることができます。 しかし、開発者はネットワークエッジでGraphQL APIをキャッシュする際に課題に直面します。 このため、EdgioはGraphQLのエッジキャッシュを簡単にし、チームがサーバーレス環境でGraphQLサーバーをホストできるようにするソリューションを開発しました。 GraphQLキャッシングは、ヘッドレスおよびAPIファーストのWebアプリ市場のギャップを埋め、Layer0とLimelightが力を合わせることの価値を証明します。

GraphQLとは

GraphQLクエリ言語は従来のREST APIを改良し、開発者の間で大きな成長と採用を遂げています。 当初はFacebookでインキュベーションされ、後にオープンソース化されたGraphQLは宣言的で効率的なデータフェッチを提供し、パフォーマンスを大幅に向上させた。 さらに、クライアントとサーバー間の厳密に型指定されたスキーマにより、チームはバージョン管理の問題を発生させることなく、APIをより迅速かつ独立して反復することができます。

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

エッジでのGraphQLのキャッシングの問題

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

開発チームは、回避策をゼロから作成してGraphQLをキャッシュすることが一般的ですが、それでもキャッシュは最適ではありません。 GraphQLの管理ミスにより、キャッシュヒット率が低下する可能性があります。 しかし、適切に行えば、エッジでGraphQLをキャッシュすることで、より高速で信頼性が高く、スケーラブルなAPIが実現します。 Layer0を使用すると、この作業が簡単になります。

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

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

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

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

これをより詳細に理解するには、以下のデモをご覧ください。REST APIをGraphQLに変換し、人気のNext.jsフレームワーク、Apollo Server、Layer0を使用してエッジでキャッシュを追加する方法を説明しています。

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

チームがキャッシュヒット率を最大化できるようにするために、Layer0ほど強力なCDNは他にありません。 EdgeJSを使用すると、開発者はアプリケーション内からキャッシュを簡単に構成でき、以前はキャッシュできなかったものをキャッシュできます。

EdgeJSは柔軟で強力で、stale-while-revalidateやサロゲートキーなどの最新のキャッシング機能をサポートしています。 当社のお客様は、すでに代理キーを使用してLayer0を注文およびコンテンツ管理システムに接続し、在庫、価格、またはコンテンツが変更されたときに個々の製品ページをキャッシュから消去しています。 これにより、個々のアイテムが変更されても変更されていない他のすべてのページとAPIについて、高いキャッシュヒット率を維持できます。

さらに、このプラットフォームには、展開後に最も高いトラフィックコンテンツの自動キャッシュウォーミングも含まれています。 Layer0ネットワークは、POP間のルーティングとキャッシュをインテリジェントに調整し、キャッシュヒットの可能性を最大化します。 POPにデータがない場合は、要求がオリジンサーバに転送される前に、別のPOPからデータを要求します。 開発者は、Webサイトのパフォーマンスとキャッシュヒット率を簡単に監視するために、監視可能性と主要な指標にアクセスできます。 細分性を確保するために、プラットフォームは改善が必要なアプリケーションルートをプロアクティブに強調表示します。

Edgioは、プレミアリーグフットボールクラブやBYJUなど、世界最大のストリーミング会社から信頼されています。 Edgioは、CDNの平均的な機能を超えて、キャッシュをウォームアップするために互いにデータを調整する135 Points of Presence(POP;アクセスポイント)を世界中に持っています。

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

EdgioはGraphQLホスティングなどのサーバーレスサービスも提供している。 チームは、Layer0上のサーバーレス環境でホストされているGraphQLサーバーにランタイム呼び出しを管理して送信できるため、インフラストラクチャとスケールに関する心配がなくなります。

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

Layer0を使用すると、Webビルダーチームは開発者の生産性を高め、サイトのパフォーマンスを向上させ、セキュリティを向上させることができます。 Layer0を使用すると、開発ライフサイクル全体にわたってエッジロジックを開発および維持し、動的コンテンツの予測プリフェッチによって秒未満のWebサイトを配信することが容易になり、開発チームが使用するCDNになります。

Layer0にはすべての開発が含まれており、DevOpsチームは、ホスティング、サーバーレス、可観測性、RUM、 およびCI/CDの統合。 チームは、Layer0を柔軟に活用できます。 これを使用して、GraphQL APIをキャッシュしたり、サーバーレス環境でGraphQLサーバーを実行したり、ヘッドレスアプリケーション全体をホストしたりできます。 Layer0には強力なルーティングオプションもあり、チームはレガシーアプリケーションを段階的にヘッドレスアーキテクチャまたはAPIファーストアーキテクチャに移行できます。

GraphQLのサポートとレガシーシステムとの互換性により、Edgioは従来のコンポーネントと最新のコンポーネントを組み合わせてGraphQLに移行する大企業に最適です。