Apache Kafkaを使用したストリーミングの概要

Apache Kafkaを使用したOracle Cloud Infrastructure (OCI) Streamingは、Apache Kafkaのすべての機能を備えたOCIテナンシでKafkaクラスタを作成および実行できるフルマネージドOCIサービスです。

Apache Kafkaは、リアルタイム・データ・ストリーミング・アプリケーションの構築に使用されるオープン・ソースのイベント・ストリーミング・プラットフォームです。Apache Kafkaを使用すると、次のことができます:

  • イベントのストリームの書込みおよび読取り
  • イベントのストリームの格納
  • イベントのストリームをリアルタイムまたはそれ以降で処理

Streaming with Apache Kafkaを使用すると、基礎となるインフラストラクチャのプロビジョニングおよび管理のオーバーヘッドなしで、Apache Kafkaのすべての機能を取得できます。

Apache Kafkaを使用したOCIストリーミングのすべてのユース・ケースを示すイメージ。

機能

Apache Kafkaを使用したストリーミングは、次の機能で構築されています。

フルマネージド
Streaming with Apache Kafkaは、フルマネージドで、パッチ適用、アップグレード、バックアップ、高可用性、リージョン間のレプリケーション、スケーリング、パフォーマンス管理などのアクティビティを自動化します。
耐久性と可用性
各クラスタは、可用性ドメインまたはフォルト・ドメインにわたる高可用性とストレージの冗長性で構成されます。開発またはテスト・テナンシ用に単一のブローカを含むクラスタを作成するか、本番テナンシ用に少なくとも3つのブローカを含むクラスタを作成して高可用性を提供できます。
Streaming with Apache Kafkaは、一般的なクラスタ障害シナリオを自動的に検出してリカバリします。これにより、書込みおよび読取り操作中のプロデューサ・アプリケーションおよびコンシューマ・アプリケーションの中断が最小限に抑えられます。Streaming with Apache Kafkaは、ブローカ障害を検出すると、障害を軽減するか、不健全または到達不可能なブローカを新しいブローカに置き換えます。可能な場合は、障害が発生したブローカから既存のストレージを再利用して、Apache Kafkaがレプリケートする必要があるデータの量を最小限に抑えます。可用性への影響は、Streaming with Apache Kafkaで障害を検出してリカバリするために必要な時間に制限されます。リカバリ後、プロデューサおよびコンシューマ・アプリケーションは以前と同じブローカ・エンドポイントとの通信を継続できるため、シームレスな操作が保証されます。
Apache Kafka互換性
Apache Kafkaを使用したストリーミングは、Apache Kafka APIと100%互換性があり、コードを書き換えることなく、Apache Kafka用に記述されたアプリケーションを使用できます。
統合されたOCIサービス
  • OCI Vaultを使用したスーパー・ユーザー資格証明の安全な格納および管理
  • クラスタ・メトリックのOCIモニタリングの使用
  • クラスタ・レベルのログにOCIロギングを使用

ユース・ケース

次のシナリオでは、Apache Kafkaでのストリーミングを使用します:

チェンジ・データ・キャプチャ
変更データ取得(CDC)は、アプリケーションの状態に対する変更が時間の順序で記録されるアプリケーション設計のスタイルです。OCI Streaming with Apache Kafkaのクラウドスケールのログ・データ・ストレージのサポートにより、このスタイルで構築されたアプリケーションの優れたバックエンドとなります。任意のオープン・ソースのKafkaコネクタ(Oracle Golden Gate)を仮想マシン(VM)にデプロイできます。この仮想マシンは、更新タイムスタンプ列に基づいてソース・データベースに新規または変更されたデータをポーリングし、Apache Kafkaを使用してOCIストリーミングにデータを簡単にストリーミングします。たとえば、Eコマース企業はCDCとKafkaを使用して、データベース内の注文の更新を追跡し、注文処理やその他の注文配送マイクロサービスを開始します。
変更データ取得のアーキテクチャを示す図
メトリックおよびログの取込み
OCI Streaming with Apache Kafkaを様々なソースのメトリックまたはログ・プロセッサとして使用します。Fluentd、Logstash、Kafka Producer APIなどのログ取り込みツールは、さまざまなアプリケーションからログを収集し、データのエンリッチメントと集約のためにKafkaトピックに配置できます。Apache Kafka APIを使用すると、ログの詳細を抽象化し、それらをダウンストリーム分析ツールに送信してさらに処理し、ログ検索機能を拡張することで、データをエンリッチできます。
メトリックおよびログの取込みアーキテクチャを示す図
リアルタイムの分析
OCI Streaming with Apache Kafkaを使用して、IOTデバイスまたはその他のアップストリーム・アプリケーションからの連続したデータ・ストリームを処理および分析し、リアルタイムのインサイト、異常検出および予測分析を行います。たとえば、金融機関は、このサービスを使用して市場データ・フィードを処理し、取引の異常を検出し、リアルタイムの取引決定を行います。小売業者は、顧客の行動と好みをリアルタイムで分析し、パーソナライズされた推奨とプロモーションを提供します。
リアルタイム分析アーキテクチャを示す図
Webおよびモバイル・アクティビティ・データの取込み
Apache KafkaでOCIストリーミングを使用して、リアルタイムのパブリッシュ/サブスクライブ・フィードのセットとしてユーザー・アクティビティ・トラッキング・パイプラインを再構築します。これらのフィードは、リアルタイム処理、リアルタイム監視、オフライン処理およびレポート作成用のHadoopまたはオフライン・データ・ウェアハウス・システムへのロードなど、様々なユース・ケースのサブスクリプションに使用できます。このソリューションは、次の用途に使用できます。
  • Clickstream: Clickstreamのユースケースには、複数のプロデューサからWebサイト・アクティビティ・データを収集し、リアルタイムでデータを分析して、購入する製品、読むべきニュース記事、見るべきビデオなどの推奨事項を提供します。
  • ゲーム分析: ゲーム企業は、ネットワーク・ラグ、ユーザーの行動、ゲーム内の活動を常に監視し、ゲーム内のマイクロトランザクション、ネットワーク負荷のリバランス、レンダリング・エンジン・パラメータの変更などを顧客に提供します。これらのアクションはすべて、ミリ秒から数秒までのリアルタイムで行われます。
Webおよびモバイル・アクティビティ・データの取込みを示すイメージ
メッセージング
Apache KafkaでOCIストリーミングを使用して、大規模システムのコンポーネントを分離します。たとえば、プロデューサおよびコンシューマは、Apache Kafkaを使用したOCIストリーミングを非同期メッセージ・バスとして使用し、独立して自分のペースで動作できます。
メッセージング・アーキテクチャを示す図

Apache KafkaとOCIストリーミングでOCIストリーミングを使用する場合

Apache KafkaおよびOCIストリーミングを使用したOCIストリーミングの詳細を確認し、ストリーミングのニーズに最適なソリューションを見つけてください。

OCIストリーミング OCI Apache Kafkaによるストリーミング
Appとapp間の通信用のメッセージング・バスとして推奨されます。テナンシ当たりリージョン当たり500パーティション未満の小規模から中規模のワークロードに最適です。 パーティション数に制限なく、CDC、ストリーム分析、IOTデータの処理などの分散データ・ストレージおよびリアルタイム・データ処理に推奨されます。
管理対象およびサーバーレス 管理対象(サーバーレスではない)
Apache Kafkaとの部分互換性 Apache Kafkaとの100%の互換性
クラスタが正しくチューニングされている場合、パフォーマンス・レイテンシは平均200ミリ秒です。 クラスタが正しくチューニングされている場合、パフォーマンス・レイテンシが100ミリ秒未満。
マルチ・テナント: 単一クラスタには、複数の顧客テナンシが含まれます。 単一テナント: 各クラスタは単一のテナンシ専用です。
IAMを使用した認証および認可。 mTLSまたはSASL/SCRAMを使用した認証およびACLを使用した認可。
パーティションのソフト制限15およびハード制限500 制限なし
ストレージの保持7日間 制限なし
ストレージ・サイズ制限なし ストレージ・サイズ制限: ブローカ当たり5TB
パーティション当たりの書込みスループット(1MB/秒)、パーティション当たりの読取りスループット(2MB/秒)。 スループット最大10MB/秒。

Apache Kafkaのパーティション当たりのデフォルト・スループットは、固定のハード制限ではなく、ファクタの組合せです。パーティション当たり約10MB/秒と推定されます。パーティション当たりの最大スループットは、基礎となるインフラストラクチャと構成(バッチ・サイズ、圧縮コーデック、レプリケーション・ファクタ、確認タイプなど)によって異なります。

最大メッセージ・サイズ1 MB ブローカがメモリーを効果的に管理できるように、デフォルトの最大メッセージ・サイズは1MBに設定されています。これは、クラスタ構成で変更できます。最大サイズに制限はありませんが、非常に大きなメッセージは推奨されず、Apache Kafkaでは効果のない反パターンとみなされます。
スケーリングはサポートされていません ブローカ数をクラスタ当たり最大30ブローカまでスケーリングし、OCPU数をコンピュート・シェイプによって定義された最大数までスケーリングします。
トピック当たり50コンシューマ・グループ 制限はありませんが、コンシューマ・グループが多いほど、ネットワーク使用率は高くなります。
機能コンパクト化トピック、べき等な生成、トランザクション、ストリームAPIは使用できません。 機能コンパクト化トピック、べき等生成、トランザクション、ストリームAPIがサポートされています。
限定的な低カーディナリティ・メトリックが使用可能 広範なカーディナリティ・メトリックが使用可能

リソース識別子

Apache Kafkaを使用したストリーミングは、Oracle Cloud Infrastructureリソースとしてクラスタおよび作業リクエストをサポートします。ほとんどのタイプのリソースには、Oracle Cloud ID (OCID)と呼ばれる、Oracleによって割り当てられた一意の識別子があります。OCIDの形式およびその他のリソース識別方法の詳細は、リソース識別子を参照してください。

リージョンおよび可用性ドメイン

Oracleは、そのOCIサービスをリージョンおよび可用性ドメインでホストしています。リージョンはローカライズされた地理的領域で、可用性ドメインはリージョン内の1つ以上のデータ・センターです。Apache Kafkaを使用したストリーミングは、OC1レルムのすべてのリージョンでホストされます。

認証と認可

Oracle Cloud Infrastructureの各サービスは、すべてのインタフェース(コンソール、SDKまたはCLI、およびREST API)で、認証および認可のためにIAMと統合されます。

組織の管理者は、グループコンパートメントおよびポリシーを設定して、どのユーザーがどのサービスおよびリソースにアクセスできるかと、そのアクセス権のタイプを制御する必要があります。たとえば、ポリシーは、新規ユーザーの作成、クラウド・ネットワークの作成と管理、インスタンスの作成、バケットの作成、オブジェクトのダウンロードなどを行うことができるユーザーを制御します。詳細は、ポリシーの開始を参照してください。

Apache Kafkaでストリーミングにアクセスする方法

Oracle Cloud Infrastructure (OCI)には、コンソール(ブラウザベースのインタフェース)、REST APIまたはOCI CLIを使用してアクセスできます。 コンソール、APIおよびCLIの使用手順は、このドキュメント全体のトピックに記載されています。 使用可能なSDKのリストは、ソフトウェア開発キットおよびコマンドライン・インタフェースを参照してください。

コンソール: コンソールを使用してApache Kafkaを使用したストリーミングにアクセスするには、サポートされているブラウザを使用する必要があります。コンソールのサインイン・ページに移動する場合は、このページの上部にあるナビゲーション・メニューを開き、「インフラストラクチャ・コンソール」を選択します。クラウド・テナント、ユーザー名およびパスワードの入力を求められます。

API: APIを介してApache KafkaでStreamingにアクセスするために、REST APIのドキュメントには最も多くの機能がありますが、プログラミングの専門知識が必要です。APIリファレンスとエンドポイントに、エンドポイントの詳細、およびApache Kafka APIを使用したストリーミングなど、使用可能なAPI参照ドキュメントへのリンクが用意されています。Apache Kafka APIによるストリーミングでは、Kafkaクラスタおよび構成ファイルを作成および管理できます。クライアント操作にはApache Kafka APIを使用します。

CLI: OCI CLIでは、Kafkaクラスタおよび構成ファイルを作成および管理できます。クライアント操作にはApache Kafka CLIを使用します。CLIを実行するには、クラウド・シェル環境を使用します。