BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Netflixは迅速なアプリケーション開発のためにGraphQLマイクロサービスを擁した

Netflixは迅速なアプリケーション開発のためにGraphQLマイクロサービスを擁した

原文(投稿日:2021/03/03)へのリンク

Netflixエンジニアリングは先頃、どのようにNetflixが迅速なアプリケーション開発のためにGraphQLマイクロサービスを擁したかを詳述したブログ投稿を公開した。この投稿では、NetflixのシニアソフトウェアエンジニアであるDane Avilla氏が、プロセスにおける重要な学習と、GraphQLが概念実証の開発にどのように役立つかについて説明する。

Avilla氏は、GraphQLスキーマを作成するための2つのアプローチに注目している。1つの方法では、組織全体の構造化データをナビゲートするための単一のエントリポイントとしてGraphQLを使用する (「1つのグラフからすべてを支配する」)。もう1つのオプションは、CRUDアプリケーションを構築するための強化されたAPI仕様としてのみGraphQLを使用することだ。Netflixは、迅速なアプリケーション開発作業のために後者のアプローチを使用した:

限られた初期要件とアドホック分散チーム (これまでコラボレーションの履歴がない) で4〜6週間にわたって内部アプリの実装が成功したことで、Netflix Studio全体に大きな関心が集まりました。Netflix内の他のチームは、GraphQLマイクロサービスアプローチ (...) が、これまでRESTを使用していた内部CRUDツールの実行可能なソリューションであると気づきました。

これらのマイクロサービスをより簡単に実装するために、Netflixのエンジニアは、Graphileの上にカスタムDockerイメージを構築して標準化した。Graphileは、PostgreSQLとGraphQLを中心に、堅牢でパフォーマンスが高く、拡張可能なアプリケーションを迅速に構築するためのツールセットだ。Graphileを使用すると、NetflixのエンジニアはPostgreSQLデータセットをAPIとしてすばやく公開できた。Avilla氏は説明している:

Dockerを使用して、軽量のスタンドアロンコンテナを定義しました。これにより、Graphileライブラリとそのサポートコードを、追加のコーディングを必要とせずにNetflixで使用できる自己完結型のバンドルにパッケージ化できます。定義されたDockerベースイメージをプルダウンし、適切なデータベース接続文字列で実行するだけです。このアプローチは非常に成功し、Graphileの使用に関するいくつかのインサイトをもたらしました。

1つのインサイトは、データベースビューを「APIレイヤー」として使用することだ。ビューを使用すると、柔軟性を維持して、既存のGraphQLスキーマを変更せずにテーブルを変更できるようになる。また、ビューはフィールドの基本的なフォーマットを行うことができる。もう1つのインサイトは、PostgreSQLの複合型を使用することだ。デフォルトでは、Graphileはさまざまな非スカラータイプをGraphQL JSONタイプとして公開する。PostgreSQLの複合型とコメント内のアノテーションに対するGraphileのサポートを使用すると、強く型付けされたGraphQLスキーマを生成できる。これにより、順次、アプリケーション開発がさらに加速される。

3番目のインサイトは、開発プロセスを中心に展開することだ。Avilla氏によると、最初に自動生成されたGraphQLクエリとミューテーションへの「フルアクセス」をクライアントに許可すると、UIの動作がまだ確定されていない場合でも、開発の柔軟性が向上することがわかった。その後、チームが必要なAPIを固めたときに、スキーマをロックダウンして、必要な機能のみを公開することができた。また、このフェーズでは、インデックス、非正規化、クラスタリングなどを使用して、残りのDBクエリを最適化できる。

Netflixのエンジニアは現在、Graphileで生成されたスキーマへのカスタムクエリとミューテーションの追加をサポートしていない。ただし、Graphileの makeExtendSchemaPlugin を使用してこれを実現できる。これにより、カスタムタイプ、クエリ、およびミューテーションをGraphileによって生成されたスキーマにマージできる。

GraphQLは、API用のオープンソースのデータクエリおよび操作言語であり、既存のデータでクエリを実行するためのランタイムだ。GraphQLは、2015年に一般公開される前に2012年にFacebookによって内部的に開発された。これは、従来のREST APIの代替として近年注目を集めている。この主な前提は、フロントエンド開発者の柔軟性を高めることだ。フロントエンド開発者は、特定の画面に必要な正確なデータセットを1回の操作でクエリできる。

この記事に星をつける

おすすめ度
スタイル

BT