GraphQLおよびNoSQLを使用したコンテナ化されたビデオ・アプリケーションのデプロイ

ビデオ・オンデマンド・ストリーミング・アプリケーションを検討します。世界中のさまざまな番組の視聴者をストリーミングしています。ショーには複数のシーズンがあり、1つのシーズンに複数のエピソードを含めることができます。この顧客活動を追跡するには、最新の永続的なメタデータ・ストアが必要です。

一般的に、顧客は、視聴するエピソード、エピソード当たりのウォッチ時間、視聴したシーズンの合計数などを追跡することに興味があります。また、ストリーミング・アプリケーションの視聴を中断した場所からストリーミングを開始したいと考えています。結局のところ、最初からやり直したいのは誰ですか?

このアーキテクチャでは、様々なOracle Cloud Infrastructureサービスを使用する複数のマイクロサービスで構成されるビデオ・オンデマンド・ストリーミング・アプリケーションについて説明します。このアーキテクチャでは、マイクロサービスを追跡するアクティビティに重点を置いています。ストリーミング・アプリケーションのバックエンドは、データを収集して、最も人気のあるショーやショー当たりの平均監視時間などのレポートを生成します。



アーキテクチャ

このアプリケーションでは、アプリケーションのブレインを表す3層アーキテクチャを使用します。これらのサービスの機能により、可用性が高くスケーラブルでセキュアなサーバーレス本番アプリケーションを構築できます。アプリケーションでは数千のサーバーを使用できますが、サーバーレス・パラダイムを活用することで、1つのサーバーを管理する必要はありません。

最近、RESTはWeb APIの設計の標準になっています。RESTアーキテクチャ・スタイルでは、ステートレス・サーバー上で実行でき、リソースへの構造化されたアクセスが提供されます。しかし、REST APIは、モバイル利用の増加、低電力デバイス、スロッピー・ネットワークなど、クライアントにアクセスするクライアントの急速に変化する要件に対応する際に柔軟性が低いことが示されています。

このようなアプリケーションでは、ネットワーク経由で転送されるデータを最小限に抑え、ユーザーがAPIを直接使用して簡単にデータをクエリできるソリューションを探しました。

GraphQLは、様々な言語でコーディングできるAPI用のオープンソース・データ問合せおよび操作言語です。GraphQLは、API内のデータの完全でわかりやすい説明を提供し、既存のデータで問合せを実行するためのランタイム機能を提供します。GraphQLはデータベース・テクノロジと混同されることが多いですが、GraphQLは特定のデータベースまたはストレージ・エンジンに関連付けられるのではなく、既存のデータによってバックアップされます。

最新のアプリケーション開発者は、データをいつどのように永続化するかを決定する際に多くの選択肢があります。近年、NoSQLデータベースはますます普及しつつあり、現在では、すべてのアプリケーション開発者が自由に利用できる必要のあるツールの1つと見なされています。「試行された真の」リレーショナル・データベースは、データの正規化、厳格な一貫性、データにアクセスするための任意に複雑な問合せなどのクラシック・アプリケーションの問題を解決するのに優れていますが、NoSQLデータベースは異なるアプローチをとっています。

コンテナ化されたアプリケーションの実行には、仮想マシンのインスタンス化、コンテナ・イメージを実行するためのコンポーネントのインストール(およびソフトウェアやオペレーティング・システムの更新を含むそれらをサポートするためのすべての依存関係)、およびアプリケーションが最適に実行されていること、使用可能であること、および妥協のないことを確認するためのアプリケーションの監視から、かなりのオーバーヘッドが必要になる場合があります。

開発者は、Oracle NoSQL Database Cloud Serviceに接続し、多数の言語で使用可能なNoSQL SDKを使用してNoSQL表を操作できます。Oracle Cloud Infrastructure Container Serviceは完全管理型のサービスで、GraphQLアプリケーションのデプロイメントにKubernetesなどのコンテナ・オーケストレーション・プラットフォームを必要としないコンテナ化されたワークロードに適しています。OCI Kubernetes Engine (OKE)は、開発チームがクラウドネイティブ・アプリケーションを確実に構築、デプロイおよび管理する場合に使用します。

Oracle Cloud Infrastructure API Gatewayでは、ネットワーク内からアクセス可能なプライベート・エンドポイントとともに、インターネット・トラフィックを受け入れる場合にパブリックIPアドレスで公開できます。エンドポイントは、API検証、リクエストとレスポンスの変換、CORS、認証/認可およびリクエスト制限をサポートします。

これにより、お客様はインフラストラクチャをデプロイおよび管理するのではなく、アプリケーションへの付加価値に注力できるサーバーレス・エクスペリエンスが提供されます。

Oracle NoSQL Database Cloud Serviceを使用する利点の一部を次に示します:

  • データ・モデリング: Oracle NoSQL Database Cloud Serviceでは、スキーマベース・モデリングとスキーマレス(JSON)モデリングの両方をサポートしています。GraphQLベースのアプリケーションを開発するための直感的な方法を提供します。GraphQLスキーマは、ネストされたデータ構造を使用して設計され、開発者がNoSQLデータ・モデリングを実行するときに使用するものと一致します。ネイティブの選択
  • 迅速な開発ライフサイクル: 開発者がアプリケーションを記述します。Oracleはデータベース管理、ストレージ管理、高可用性およびスケーラビリティを実行し、開発者が高パフォーマンスのアプリケーションを提供することに集中するのに役立ちます。開発者は、GraphQLマイクロサービスのクラスタまたはデータベースではなく、表または表階層をデプロイおよび管理します。
  • Identity Access and Management: Oracle NoSQL Database Cloud Serviceは、Oracle Cloud Infrastructure Identity and Access Managementを使用して、Oracle Cloudへのセキュアなアクセスを提供します。Oracle Cloud Infrastructure Identity and Access Managementでは、動的グループを作成し、Oracle NoSQL Database Cloud Service表の調査、読取り、使用または管理の権限を付与できます。
  • 冗長性でのデータの安全性: Oracle NoSQL Database Cloud Serviceは、複数の可用性ドメイン(AD)またはフォルト・ドメイン(FD)にまたがるデータを単一のADリージョンに格納します。ADまたはFDが使用できなくなりますが、ユーザー・データには、別のADまたはFDからはアクセスできます。リージョン・エンドポイントへのリクエストはAD/FDに固有ではないため、AD/FDの使用不可は透過的です。
  • High Performanceおよび予測可能性: Oracle NoSQL Database Cloud Serviceは、大規模な高パフォーマンスを提供することで、Oracle Cloud Infrastructureの最新のコンポーネント・テクノロジを利用します。開発者には、スループットやストレージの要件が拡大しても、アプリケーションが予測可能なレイテンシでデータを返すことがわかっています。
  • ゼロ管理での完全管理: 開発者がデータ・サーバーや基礎となるインフラストラクチャおよびセキュリティを管理する必要はありません。Oracleによりハードウェアとソフトウェアが保守されるため、開発者はアプリケーションの構築に集中できます。
  • オンデマンドのスループットとストレージ・プロビジョニング: Oracle NoSQL Database Cloud Serviceは、予測可能な低レイテンシでアプリケーションのスループット・パフォーマンス要件を満たすように拡張できます。ビジネスの定期的に変動するにつれてワークロードが増えるため、アプリケーションはプロビジョニングされるスループットを拡大して一貫性のあるユーザー・エクスペリエンスを維持できます。ワークロードが減少すると、同じアプリケーションでプロビジョニングされたスループットを縮小できるため、操作費用を抑えることができます。オンデマンド容量では、表ごとに読取りまたは書込み容量をプロビジョニングする必要はありません。実際に消費された読取りユニットと書込みユニットに対してのみ支払います。

次の図は、このリファレンス・アーキテクチャを示しています。



コンテナ化- ビデオ- アプリケーション-graphql-nosql-architecture.zip

このアーキテクチャには、次のコンポーネントがあります。

  • Tenancy

    テナンシは、Oracle Cloud Infrastructureのサインアップ時にOracle Cloud内でOracleによって設定される、セキュアで分離されたパーティションです。テナンシ内のOracle Cloudでリソースを作成、編成および管理できます。

    テナンシは、会社または組織と同義です。通常、会社は1つのテナンシを持ち、そのテナンシ内の組織構造を反映します。通常、1つのテナンシは1つのサブスクリプションに関連付けられ、1つのサブスクリプションには通常、1つのテナンシのみが含まれます。

  • リージョン

    Oracle Cloud Infrastructureリージョンとは、可用性ドメインと呼ばれる1つ以上のデータ・センターを含む、ローカライズされた地理的領域です。リージョンは他のリージョンから独立し、長距離の場合は(複数の国または大陸にまたがって)分離できます。

  • コンパートメント

    コンパートメントは、Oracle Cloud Infrastructureテナンシ内のクロスリージョン論理パーティションです。Oracle Cloudでのリソースの編成、リソースへのアクセスの制御、および使用割当ての設定には、コンパートメントを使用します。特定のコンパートメント内のリソースへのアクセスを制御するには、誰がリソースにアクセスできるか、どのアクションを実行できるかを指定するポリシーを定義します。

  • 可用性ドメイン

    可用性ドメインは、リージョン内の独立したスタンドアロン・データ・センターです。各可用性ドメイン内の物理リソースは、他の可用性ドメイン内のリソースから分離されているため、フォルト・トレランスが提供されます。可用性ドメインどうしは、電力や冷却、内部可用性ドメイン・ネットワークなどのインフラを共有しません。そのため、ある可用性ドメインでの障害は、リージョン内の他の可用性ドメインには影響しません。

  • フォルト・ドメイン

    フォルト・ドメインは、可用性ドメイン内のハードウェアおよびインフラストラクチャのグループです。各アベイラビリティ・ドメインに3つのフォルト・ドメインがあり、電源とハードウェアは独立しています。複数のフォルト・ドメインにリソースを分散する場合、アプリケーションは、物理サーバーの障害、システム・メンテナンスおよびフォルト・ドメイン内の電源障害を許容できます。

  • 仮想クラウド・ネットワーク(VCN)およびサブネット

    VCNは、Oracle Cloud Infrastructureリージョンで設定する、カスタマイズ可能なソフトウェア定義のネットワークです。従来のデータ・センター・ネットワークと同様に、VCNを使用するとネットワーク環境を制御できます。VCNには重複しない複数のCIDRブロックを含めることができ、VCNの作成後にそれらを変更できます。VCNをサブネットにセグメント化して、そのスコープをリージョンまたは可用性ドメインに設定できます。各サブネットは、VCN内の他のサブネットと重複しない連続した範囲のアドレスで構成されます。サブネットのサイズは、作成後に変更できます。サブネットはパブリックにもプライベートにもできます。

  • セキュリティ・リスト

    サブネットごとに、サブネット内外で許可する必要があるトラフィックのソース、宛先およびタイプを指定するセキュリティ・ルールを作成できます。

  • サービス・ゲートウェイ

    サービス・ゲートウェイは、VCNからOracle NoSQL Database Cloud Serviceなどの他のサービスへのアクセスを提供します。The traffic from the VCN to the Oracle service travels over the Oracle network fabric and never traverses the internet.

  • インターネット・ゲートウェイ

    インターネット・ゲートウェイは、VCN内のパブリック・サブネットとパブリック・インターネット間のトラフィックを許可します。

  • APIゲートウェイ

    Oracle API Gatewayでは、ネットワーク内からアクセスでき、必要に応じてパブリック・インターネットに公開できるプライベート・エンドポイントとともにAPIを公開できます。エンドポイントは、API検証、リクエストとレスポンスの変換、CORS、認証と認可およびリクエスト制限をサポートします。

  • アイデンティティおよびアクセス管理(IAM)

    Oracle Cloud Infrastructure Identity and Access Management(IAM)は、Oracle Cloud Infrastructure(OCI)およびOracle Cloud Applicationsのアクセス・コントロール・プレーンです。IAM APIおよびユーザー・インタフェースを使用すると、アイデンティティ・ドメインおよびアイデンティティ・ドメイン内のリソースを管理できます。各OCI IAMアイデンティティ・ドメインは、スタンドアロンのアイデンティティおよびアクセス管理ソリューション、または異なるユーザー集団を表します。

  • ポリシー

    Oracle Cloud Infrastructure Identity and Access Managementポリシーでは、誰がどのリソースにどのようにアクセスできるかを指定します。アクセス権はグループ・レベルおよびコンパートメント・レベルで付与されます。つまり、特定のコンパートメント内またはテナンシへの特定のタイプのアクセス権をグループに付与するポリシーを作成できます。

  • NoSQLデータベース

    Oracle NoSQL Database Cloud Serviceを使用すると、開発者はドキュメント、列、およびキーバリューのデータベース・モデルを使用してアプリケーションを簡単に構築でき、高可用性のためのデータ・レプリケーションにより、予測可能な1桁ミリ秒のレスポンス時間を提供します。このサービスは、オンプレミスのOracle NoSQL Databaseとの100%の互換性を含む、オンデマンドとプロビジョニング済の両方の容量モードに対して、ACIDトランザクション、サーバーレス・スケーリング、包括的なセキュリティ、および低い従量課金制の料金を提供します。

  • Oracle Cloud Infrastructureコンテナ・サービス

    Oracle Cloud Infrastructure Container Serviceは、サーバーを管理することなく、コンテナを即時に実行できるサーバーレス・コンピュート・サービスです。

  • OCI Kubernetes Engine

    Oracle Cloud Infrastructure Kubernetes Engine (Kubernetes EngineまたはOKE)は、コンテナ化されたアプリケーションをクラウドにデプロイするために使用できる、完全に管理されたスケーラブルで可用性の高いサービスです。アプリケーションで必要なコンピュート・リソースを指定すると、KubernetesエンジンがそれらをOracle Cloud Infrastructureの既存のテナンシにプロビジョニングします。OKEは、Kubernetesを使用して、ホストのクラスタにわたるコンテナ化されたアプリケーションのデプロイメント、スケーリングおよび管理を自動化します。

レコメンデーション

次の推奨事項を開始点として使用します。お客様の要件は、ここで説明するアーキテクチャとは異なる場合があります。
  • APIゲートウェイ

    APIゲートウェイを使用して、次のような初期レベルのスクリーニングおよび使用制御を提供できます:

    • サービス認証および認可
    • レート制限などのサービス制御
    • サービス利用分析の取得

    APIゲートウェイ(ファイアウォールやロード・バランサではない)は、GraphQL機能によって満たされないエンドポイントを正しい場所に誘導できるように、ソリューション対応のルーティングを実行する必要があります。バックエンド・ソリューションでサポートされている最大パフォーマンス機能と、1人のサービス・ユーザーのピーク資格の両方に基づいて、合理的なレート制限を考慮する必要があります。

考慮事項

このリファレンス・アーキテクチャをデプロイする場合は、次の点を考慮してください。

  • セキュリティ

    APIゲートウェイでアプリケーション・レベルのセキュリティに対処する必要があります。@authなどのGraphQLディレクティブを使用して、ファイングレインGraphQL固有のセキュリティ(属性レベルのアクセスなど)に対処できます。

デプロイ

このアーキテクチャをデプロイするには、このライブ・ラボのアクティビティ・トラッキング・アプリケーション・デプロイメントの手順に従います:

詳細の参照

GraphQLおよびOracle NoSQL Database Cloud Serviceを使用したコンテナ化されたビデオ・アプリケーションのデプロイについてさらに学習します。

次の追加リソースを確認します。

Oracle Cloud Infrastructureリソース:

確認

文書作成者:

  • Dario Vega
  • Michael Brey