Confluent 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」(商用ライセンス版)でのみ提供される機能があります。
クラウドネイティブなアプリケーション開発では、個別に開発された小さなサービスを複数組み合わせて目的のサービスを提供するマイクロサービスというアーキテクチャが浸透してきました。これはマイクロサービスが仕様の変更にも強く、サービス毎に開発チームの得意な言語で開発が進められるなど、柔軟で迅速な開発をする上で必要不可欠なアーキテクチャとなっています。一方でマイクロサービスアーキテクチャの最も難しい課題の1つは、サービス間のデータとコードの互換性を確保することです。Kafkaのようなメッセージングサービスでは、相互にやり取りするサービスは、「スキーマ」と呼ばれるメッセージの共通の形式が定義されます。多くのアプリケーションでは、これらの形式はアドホックであり、コードによって独自に定義されるだけです。しかしアドホックな定義では、仕様の変更や新機能の実装において、柔軟で迅速に対応することが非常に困難です。
Confluentスキーマレジストリは、スキーマの管理を一元化することにより、すべてのスキーマのバージョンを管理し、ユーザー定義の互換設定に従って、すべてのスキーマの整合性を保ちます。このような安全なスキーマ変更環境を提供するにより、気づかないうちに別のサービスが中断されるなど予期せぬ問題が発生することを防止します。
Confluentスキーマレジストリについては、一つのテーマとして、別途より詳しく解説する予定です。
Confluent RESTプロキシは、Kafkaと対話するためのRESTful HTTPサービスを提供します。これにより、任意の言語からKafkaを簡単に操作できるようになります。Confluentは、Java、C、C ++、およびPythonなどのネイティブクライアントライブラリを提供していますが、これを使用することが現実的でない場合もあります。たとえば、組織内でC#やPHPで記述されたレガシーアプリケーションをKafkaに接続する場合があります。これらのケースではConfluent RESTプロキシを使用することをお勧めします。Confluent PlatformにはRESTプロキシが含まれています。
Confluentコントロールセンター(以下、コントロールセンター)は、企業全体のKafkaを管理および監視するためのWEBベースのグラフィカルユーザ―インターフェース(GUI)です。コントロールセンターは、Kafkaの主要なコンポーネントであるブローカーやスキーマ、トピックなどを管理したり、コネクタを1か所で管理し、他のシステムへの接続を作成、編集、管理をGUIで行うことができます。また、メッセージ配信を追跡して、すべてのメッセージが確実に配信されたことを確認したり、メッセージの配信にかかる時間を測定することもできます。コントロールセンターを使用すると、コードを1行も記述せずに、Kafkaに対してデータパイプラインを構築することも可能になります。
コントロールセンターには、この他にもたくさんの機能がありますので、別のテーマでも深堀していきたいと思います。
- コネクテッドカーのインフラ
- 自動車が相互に接続し、データセンターやクラウドと通信し、リアルタイムの交通状況や予測メンテナンス、パーソナライズされたサービスの提供をしています。
導入事例:アウディ
- スマートシティとスマートホーム
- 建物や信号機、駐車場など、さまざまなものが相互に接続され、これにより、効率を高め、より快適なライフスタイルの提供をしています。さらに家を相互に接続し、太陽光エネルギーなどの売買など追加のサービスの提供もしています。
導入事例:E.ON
- インテリジェントな製造現場
- 機械とロボットを統合してビジネスプロセスを最適化し、例えば、部品を早期に廃棄したり、故障前に機械部品を交換する予防保全などで、生産効率を高めます。これにより機器のダウンタイムや故障など、問題が発生する前に対処することができ、大幅なコスト削減が実現します。
導入事例: Severstal
これらの使用例すべてにおいて、IoTのデータを処理できるように、エッジ(機器、装置、車など)をデータセンター(オンプレミス、クラウド、ハイブリッド)とを接続する必要があります。このような際一般的に用いられるのが、MQTTブローカーと呼ばれるサーバを介してメッセージをやり取りする仕組みです。しかし、MQTTブローカーは複雑であり、それを運用するという煩わしさと膨大な管理コストがかかるという課題があります。Confluent MQTTプロキシは、MQTTブローカーを必要とせず、IoTデバイスからKafkaにデータを取り込むことができます。
いかがでしたでしょうか。Confluent Platformには、上記以外にも、さまざまな機能が提供されていますので、今後も随時ご紹介していきたいと思います。