ノート:

スケーラブルなクラウド・ネイティブ・フローを使用したOracle Cloud Infrastructure Object Storageでのファイルの処理

イントロダクション

アプリケーションでは、多くの場合、大量のファイルを処理する必要があります。これまで、これはバッチ形式で行われていましたが、新しいテクノロジとクラウドの登場により、多くのシリアル・プロセスをパラレル・プロセスに変換できるようになりました。メッセージ・キュー、Kubernetesクラスタおよびイベントドリブン・アーキテクチャの使用は、大量処理を最大限に活用するために広く使用されているテクノロジおよびアーキテクチャの一部です。

Oracle Cloud Infrastructure(OCI)には、スケーラビリティとコスト削減を可能にするリソースがあります。クラウド・ネイティブ・サービスを見てみましょう。

このチュートリアルでは、大量のファイルを処理する非常に一般的な方法について説明します。この方法では、アプリケーションがそのファイルをOCIオブジェクト・ストレージのバケットにデポジットでき、これらのファイルがデポジットされるとイベントが生成され、ファンクションをトリガーしてこのファイルのURLをOCIストリーミングに書き込むことができます。

ノート:このソリューションは、一部のソース・アプリケーションがOCIストリーミングにファイルの内容を保存するだけで、アプリケーションはこの内容を読み取るだけですが、Kakfaキュー内に大量のデータを転送することはお薦めしません。これを行うには、Claim-Checkというパターンを使用します。このパターンは、メッセージキューを介してファイルを送信する代わりに、このファイルへの参照を送信します。ファイルの読取りを、処理を担当するアプリケーションに委任します。

このチュートリアルでは、OCIオブジェクト・ストレージ、イベント・サービス、ファンクションおよびストリーミングのコンポーネントについて説明します。

このチェーンの終わりに、アプリケーションはストリーミング・キューを使用しますが、ファイルの処理方法については説明しません。

img.png

目的

前提条件

タスク1: OCIストリーミング・インスタンスの作成

OCI Streamingは、マネージド・ストリーミング・サービスのようなKafkaです。市場では、Kafka APIと共通のSDKを使用してアプリケーションを開発できます。このタスクでは、OCIストリーミングのインスタンスを作成し、両方のアプリケーションで実行して大量のデータを公開および消費するように構成します。

  1. OCIコンソールにログインし、「アナリティクスとAI」および「ストリーム」をクリックします。

  2. 「コンパートメント」を選択し、「ストリームの作成」をクリックします。

    作成- stream.png

  3. ストリーム・インスタンスのストリーム名を入力し、他のパラメータをデフォルト値で保持します。「作成」をクリックしてインスタンスを初期化し、「アクティブ」ステータスを待機します。

    save-create-stream.png

    ノート:

    • ストリーミング作成プロセスでは、「デフォルトのストリーム・プールの自動作成」を選択できるため、デフォルトのプールが自動的に作成されます。

    • プライベート・サブネットにストリーム・インスタンスを作成できます。この場合、タスク4の関数には、同じプライベート・サブネットまたはプライベート・サブネット・ストリーム・インスタンスにアクセスできるサブネットに注意する必要があります。VCN、サブネット、セキュリティ・リスト、サービス・ゲートウェイまたはその他のセキュリティ・コンポーネントを確認します。ファンクションがOCIストリーミング・インスタンスにアクセスできることを確認します。

  4. DefaultPoolリンクをクリックします。

    default-pool-option.png

  5. 「Kafka接続設定」をクリックし、接続設定を表示します。次のタスクで必要な情報に注意してください。

    ストリーム接続settings.png

    kafka-conn.png

タスク2: OCIオブジェクト・ストレージ・バケットの作成

バケットを作成する必要があります。バケットはオブジェクトを格納するための論理コンテナであるため、このデモに使用されるすべてのファイルは、このバケットに格納されます。

  1. OCIコンソールを開き、「ストレージ」「バケット」に移動します。「バケット」セクションで、「コンパートメント」を選択します。コンパートメントは、タスク1で作成したOCIストリーミング・インスタンスと同じです。

    選択- compartment.png

  2. 「バケットの作成」をクリックし、「バケット名」を入力します。他のパラメータをデフォルト値のままにして、「作成」をクリックします。

    作成- bucket.png

    作成されたバケットが表示されます。

    バケット- dataflow.png

    ノート:バケットのOCI IAMポリシーを確認します。デモ・アプリケーションでこれらのバケットを使用する場合は、ポリシーを設定する必要があります。詳細は、オブジェクト・ストレージの概要およびOCI IAMポリシーを参照してください。

タスク3: OCIイベント・サービスのOCIオブジェクト・ストレージ・バケットのアクティブ化

バケットでイベントを発行できるようにする必要があります。そのため、バケットの詳細をクリックし、「オブジェクト・イベント編集の発行」リンクを検索してアクティブ化します。

img_8.png

タスク4: OCIファンクションの作成

次のタスクを実行するには、OCI_Streaming_Claim_Check.zipからコードをダウンロードします。

タスク5: OCIイベントの構成

イベント・ルールを構成して、バケット情報を取得してOCIストリーミングに送信するファンクションをトリガーします。

  1. ルールに対して同じコンパートメントを選択し、「ルールの作成」をクリックします。

    img_10.png

  2. 次の情報を入力します

    1. 「ルール条件」セクション。

      • 条件: Event Type
      • サービス名: Object Storage
      • イベント・タイプ: Object-Create, Object-Delete, Object-Update
    2. 「アクション」セクション。

      • アクション・タイプ: Functions
      • ファンクション・コンパートメント: <your function compartment name>
      • ファンクション・アプリケーション: <your function app, in this example ocistreaming-app>
      • ファンクション: fn_stream

    img_9.png

タスク6: イベントの回線のテスト

ノート:プライベート・ネットワークの場合、テスト・コードは、OCIストリーミングの同じプライベート・サブネットに接続されている要塞で実行する必要があります。

OCI_Streaming_Claim_Check.zipソース・コード・パッケージには、monitoringという名前のフォルダとconsume.pyという名前のファイルがあります。このコードを使用して、ソリューションが正しく動作するかどうかを監視およびテストできます。

コードを構成する必要があります。

img_11.png

ストリーム・パラメータを構成した後、コードを実行し、回路(バケット、イベント、機能およびストリーミング)を検証できます。

img_12.png

確認

その他の学習リソース

docs.oracle.com/learnの他のラボをご覧いただくか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスして、Oracle Learning Explorerになります。

製品ドキュメントは、Oracle Help Centerを参照してください。