Confluent Platform 技術ガイド データの可能性を無限に追及する Confluent Platformとは

データの可能性を無限に追及する
~Confluent Platform~

Confluent Platformとは?

近年、あらゆるものがアナログからデジタルへと大きくシフトしています。そしてそのデジタル社会では、その瞬間が新しい市場になるとも言われています。そうした中でデータの活用が注目されています。ここでは、Fortune 100の60%以上がイベントストリーミングデータを活用し、その大半が利用するConfluent Platformについて簡単に紹介します。

Confluent PlatformはApache Kafkaを中心としたプラットフォームです。Apache Kafkaについては、別の記事で紹介しているため、詳しくはそちらを併せてご覧ください。Apache Kafkaは、とても優れたオープンソースのソフトウェアではありますが、実際に使用してみると、特に商用利用時においては、機能の不足などで困ることもあります。

Confluent PlatformはLinkedInのプロジェクトで、Apache Kafkaの開発に最初に携わった主要メンバーによって創設されたConfluent社が提供しています。複数のシステムやあらゆる場所からのデータを企業の中央のConfluent Platformに統合することにより、リアルタイムのデータパイプラインとリアルタイム アプリケーションを簡単に構築できるようになります。さまざまなシステム間の連携、データ転送において煩わしいインターフェースプログラムの開発やファイルのインポート/エクスポートから解放され、企業はデータからビジネス価値を引き出すことだけに集中できます。

それでは、具体的に見ていきましょう。図1がConfluent Platformのコンポーネントです。コンポーネントには、Apache Kafkaの最新リリースと開発者やオペレーター、データサイエンティストなどに向けた追加機能が含まれています。追加機能は多数ありますので、ここでは主要な機能について解説します。追加機能は、「Confluent Community」と呼ばれる無償版でも提供される機能と、「Confluent Enterprise」(商用ライセンス版)でのみ提供される機能があります。

Confluent Platformコンポーネント

図1Confluent Platformコンポーネント

 

「Confluent Community」で提供される主な機能

ksqlDB

ksqlDBは、Apache Kafka(以下、Kafka)のストリーミング用SQLエンジンです。最大の特長は、ユーザがコードを記述して複雑な開発をすることなく、様々なデータベースや他のシステムからデータを、抽出、フィルタリング、結合、集約、変換し、特定のプロファイルで検索し値を返すルックアップ処理の実行まで、幅広いストリーミング操作が可能になることです。つまり、ksqlDBを使用すれば、リレーショナルデータベースの知識を活用して、イベントストリーミングアプリケーションを簡単に構築できます。

ksqlDB

コネクタ

コネクタは、HadoopやAmazon S3など最も人気のあるデータソースを中心に構築済みであり、様々なデータシステムからデータをインポートしたり、エクスポートします。ユーザはニーズにあったコネクタを使用して、イベントストリーミングアプリケーションを迅速かつ確実に構築することができます。例えば、IoTデータソースを接続するコネクタを使用すれば、複雑なレイヤーを追加することなく、IoTのデータを簡単にKafkaに流し込むことができます。

豊富なプログラミング言語をサポート

豊富なプログラミング言語をサポートより多くの開発者がKafkaに広くアクセスできるように、Java以外のプログラミング言語をサポートします。C/C++、GO、Python、.NETでより多くの開発者がイベントストリーミングアプリケーションを構築できるようになります。これは組織全体で有効な技術リソースを活用することができることにもつながります。

Confluentスキーマレジストリ

クラウドネイティブなアプリケーション開発では、個別に開発された小さなサービスを複数組み合わせて目的のサービスを提供するマイクロサービスというアーキテクチャが浸透してきました。これはマイクロサービスが仕様の変更にも強く、サービス毎に開発チームの得意な言語で開発が進められるなど、柔軟で迅速な開発をする上で必要不可欠なアーキテクチャとなっています。一方でマイクロサービスアーキテクチャの最も難しい課題の1つは、サービス間のデータとコードの互換性を確保することです。Kafkaのようなメッセージングサービスでは、相互にやり取りするサービスは、「スキーマ」と呼ばれるメッセージの共通の形式が定義されます。多くのアプリケーションでは、これらの形式はアドホックであり、コードによって独自に定義されるだけです。しかしアドホックな定義では、仕様の変更や新機能の実装において、柔軟で迅速に対応することが非常に困難です。
Confluentスキーマレジストリは、スキーマの管理を一元化することにより、すべてのスキーマのバージョンを管理し、ユーザー定義の互換設定に従って、すべてのスキーマの整合性を保ちます。このような安全なスキーマ変更環境を提供するにより、気づかないうちに別のサービスが中断されるなど予期せぬ問題が発生することを防止します。
Confluentスキーマレジストリについては、一つのテーマとして、別途より詳しく解説する予定です。

Confluent RESTプロキシ

Confluent RESTプロキシは、Kafkaと対話するためのRESTful HTTPサービスを提供します。これにより、任意の言語からKafkaを簡単に操作できるようになります。Confluentは、Java、C、C ++、およびPythonなどのネイティブクライアントライブラリを提供していますが、これを使用することが現実的でない場合もあります。たとえば、組織内でC#やPHPで記述されたレガシーアプリケーションをKafkaに接続する場合があります。これらのケースではConfluent RESTプロキシを使用することをお勧めします。Confluent PlatformにはRESTプロキシが含まれています。

「Confluent Enterprise」で提供される主な機能

Confluentコントロールセンター

Confluentコントロールセンター(以下、コントロールセンター)は、企業全体のKafkaを管理および監視するためのWEBベースのグラフィカルユーザ―インターフェース(GUI)です。コントロールセンターは、Kafkaの主要なコンポーネントであるブローカーやスキーマ、トピックなどを管理したり、コネクタを1か所で管理し、他のシステムへの接続を作成、編集、管理をGUIで行うことができます。また、メッセージ配信を追跡して、すべてのメッセージが確実に配信されたことを確認したり、メッセージの配信にかかる時間を測定することもできます。コントロールセンターを使用すると、コードを1行も記述せずに、Kafkaに対してデータパイプラインを構築することも可能になります。
コントロールセンターには、この他にもたくさんの機能がありますので、別のテーマでも深堀していきたいと思います。

Confluentオペレーター

Confluentオペレーターは、KubernetesでのConfluent Platformのデプロイと管理を自動化します。これは、KubernetesでのKafkaのデプロイメントを大幅に簡略化し、Confluent Platformの運用と管理の負担を最小限に抑えることができます。

Confluentレプリケーター

Confluentレプリケーターは、Kafkaクラスターを一元化された場所に集約する、リージョン間でKafkaクラスターを移動する、ハイブリッドクラウド環境を構築するなど、データ移行を容易にします。Kafkaのシングルクラスタの導入は稀で、ほとんどの中規模以上の構成の場合、複数のKafkaクラスターが存在します。最小のユースケースでも、開発用、テスト用、本番用と複数のKafkaクラスターが存在します。こうしたマルチクラスター間で作業する場合、クラスター間でのデータ移動が必ず発生しますので、Confluentレプリケーターは非常に強力な機能となります。

Confluentオートデータバランサー

Kafkaクラスターが成長するにつれて、時間の経過とともに、データセンターリソース全体のワークロードが不均衡になります。この結果、負荷が偏り、メッセージの配信が遅くなります。Confluentオートデータバランサーは、クラスターのスループットを最適化するための自動化されたソリューションです。Confluentオートデータバランサーは、クラスター全体で均等なワークロードを作成し、トラフィックを再調整してクラスター全体を自動で最適化します。

Confluent MQTTプロキシ

モノのインターネット(IoT)は、近年ますます注目を集めています。そのIoTでよく使われているプロトコルにMQTTがあります。これについて説明する前にConfluent Platformが利用されているIoTプロジェクトの使用例をいくつか見てみましょう。

コネクテッドカーのインフラ
自動車が相互に接続し、データセンターやクラウドと通信し、リアルタイムの交通状況や予測メンテナンス、パーソナライズされたサービスの提供をしています。
導入事例:アウディ
スマートシティとスマートホーム
建物や信号機、駐車場など、さまざまなものが相互に接続され、これにより、効率を高め、より快適なライフスタイルの提供をしています。さらに家を相互に接続し、太陽光エネルギーなどの売買など追加のサービスの提供もしています。
導入事例:E.ON
インテリジェントな製造現場
機械とロボットを統合してビジネスプロセスを最適化し、例えば、部品を早期に廃棄したり、故障前に機械部品を交換する予防保全などで、生産効率を高めます。これにより機器のダウンタイムや故障など、問題が発生する前に対処することができ、大幅なコスト削減が実現します。
導入事例:Severstal

これらの使用例すべてにおいて、IoTのデータを処理できるように、エッジ(機器、装置、車など)をデータセンター(オンプレミス、クラウド、ハイブリッド)とを接続する必要があります。このような際一般的に用いられるのが、MQTTブローカーと呼ばれるサーバを介してメッセージをやり取りする仕組みです。しかし、MQTTブローカーは複雑であり、それを運用するという煩わしさと膨大な管理コストがかかるという課題があります。Confluent MQTTプロキシは、MQTTブローカーを必要とせず、IoTデバイスからKafkaにデータを取り込むことができます。

いかがでしたでしょうか。Confluent Platformには、上記以外にも、さまざまな機能が提供されていますので、今後も随時ご紹介していきたいと思います。

PAGE TOP