この記事の目的は、Confluent Platform(Apache Kafka)に関する技術ブログを投稿し、自分の理解を整理することです。加えて、これから使ってみようと考えているエンジニアの助力になればと考えています。
記事はいくつかのパートに別けて構成する予定です。
きちんと精査しきれていないため、不正確な内容が含まれているかもしれません。その場合はコメント頂けると嬉しいです。
概要
「使ってみる」の検証用システム構成の概要図はこんな感じです。
このシステムではConfluent Platformを通じてPostgreSQLとElasticsearchの間で、リアルタイムデータストリームを行います。簡単に言えばデータ同期のようなもので、PostgreSQLのデータがElasticsearchに転送されます。
データを統合する対象にPostgreSQLとElasticsearchを選択した大きな理由はありません。
強いて言えば、個人的に使い慣れていることと、リレーショナルデータベースであるPostgreSQLからNoSQLデータベースの一種であるElasticsearchへのデータ統合がどこまで出来るか試してみたいという単純な動機です。
Confluent Platformについて
「使ってみる」の前置きとしてConfluent Platformを概要レベルでまとめました。もっと詳しい解説は他の記事で投稿するかもしれません。
一方、PostgreSQLやElasticsearchまで手を広げて書くと発散するのでこの記事では触れません。
Confluent Platformとは
Confluent Platformは、リアルタイムデータストリームを可能にするApache Kafka上に構築されたストリームデータプラットフォームです。Apache Kafkaの管理と監視のためのツールと、その機能を拡張する追加コンポーネントを提供します。
一言で表すと、商用利用で必要不可欠と言っても過言ではないセキュリティ機能や運用に必要な構成管理の機能を提供しています。
そして、Apache KafkaはLinkedInが開発し、Apache Software Foundationに寄贈したオープンソースのストリーム処理ソフトウェアです。データストリームを処理し、リアルタイムデータのパイプラインとストリーミングアプリケーションを提供しています。
一言で表すと、耐障害性とスケーラビリティのあるプラットフォームを提供しています。
Confluent PlatformはApache Kafkaを中心に構築されており、その機能を拡張するためのいくつかの主要なコンポーネントを含みます。この記事では、Zookeeper、Broker、Schema Registry、Connectorsについて説明します。
Zookeeper
Zookeeperは、分散同期を実現するコーディネーションサービスノードです。Zookeeperの役割はBrokerを管理し、パーティションやレプリカ情報などのメタデータを維持して信頼性のある分散システムを確保しています。
Broker
BrokerはKafkaの中核的なコンポーネントでデータの保存を担当します。Brokerの役割は、クライアントのリクエストの処理、データの読み書きを行い、障害耐性のために異なるブローカー間でのデータレプリケーションを担当しています。
Schema Registry
Schema Registryはメタデータの提供レイヤーを提供します。Kafka内の異なるメッセージスキーマの互換性を可能にします。Schema Registryの役割はスキーマの保存と取得を行い、データが事前に定義されたスキーマに準拠した状態を確保します。Avro、JSON、Protobufのデータ形式に対応しています。
Connector
Connectorは、データのスケーラブルで信頼性のあるストリーミングを実現します。Connectorの役割はデータベース、メッセージキュー、クラウドストレージなどへの接続であり、システム間でのシームレスなデータ移動を担当しています。
まとめ
Confluent Platformを概要レベルで解説しました。
次回の記事では、dockerコンテナを利用して検証環境を構築します。
-
投稿済みの記事と投稿予定の記事
- 検証用のシステム構成を紹介 ★イマココ
- 環境構築
- Connectorプラグインの登録、データストリーム
- DebeziumのSMTを利用したメッセージ変換
- 自作のSMTを利用したメッセージ変換
- ElasticsearchのIngest Pipelineを利用した変換
-
投稿するかもしれない記事
- Confluent Platformの解説
- KafkaとConnectorのパフォーマンスチューニング
- Elasticsearchの解説
- Elasticsearchのインデックス設定、マッピング定義の解説
- Elasticsearchの search APIの解説
- Elasticsearchをクラスタ構成に変更