Confluent Platform とは¶
ちなみに
はじめに、Confluent Cloud にサインアップするか、Confluent Platform をダウンロードしてください。
Confluent は、業界唯一のエンタープライズ対応の Event Streaming Platform を提供し、アプリケーションとデータインフラストラクチャの新しいパラダイムを推進しています。Confluent Platform を使用することで、個別のスナップショットの取り込みに加えて、イベントが継続的に更新されるストリームとしてデータを活用することができます。Fortune 100 の 60% 以上の企業がイベントストリーミングを活用しており、その大半で Confluent Platform が使用されています。Confluent はリアルタイムイベントと履歴イベントのための単一プラットフォームを提供します。これにより、ユーザーはまったく新しいカテゴリーのイベント駆動型アプリケーションを構築し、広範なイベントパイプラインを確立できます。Confluent は、Apache Kafka® の元々の開発者によって設立されました。
Confluent Platform は基盤となるテクノロジであり、複数のソースやロケーションからのデータを一元管理された Event Streaming Platform に統合することで、リアルタイムデータパイプラインやストリーミングアプリケーションを簡単に構築することができます。Confluent Platform を利用することで、基盤となるメカニズム(各種システム間でのデータの転送方法や通信方法など)を気にすることなく、データからどのようにしてビジネス価値を引き出すかに集中することができます。具体的には、Confluent Platform は、Kafka へのデータソースの接続、Kafka を使用したアプリケーションの構築、および Kafka インフラストラクチャの保護、モニタリング、および管理を簡素化します。

Confluent Platform コンポーネント¶
概要¶
Confluent Platform の中核を成すのは、最も広く利用されているオープンソース分散ストリーミングプラットフォームである Apache Kafka です。Kafka の主な機能は、次のとおりです。
- レコードストリームのパブリッシュおよびサブスクライブ
- フォールトトレラントな方法によるレコードストリームの格納
- レコードストリームの処理
Fortune 500 の 40% の企業 が、ユーザーのアクティビティデータ、システムログ、アプリケーションのメトリクス、株価ティッカーデータ、デバイスの計装信号の収集など、さまざまなユースケースで Kafka を使用しています。
Kafka オープンソースプロジェクトの主要なコンポーネントは、Kafka ブローカーと Kafka Java クライアント API です。
- Kafka ブローカー
- Kafka のメッセージング、データ永続性、およびストレージ階層を形成する Kafka ブローカー。
- Kafka Java クライアント API
- プロデューサー API は、アプリケーションが 1 つ以上の Kafka トピックにストリームレコードをパブリッシュできるようにする Java クライアントです。
- コンシューマー API アプリケーションは、1 つまたは複数のトピックをサブスクライブし、そこに生成されたレコードのストリームを処理できるようにする Java クライアントです。
- ストリーム API により、アプリケーションはストリームプロセッサーとして機能できます。1 つまたは複数のトピックからの入力ストリームを消費して 1 つまたは複数の出力トピックにストリームを出力し、入力ストリームを出力ストリームに効率的に変えることができます。非常に取り入れやすく、運用が容易で、ストリーム処理アプリケーションを記述するための高レベルの DSL を備えています。したがって、Kafka で管理されるデータを処理して分析するための最も便利でスケーラブルなオプションです。
- Connect API は、Kafka と他のデータシステム間でスケーラブルかつ信頼性の高い方法でデータをストリーミングするために使用できるコンポーネントです。これにより、Kafka との間でデータを出し入れするようにコネクターを簡単に構成することができます。Kafka Connect は、データベース全体を取り込んだり、すべてのアプリケーションサーバーから Kafka トピックにメトリクスを収集したりして、データをストリーム処理に利用できるようにします。コネクターは、Kafka トピックから Elasticsearch などのセカンダリインデックスにデータを配信したり、オフライン分析のために Hadoop などのバッチシステムにデータを配信したりすることもできます。
Confluent Platform の各リリースには、Event Streaming Platform の構築と管理を簡単にする 最新リリースの Kafka と追加のツールやサービスが含まれています。Confluent Platform ではコミュニティ版ライセンスの機能と商用ライセンス版の機能の両方が提供され、Kafka デプロイを補完および強化できます。
参考
この構成の動作例については、Confluent Platform デモ を参照してください。構成リファレンスについては、デモの docker-compose.yml ファイル を参照してください。
商用版の機能¶
Confluent Control Center¶
Confluent Control Center は、Kafka を管理およびモニタリングするための GUI ベースのシステムです。Kafka Connect を簡単に管理し、他のシステムとの接続を作成、編集、および管理することができます。また、プロデューサーからコンシューマーへのデータストリームをモニタリングすることで、すべてのメッセージが確実に配信されるようにし、メッセージの配信にかかる時間を測定することができます。Control Center を使用することで、コードを一行も書くことなく、Kafka をベースにした本稼働環境用のデータパイプラインを構築することができます。Control Center は、データストリームのレイテンシと完全性の統計に関するアラートを定義する機能も備えており、メールで配信したり、一元的なアラートシステムからクエリを実行したりすることができます。
Confluent for Kubernetes¶
Confluent for Kubernetes は、Kubernetes Operator です。Kubernetes Operator は、特定のプラットフォームアプリケーションに固有の機能や要件を提供することで、Kubernetes のオーケストレーション機能を拡張します。Confluent Platform では、Kubernetes 上での Kafka のデプロイプロセスを大幅に簡素化し、一般的なインフラストラクチャのライフサイクルタスクを自動化することもできます。
詳細については、「Confluent Operator」を参照してください。
Confluent コネクター¶
コネクターは、Kafka Connect API を利用して、Kafka を他のシステムに接続します。Confluent Hub には、最も一般的なデータソースとシンクのためのダウンロード可能なコネクターが用意されています。これらのコネクターには、Confluent Platform を使用して十分にテストされ、サポートされているバージョンが含まれています。詳細については、以下のドキュメントを参照してください。
Confluent Replicator¶
Confluent Platform では、複数のデータセンターにある複数の Kafka クラスターをこれまで以上に簡単に維持することができます。データとトピックの構成のデータセンター間レプリケーションを管理することで、次のようなユースケースが可能になります。
- アクティブ/アクティブの地理的位置指定デプロイ: ユーザーは近くのデータセンターにアクセスして、低いレイテンシと高いパフォーマンスを実現するためにアーキテクチャを最適化することができます
- 一元的分析 : 複数の Kafka クラスターからのデータを 1 つの場所に集約して、組織全体の分析を行います
- クラウド移行 : Kafka を使用して、オンプレミスのアプリケーションとクラウドのデプロイ間でデータを同期します
Confluent Replicator を使用して、これらすべてのシナリオで Confluent Control Center またはコマンドラインツールからレプリケーションを構成および管理することができます。
Confluent Auto Data Balancer¶
クラスターが大きくなるにつれ、トピックやパーティションはそれぞれ異なる速度で大きくなり、ブローカーが追加されたり削除され、時間の経過とともにデータセンターのリソース間でワークロードが不均衡になります。ブローカーの中には、まったく動作していないものもあれば、大きなパーティションまたは多くのパーティションによってメモリーが消費され、メッセージの配信が遅くなっているものもあります。Confluent Auto Data Balancer を実行することで、クラスター内のブローカー数、パーティションサイズ、パーティション数、およびリーダー数を監視できます。データを移動してクラスター全体で均等なワークロードを作成し、バランス調整のトラフィックをスロットル化して本稼働環境ワークロードへの影響を最小限に抑えながら、バランス調整を行うことができます。
詳細については、データの自動バランス調整のドキュメント を参照してください。
Confluent JMS Client¶
Confluent Platform には、Kafka 用の JMS 対応のクライアントが含まれています。この Kafka クライアントは、Kafka ブローカーをバックエンドとして使用して、JMS 1.1 標準 API を実装しています。これは、JMS を使用しているレガシーアプリケーションがあり、既存の JMS メッセージブローカーを Kafka で置き換える場合に便利です。レガシー JMS メッセージブローカーを Kafka に置き換えることで、既存のアプリケーションを大幅に書き換えることなく、最新のストリーミングプラットフォームと統合することができます。
詳細については、「JMS Client」を参照してください。
Confluent MQTT Proxy¶
中間に MQTT Broker を介さずに、MQTT デバイスやゲートウェイから Kafka に直接データをパブリッシュする手段を提供します。
詳細については、「MQTT Proxy」を参照してください。
Confluent セキュリティプラグイン¶
Confluent セキュリティプラグインは、さまざまな Confluent Platform ツールや製品にセキュリティ機能を追加するために使用されます。
現在、Confluent REST Proxy 用のプラグインが用意されており、これを使用することで受信リクエストを認証し、認証されたプリンシパルを Kafka へのリクエストに伝播させることができます。これにより、Confluent REST Proxy クライアントは、Kafka ブローカーのマルチテナントセキュリティ機能を利用できるようになります。詳細については、「REST Proxy セキュリティプラグイン」および「Schema Registry セキュリティプラグイン」を参照してください。
コミュニティ機能¶
ksqlDB¶
ksqlDB は Kafka 用のストリーミング SQL エンジンです。Kafka 上でストリーム処理を行うための、使いやすくて強力な対話型 SQL インターフェイスを提供します。Java や Python などのプログラミング言語でコードを書く必要はありません。ksqlDB は、スケーラブルで、弾力性があり、フォールトトレラントおよびリアルタイム性が備えられています。データのフィルタリング、変換、集約、結合、ウィンドウ化、セッション化など、幅広いストリーミング操作をサポートしています。
ksqlDB は、以下のユースケースをサポートしています。
- ストリーミング ETL
- Kafka は、データパイプラインを強化するための一般的な選択肢です。ksqlDB を使用すると、パイプライン内のデータを簡単に変換して、メッセージを別のシステムにクリーンに移行するための準備を行うことができます。
- リアルタイムモニタリングと分析
- リアルタイムのダッシュボードを迅速に構築し、メトリクスを生成し、カスタムのアラートやメッセージを作成することで、インフラストラクチャ、アプリケーション、およびデータフィードを追跡、理解、および管理できます。
- データの探索と検出
- Kafka でデータを開いて参照します。
- 異常検出
- ミリ秒の待ち時間でリアルタイムデータのパターンを特定して異常を発見することで、通常のイベントから適切に見分け、不正行為を個別に処理することができます。
- パーソナライゼーション
- データ駆動型のリアルタイム体験とインサイトをユーザーに提供します。
- センサーデータと IoT
- センサーデータを理解し、必要な場所に必要な方法で配信します。
- 360 度の顧客ビュー
- 新しい情報がリアルタイムで継続的に反映されるさまざまなチャネルを通じて、あらゆるやり取りを対象に顧客の包括的な理解を実現します。
詳細については、ksqlDB ドキュメント を参照してください。
Kafka Connect¶
Kafka Connect は、Kafka を外部システム(データベース、キー値ストア、検索インデックス、ファイルシステムなど)に接続するためのフレームワークです。詳細については、Kafka Connect のドキュメント を参照してください。
Confluent クライアント¶
C/C++ クライアントライブラリ¶
ライブラリ librdkafka は、Kafka プロトコルの C/C++ 実装で、プロデューサーとコンシューマーの両方のサポートが含まれます。メッセージ配信、信頼性、および高性能を念頭に設計されています。メッセージの配信数に関して、現在のベンチマークでは、プロデューサーの場合は 1 秒間に 80 万、コンシューマーの場合は 1 秒間に 300 万を超えています。このライブラリには、メッセージセキュリティなど、Kafka 0.10 の多くの新機能に対するサポートが含まれています。また、Avro データシリアル化用の C/C++ ライブラリである libserdes(Schema Registry をサポート)と簡単に統合できます。
詳細については、Kafka クライアント のドキュメントを参照してください。
Go クライアントライブラリ¶
Confluent Platform には、フル機能で高性能な Go 用クライアントが含まれています。
詳細については、Kafka クライアント のドキュメントを参照してください。
.Net クライアントライブラリ¶
Confluent Platform には、フル機能で高性能な .Net 用クライアントが含まれています。
詳細については、Kafka クライアント のドキュメントを参照してください。
Confluent Schema Registry¶
緩く結合されたシステムで最も困難な課題の 1 つは、システムの成長や進化に合わせてデータとコードの互換性を確保することです。Kafka のようなメッセージングサービスでは、対話するサービスは、メッセージの "スキーマ" と呼ばれる共通のフォーマットに一致しなければなりません。多くのシステムにおいて、これらのフォーマットはアドホックで、コードによって暗黙的に定義されているだけであり、そのメッセージタイプを使用する各システムで重複していることがよくあります。
要件の変化に伴い、これらのフォーマットを進化させる必要が出てきます。アドホックな定義だけでは、開発者が自分の変更がどのような影響を与えるかを判断することは非常に困難です。
Confluent Schema Registry は、Avro シリアル化システム用に書かれたスキーマを一元管理することで、スキーマの安全でダウンタイムなしでの進化を可能にします。Kafka のすべてのトピックで使用されているスキーマのすべてのバージョンを追跡し、ユーザー定義の互換性設定によってのみスキーマを進化させることができます。これにより開発者は、スキーマを修正することで把握できていない別のサービスを破損するという心配をすることなく、必要に応じてスキーマを安全に修正できるという安心感が得られます。
Schema Registry には、Avro フォーマットで送信された Kafka メッセージについて、そのスキーマの格納と取得に対応する Kafka のクライアントも用意されています。この統合はシームレスです。既に Avro データで Kafka を使用している場合に Schema Registry を使用するには、アプリケーションにシリアライザーを含めて設定を変更するだけで済みます。
詳細については、Schema Registry のドキュメント を参照してください。
Confluent REST Proxy¶
Kafka と Confluent は Java、C、C++、および Python 用のネイティブクライアントを提供しており、Kafka を通じて迅速かつ容易にメッセージを生成し、消費することができます。これらのクライアントは、通常、Kafka と直接通信するための最も簡単で、最も速く、最も安全な方法です。
しかし、ネイティブクライアントを使用するアプリケーションを作成して保守することが現実的でない場合もあります。例えば、PHP で作成したレガシーアプリケーションを Kafka に接続するような場合です。あるいは、ある企業がキャッシュレジスター上で動作するポイントオブセールソフトウェア( C# で作成され、Windows NT 4.0 上で動作し、業者が管理を行っているもの)を実行しており、パブリックインターネット上にデータを掲載する必要があるとします。これらのケースを支援するために、Confluent Platform には REST Proxy が含まれています。REST Proxy は、これらの問題を解決します。
Confluent REST Proxy は、Kafka クラスターと対話するための RESTful HTTP サービスを提供することで、どの言語からでも簡単に Kafka を操作することができます。REST Proxy は、Kafka へのメッセージの送信、個別およびコンシューマグループの一部としてのメッセージの読み込み、トピックのリストおよびその設定などのクラスターメタデータの検査など、すべてのコア機能をサポートしています。どの言語からでも、公式にメンテナンスされた高品質の Java クライアントの恩恵を十分に受けることができます。
REST Proxy は、Schema Registry にも統合されています。Avro のデータを読み取ったり書き込んで、Schema Registry にスキーマを登録して検索することができます。これは Avro との間で JSON データを自動的に変換するため、HTTP と JSON だけの使用で、どの言語からでも一元的スキーマ管理を十分に活用することができます。
詳細については、Confluent REST Proxy のドキュメント を参照してください。