Apache Kafkaとは何ぞや ~Kafkaを支えるプラットフォーム~

Confluentとは?

Apache KafkaはもともとLinkedIn社により作られ、その時の開発者が独立して立ち上げたのがConfluent社です。Confluent社ではApache Kafkaをさらに便利なものにするべく、Confluent Platformを提供しており、無償版の場合は以下のような機能を提供しています。

  • Producer、Consumer間のデータ整合性を確認する機能
    • schema registry
  • KafkaとProducer、Consumerの接続を容易にする機能
    • Kafka Connect
    • rest proxy
  • 条件に応じたデータを処理して整形する機能
    • ksqlDB

Kafka Connect

Kafkaでは幅広いユースケースがあるため、様々な種類の外部との連携が必要になってくることがあります。Kafka外部にあるプロダクトがkafkaに接続するのには、接続の設定を行わなければならずそれをいちいち各プロダクトが作業をするのは効率的ではありません。Kafka ConnectではKafkaとの接続をプロダクトとKafka間に置くことですぐに接続ができるようになります。具体的には図のようにプロダクトとKafkaConnectの間ではConnectorを用いて接続し、KafkaConnectとKafkaとの間ではConnectAPIを使用して接続しています。

REST proxy

Kafkaはjava,scalaで開発されたプラットフォームであり、ProduceやConsumerがjava以外の言語のものであると運用がしにくいという問題があります。サードパーティ製のものであればある程度の言語には対応していますが、マイナーな言語だとそれにも対応しきれていないのは事実です。 rest proxyではHTTPSプロトコルを用いた送受信を行うことで、様々な言語で開発されたアプリケーションからデータを受け取ることができたり、kafkaと互換性のないconsumerへのメッセージ送信などが可能となります。

Schema registry

Kafkaでは、データ送受信能力に関しては申し分ないのですが、一方でデータを送信するときにconsumer側がどのようなデータセットを求めているのかは考慮していないため、もしproducer側で送信したデータの形式がconsumer側では互換性がない場合、受け取ろうとしたときに予期しないエラーが出る可能性があります。そこで登場するのがSchema Registryです。これもrest proxyと同じくkafkaクラスターの外に存在します。動きとしては、Producerがデータ送信する際にデータ形式をSchema Registryに送信し、それらが互換性を持つかどうか判断します。

ksqlDB

ksqlDB は Kafka 用のストリーミング SQL エンジンです。kafkaでは大規模なデータが絶えずやりとりされており、ユーザー側が様々な目的で特定のデータを扱いたい場合がでてきます。ユーザー側がsqlをコーディングをしてksqlに命令をすることで、データのフィルタリング、変換、集約、結合、ウィンドウ化、セッション化など、幅広いストリーミング操作をサポートします。

要するに興味のあるデータを探す手間が省けたり、興味のあるデータ同士を比較して特徴を見出したりなどをしたい時に役に立ちます!便利ですね!

また、Java や Python などのプログラミング言語でコードを書く必要はないため、言語学習にかかるコストを下げることができます。耐障害性に関してもksqlDBは優秀であり、障害発生時にデータを失うことなく稼働するうえに、データ量によらずスケーラブルに機能し続けます。

おわりに

今回はConfluent社が提供する外部ツールについて紹介しました!次回は無償版であるこれら三つの機能を実際に動かしていきたいと思います!

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です