ノート:
- このチュートリアルでは、Oracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントに例の値を使用します。演習を終える際は、これらの値をクラウド環境に固有の値に置き換えてください。
スケーラブルなクラウド・ネイティブ・フローを使用したOracle Cloud Infrastructure Object Storageでのファイルの処理
イントロダクション
アプリケーションでは、多くの場合、大量のファイルを処理する必要があります。これまで、これはバッチ形式で行われていましたが、新しいテクノロジとクラウドの登場により、多くのシリアル・プロセスをパラレル・プロセスに変換できるようになりました。メッセージ・キュー、Kubernetesクラスタおよびイベントドリブン・アーキテクチャの使用は、大量処理を最大限に活用するために広く使用されているテクノロジおよびアーキテクチャの一部です。
Oracle Cloud Infrastructure(OCI)には、スケーラビリティとコスト削減を可能にするリソースがあります。クラウド・ネイティブ・サービスを見てみましょう。
-
OCI Object Storageを使用すると、あらゆるタイプのデータをネイティブ形式で安全に格納できます。組み込みの冗長性により、OCI Object Storageは、分析、バックアップ、またはアーカイブの目的で複数のデータ・ソースを統合するために使用できるため、スケールと柔軟性を必要とする最新のアプリケーションを構築するのに最適です。
-
OCI Streamingサービスは、開発者とデータ・サイエンティスト向けのApache Kafka互換のサーバーレス・リアルタイム・イベント・ストリーミング・プラットフォームです。Streamingは、OCI、Database、GoldenGate、Integration Cloudと完全に統合されています。また、このサービスでは、DevOps、データベース、ビッグ・データ、SaaSアプリケーションなどのカテゴリの何百ものサードパーティ製品をすぐに統合できます。
-
OCI Events Serviceは、クラウド・ネイティブ・コンピューティング・ファウンデーション(CNCF)クラウド・イベント標準に準拠するイベントを使用して、リソースに対する変更を追跡します。開発者は、OCI Functionsでコードをトリガーしたり、OCI Streamingに記録したり、OCI Notificationsを使用してアラートを送信したりすることで、リアルタイムの変更に対応できます。
-
OCI Functionsは、開発者がインフラストラクチャを管理せずにアプリケーションを構築、実行およびスケーリングできるサーバーレス・コンピューティング・サービスです。OCI Functionsには、他のOCIサービスやSaaSアプリケーションとのネイティブな統合があります。OCI FunctionsはオープンソースのFnプロジェクトに基づいているため、開発者は他のクラウド環境やオンプレミス環境に簡単に移植できるアプリケーションを作成できます。ファンクションベースのコードは、通常、短期間実行され、ステートレスであり、単一のロジックのために実行されます。顧客は、使用したリソースに対してのみ支払います。
-
Oracle Cloud Infrastructure Container Engine for Kubernetes(OKE)は、大規模なエンタープライズグレードのKubernetes操作を簡素化するマネージドKubernetesサービスです。複雑なKubernetesインフラストラクチャの管理に必要な時間、コスト、労力を削減します。OKEを使用すると、Kubernetesクラスタをデプロイして、自動スケーリング、更新およびセキュリティ・パッチを使用してコントロール・プレーンおよびワーカー・ノードで信頼性の高い操作を確保できます。また、OKEは、仮想ノードで完全にサーバーレスなKubernetesエクスペリエンスを提供します。
このチュートリアルでは、大量のファイルを処理する非常に一般的な方法について説明します。この方法では、アプリケーションがそのファイルをOCIオブジェクト・ストレージのバケットにデポジットでき、これらのファイルがデポジットされるとイベントが生成され、ファンクションをトリガーしてこのファイルのURLをOCIストリーミングに書き込むことができます。
ノート:このソリューションは、一部のソース・アプリケーションがOCIストリーミングにファイルの内容を保存するだけで、アプリケーションはこの内容を読み取るだけですが、Kakfaキュー内に大量のデータを転送することはお薦めしません。これを行うには、Claim-Checkというパターンを使用します。このパターンは、メッセージキューを介してファイルを送信する代わりに、このファイルへの参照を送信します。ファイルの読取りを、処理を担当するアプリケーションに委任します。
このチュートリアルでは、OCIオブジェクト・ストレージ、イベント・サービス、ファンクションおよびストリーミングのコンポーネントについて説明します。
このチェーンの終わりに、アプリケーションはストリーミング・キューを使用しますが、ファイルの処理方法については説明しません。
目的
- OCI Object Storage、イベント・サービス、ファンクションおよびストリーミングを使用して多数のファイルを処理できるスケーラブルなイベント・アーキテクチャを実装します。
前提条件
-
バケット、機能およびストリーミング用に構成されたVNC、サブネットおよびすべてのセキュリティ設定。
-
バケット、イベント・サービス、ファンクションおよびストリーミングを管理するように構成されたOracle Cloud Infrastructure Identity and Access Management (OCI IAM)ユーザー。
タスク1: OCIストリーミング・インスタンスの作成
OCI Streamingは、マネージド・ストリーミング・サービスのようなKafkaです。市場では、Kafka APIと共通のSDKを使用してアプリケーションを開発できます。このタスクでは、OCIストリーミングのインスタンスを作成し、両方のアプリケーションで実行して大量のデータを公開および消費するように構成します。
-
OCIコンソールにログインし、「アナリティクスとAI」および「ストリーム」をクリックします。
-
「コンパートメント」を選択し、「ストリームの作成」をクリックします。
-
ストリーム・インスタンスのストリーム名を入力し、他のパラメータをデフォルト値で保持します。「作成」をクリックしてインスタンスを初期化し、「アクティブ」ステータスを待機します。
ノート:
-
ストリーミング作成プロセスでは、「デフォルトのストリーム・プールの自動作成」を選択できるため、デフォルトのプールが自動的に作成されます。
-
プライベート・サブネットにストリーム・インスタンスを作成できます。この場合、タスク4の関数には、同じプライベート・サブネットまたはプライベート・サブネット・ストリーム・インスタンスにアクセスできるサブネットに注意する必要があります。VCN、サブネット、セキュリティ・リスト、サービス・ゲートウェイまたはその他のセキュリティ・コンポーネントを確認します。ファンクションがOCIストリーミング・インスタンスにアクセスできることを確認します。
-
-
DefaultPoolリンクをクリックします。
-
「Kafka接続設定」をクリックし、接続設定を表示します。次のタスクで必要な情報に注意してください。
タスク2: OCIオブジェクト・ストレージ・バケットの作成
バケットを作成する必要があります。バケットはオブジェクトを格納するための論理コンテナであるため、このデモに使用されるすべてのファイルは、このバケットに格納されます。
-
OCIコンソールを開き、「ストレージ」、「バケット」に移動します。「バケット」セクションで、「コンパートメント」を選択します。コンパートメントは、タスク1で作成したOCIストリーミング・インスタンスと同じです。
-
「バケットの作成」をクリックし、「バケット名」を入力します。他のパラメータをデフォルト値のままにして、「作成」をクリックします。
作成されたバケットが表示されます。
ノート:バケットのOCI IAMポリシーを確認します。デモ・アプリケーションでこれらのバケットを使用する場合は、ポリシーを設定する必要があります。詳細は、オブジェクト・ストレージの概要およびOCI IAMポリシーを参照してください。
タスク3: OCIイベント・サービスのOCIオブジェクト・ストレージ・バケットのアクティブ化
バケットでイベントを発行できるようにする必要があります。そのため、バケットの詳細をクリックし、「オブジェクト・イベント編集の発行」リンクを検索してアクティブ化します。
タスク4: OCIファンクションの作成
次のタスクを実行するには、OCI_Streaming_Claim_Check.zipからコードをダウンロードします。
-
コードの理解
メイン・コード
HelloFunction.java
とOCIストリーミング・プロデューサ・コードProducer.java
の2つのコード・ファイルがあります。-
HelloFunction.java
.コードのこの部分では、OCIイベント・サービスから取得するデータを取得する必要があるため、3つのソースがあります。
- コンテキスト:このプロパティはRuntimeContextからセンチメントされ、
REGION
変数を使用します。 - イベント・データ: OCI Events Servicesは、データを
resourceName
として生成します。 - 追加イベント詳細データ: OCI Object StorageのOCI Events Servicesは、データを
namespace
およびbucketName
として生成します。
OCI Object StorageファイルのURLをマウントできます。
また、メイン・コードはURLをOCIストリーミング・プロデューサに渡すことができます。
- コンテキスト:このプロパティはRuntimeContextからセンチメントされ、
-
Producer.java
.これは、Claim-checkパターンのKafka情報を生成する
Message
クラス構造です。key
およびvalue
のみ。これはストリーミングに生成する基本的なコードです。
-
-
OCI関数の構築とデプロイ
このステップでは、OCI CLIを使用してOCI関数を作成し、コードをOCIテナンシにデプロイする必要があります。OCIファンクションを作成するには、ファンクション: CLIの使用の開始を参照し、ステップに従ってJavaオプションを検索します。次の情報を使用してファンクションを作成する必要があります。
Application: ocistreaming-app (follow the link Functions: Get Started using CLI) fn create app ocistreaming-app --annotation oracle.com/oci/subnetIds='["<the same OCID of your streaming subnet>"]' Context Variable: REGION=<your streaming region name, ex: us-ashburn-1> fn config app ocistreaming-app REGION=us-ashburn-1
ファンクションをデプロイしたコンパートメントを覚えておいてください。OCIイベント・サービスを構成するには、この情報が必要です。
タスク5: OCIイベントの構成
イベント・ルールを構成して、バケット情報を取得してOCIストリーミングに送信するファンクションをトリガーします。
-
ルールに対して同じコンパートメントを選択し、「ルールの作成」をクリックします。
-
次の情報を入力します
-
「ルール条件」セクション。
- 条件:
Event Type
。 - サービス名:
Object Storage
。 - イベント・タイプ:
Object-Create, Object-Delete, Object-Update
。
- 条件:
-
「アクション」セクション。
- アクション・タイプ:
Functions
。 - ファンクション・コンパートメント:
<your function compartment name>
。 - ファンクション・アプリケーション:
<your function app, in this example ocistreaming-app>
。 - ファンクション:
fn_stream
。
- アクション・タイプ:
-
タスク6: イベントの回線のテスト
ノート:プライベート・ネットワークの場合、テスト・コードは、OCIストリーミングの同じプライベート・サブネットに接続されている要塞で実行する必要があります。
OCI_Streaming_Claim_Check.zipソース・コード・パッケージには、monitoring
という名前のフォルダとconsume.py
という名前のファイルがあります。このコードを使用して、ソリューションが正しく動作するかどうかを監視およびテストできます。
コードを構成する必要があります。
ストリーム・パラメータを構成した後、コードを実行し、回路(バケット、イベント、機能およびストリーミング)を検証できます。
関連リンク
確認
- 著者 - Cristiano Hoshikawa (Oracle LAD Aチーム・ソリューション・エンジニア)
その他の学習リソース
docs.oracle.com/learnの他のラボをご覧いただくか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスして、Oracle Learning Explorerになります。
製品ドキュメントは、Oracle Help Centerを参照してください。
Process Files on Oracle Cloud Infrastructure Object Storage with a Scalable Cloud Native Flow
F94113-01
March 2024
Copyright © 2024, Oracle and/or its affiliates.