Home 技術記事 LimelightのLayer0でサーバーレスホスティングを使用して、GraphQL APIをEdgeでキャッシュする
Applications

LimelightのLayer0でサーバーレスホスティングを使用して、GraphQL APIをEdgeでキャッシュする

About The Author

Outline

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

GraphQLとは

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

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

Edgeで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は、GraphQL解析とPOSTメソッドのサポートをエッジロジック用の高性能JavaScriptベースの宣言言語EdgeJSに追加することで、GraphQL APIをネットワークエッジでキャッシュするという重要な課題を解決した。 EdgeJSを使えば、ウェブビルダーはGraphQLクエリと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は柔軟性が高く強力で、古いwhile-revalidateキーやサロゲートキーなどの最新のキャッシュ機能をサポートしている。 当社の顧客は、在庫、価格、またはコンテンツが変更されたときに、Layer0を注文およびコンテンツ管理システムに接続するために、代理キーを使用して個々の製品ページをキャッシュからクリアしている。 これにより、個々のアイテムが変更されても変更されていない他のすべてのページやAPIについて高いキャッシュヒット率を維持できる。

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

Edgioはプレミアリーグ・フットボールクラブやBYJUを含む世界最大のストリーミング企業から信頼されている。 Edgioは世界中に135以上のPoints of Presence (POP)を持っており、CDNの平均的な機能を超え、互いにデータを調整してキャッシュを温める。

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

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

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

Layer0は、Web Builderチームが開発者の生産性を向上させ、サイトのパフォーマンスを向上させ、セキュリティを向上させるのに役立つ。 Layer0は、開発ライフサイクル全体を通してエッジロジックの開発と保守を容易にし、動的コンテンツの予測プリフェッチを介して1秒未満のWebサイトを配信することができるため、開発チームが使用するCDNとなっている。

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

GraphQLのサポートとレガシーシステムとの互換性により、Edgioは従来のコンポーネントと最新のコンポーネントを混在させてGraphQLに移行する大企業にとって理想的である。