KafkaとPubNubの接続
Published: 2024-03-05 16:27:28

Kafkaは、イベント駆動型アーキテクチャ（EDA）開発におけるデファクト・イベント・ブローカーになりつつある。EDAは、ソフトウェア開発を加速し、リアルタイムの機能や洞察を生み出し、モノリシックなシステムを切り離すのに役立っている。

しかしKakfaは、スマートフォン、ブラウザ、IoTデバイス、ラップトップなどの[エッジデバイスと](https://www.pubnub.com/solutions/edge-messaging/)直接接続するようには設計されていない。PubNubは、Kafkaが到達できないエッジデバイス上で動作するリアルタイムアプリを構築・管理するための完全なプラットフォームです。幸いなことに、当社のお客様は、（イベントがすでにKafkaを通じてストリーミングされている）システムから直接来るデータでリアルタイムアプリを駆動し、PubNubを使用してエッジデバイスに接続するという、両方の世界のベストを手に入れることができます。

また、私たちの顧客の多くは、エッジデバイスからKafkaにイベントをストリーミングし、これらのイベントがKafkaに送信される前に「エッジ」（つまりPubNubのネットワーク内）で必要なフィルタリング、アグリゲーション、およびその他の前処理をオプションで行います。

PubNub Kafkaブリッジとは何ですか？
-----------------------

[PubNub Kafkaブリッジを](https://www.pubnub.com/developers/kafka/)使用すると、新しい[Sink Connectorと](https://www.pubnub.com/docs/general/integrations/kafka/pubnub-kafka-sink-connector) [Kafka Actionを](https://www.pubnub.com/docs/serverless/events-and-actions/actions/create-kafka-action)それぞれ使用して、KafkaデプロイメントでイベントをPubNubにシームレスにブリッジしたり、PubNubからイベントをブリッジしたりすることができます。Kafkaブリッジはオンプレミス、AmazonのManaged Kafkaサービス（MSK）、またはConfluentクラウド上でのデプロイをサポートしています。

既製の Kafka Sink Connector はお客様の Kafka デプロイメントと直接統合し、Kafka**から**ウェブブラウザ、モバイルアプリ、IoT センサーなどのエッジ**デバイスへの**リアルタイムイベント配信を可能にします。

完全に管理されたKafka Actionは、当社のEvents & Actionsサービス内でアクセス可能で、エッジ**デバイスから** **Kafkaへの**イベントストリーミングを容易にし、「エッジ」で必要なフィルタリング、アグリゲーション、その他の前処理機能をオプションで提供します。

![](https://www.pubnub.com/cdn/3prze68gbwl1/2NylVGyDwejUVytkpbDjve/5b4e989f27a501a2c2063c54850d73eb/Kafka_Bridge.svg?w=700&h=550)

PubNub Kafkaブリッジの設定方法だけ知りたい場合は、この記事の最後まで読み飛ばすか、専用の [Kafkaドキュメント](https://www.pubnub.com/docs/general/integrations/kafka/basics).

なぜイベント駆動型アーキテクチャ（EDA）にPubNub + Kafkaを使うのか？
------------------------------------------

簡単に言うと、Kafkaはデータセンター内のイベントドリブンアーキテクチャを強化するための最も一般的なソリューションです。PubNubはKafkaを置き換えるものではなく、Kafkaをデータセンターの外からエンドユーザーデバイスや他のデータセンターに拡張するものです。

**しかし、実際にはどうなのだろうか？**

成功している大企業はすべて、システムの管理とスケーラビリティを改善し、顧客により迅速なエクスペリエンスを提供するために、イベント駆動型アーキテクチャへの移行を行っている。 EDAは、バックエンド・サービスやエンドユーザー・デバイス間の通信にイベントを使用する。イベントとは、eコマース・ウェブサイトからの新規注文や、現場作業員からのステータス更新のような、システム状態の変化と考えてください。 これらのイベントはイベント・バスに公開され、イベントを受信するようサブスクライブしているすべての人にルーティングされます。

イベント、イベント・バス、サブスクライバは一般的な用語であり、機能的に類似した概念を表すために異なる用語が使用されることがあります。例えば、"イベント・バス "は、ソースや業界によって、"メッセージ・バス"、"イベント・ブローカー"、または "Pub/Subシステム "として知られています。

**なぜKafkaなのか？**

[Kafkaは](https://kafka.apache.org)信頼性の高いオープンソースのEDAソリューションで、フォーチュン100社の80％が利用しています。

**では、なぜKafkaでPubNubを使うのでしょうか？**

Kafkaは顧客のデータセンター内で使用され、デプロイされますが、PubNubはEDAのイベントドリブンの概念をデータセンターの外、Webブラウザ、モバイルアプリ、IoTデバイスを含む[ネットワークエッジまで](https://www.pubnub.com/solutions/edge-messaging/)拡張します。 KafkaとPubNubはどちらもスケールを念頭に設計されているため、組み合わせて使用すると、ファイアウォールの外にある何百万ものエンドユーザーデバイスと、安全なネットワーク内の何百ものバックエンドサーバーを接続することができます。

さらに、PubNubのような単一のサービスを使用してエッジデバイスと通信すると、イベントを送受信する必要があるすべてのサービス/デバイスのベンダーチェックを行う必要がなくなるため、認証プロセスを簡素化できます。

PubNubを「グローバル・イベント・バス」またはメッセージ・バスと考えれば、Kafka EDAの展開を中央集中型のデータセンターから広範なエッジ・デバイスまで拡大することができます。 PubNubは、リアルタイム・イベント・ストリーミングのための[Pub/Subメッセージング](https://www.pubnub.com/docs/general/messages/publish)、[強化されたセキュリティ](https://www.pubnub.com/docs/general/security/access-control)、過去のメッセージを取得するための[永続性](https://www.pubnub.com/docs/general/storage)、[オンザフライのイベント処理など](https://www.pubnub.com/docs/serverless/functions/overview)、すべてのイベント・バス機能をすでにサポートしています。

-   **ネットワークエッジで見たいKafkaイベントを生成していますか？** PubNubでそれを実現できます。
    
-   **ネットワークエッジでデータを収集していますか？** 例えば、モバイルやWebアプリケーションとやりとりするユーザーなど？ PubNubを使用して、これらのイベントをKafkaインスタンスに送信できます。
    

PubNub + Kafka：EDAの使用例：
-----------------------

PubNubとKafkaの組み合わせで実現できるユースケースを見てみましょう：

-   すでにシステム内で生成しているKafkaイベントを、ブラウザで実行するJavaScriptアプリを含むアプリケーションに直接**リアルタイムでストリーミング**できます。 Kafkaイベントを公開する前にフィルタリングして処理し、重要かつ関連性の高いイベントのみを確実に送信できます。
    
-   **Kafka**イベントを安全な方法で**ネットワークエッジまで拡張**し、お客様の環境内で特別なカスタムゲートウェイを実行する必要はありません。
    
-   **異種システムを簡単に接続：** PubNubには50を超えるSDKがあり、以下のような特徴を持つゼロから構築されています。 [セキュリティ](https://www.pubnub.com/docs/general/setup/data-security)を念頭に置いて構築されているため、相互運用性が問題になることはありません。
    
-   **リアルタイムのイベント**（大規模なチャットルーム、デバイスの位置情報、センサーの読み取り値など**）を**互いに直接**ストリーミングするアプリを構築**しながら、すべてのイベントが分析、アーカイブなどのためにKafkaブローカーに同時にストリーミングされるようにします。
    
-   複雑なVPC環境をセットアップすることなく、**複数のデータ**センターやハイブリッドデータセンターを**ブリッジ**します。
    
-   PubNubベースのセキュアなストリーミングAPIを公開し、イベント**ストリームの**フィルタリング、設定、無効化を簡単に行うことができるゼロトラスト・セキュリティ・モデルを使用して、**データストリームをビジネスパートナーにシンジケート**します。
    

PubNub Kafkaブリッジの設定
-------------------

[Kafka Bridgeは](https://www.pubnub.com/docs/general/integrations/kafka/basics)、Kafka/PubNubのすべての統合のためのPubNubの包括的な用語であり、2つの別々のソリューションで構成されています。

1.  PubNub Kafka Sink Connector」は**Kafkaイベントを** **PubNubに** **送信** するために使用します。 PubNubがKafkaイベントを受信できるようにするカスタム[Kafka Sink Connectorを](https://kafka.apache.org/documentation/#sinkconnectconfigs)提供します。
    
2.  弊社の[Events & Actions](https://www.pubnub.com/docs/serverless/events-and-actions/overview)製品の一部である「PubNub Kafka Action」を使用すると、**PubNubイベントを** **Kafkaに**送信できます。
    

ここで説明する設定手順の前提として、[PubNubにサインアップ](http://admin.pubnub.com)し、APIキー（publish\_keyとsubscribe\_key）を取得する必要があります。

### PubNub Kafka Sink Connectorの設定

PubNub Kafka Sinkコネクタのインストール、設定、テストの方法をよりよく理解するには、**この**コネクタの開発者が書いた**以前のブログ記事「**[**Installing the PubNub Kafka Sink Connector**](https://www.pubnub.com/blog/installing-pubnub-kafka-sink-connector/)**」を** **強くお勧め**します。

また、[PubNub Kafka Sink Connectorのdocsページで](https://www.pubnub.com/docs/general/integrations/kafka/pubnub-kafka-sink-connector)追加のドキュメントを見つけることができます。

要約すると：PubNub KafkaシンクコネクタはGithubの[https://github.com/pubnub/pubnub-kafka-sink-connector](https://github.com/pubnub/pubnub-kafka-sink-connector)。

コネクタがどのように動作するかをテストしたい場合は、リポジトリ内でDockerイメージが提供されており、Kafkaインスタンスをスピンアップし、依存関係をインストールし、タイムスタンプパラメータで構成されるテストイベントを発行します。 POSTコールを使用してコネクタを有効にした後、Kafkaテストイベントに一致する低レイテンシでPubNubイベントが受信されていることがわかります。

本番環境でシンクコネクタを使用するには、Mavenコマンドを使用してソースから.jarファイルをビルドし、それを適切なディレクトリにコピーして（[Kafka Connectのセットアップに応じて](https://docs.confluent.io/platform/current/connect/userguide.html#installing-kconnect-plugins)）コネクタを適宜設定します。

[完全なコネクタ構成については](https://www.pubnub.com/docs/general/integrations/kafka/pubnub-kafka-sink-connector#configuration-options)、ドキュメントページを参照してください：

-   PubNubに送信したいKafkaトピックまたはトピック
    
-   KafkaがPubNubにパブリッシュするときに使用するPubNubキーとID
    
-   シリアライズとエラー処理の追加オプション。
    

### PubNub Kafkaアクションの設定

[Events & Actionsは](https://www.pubnub.com/docs/serverless/events-and-actions/overview)、保存、処理、分析のためにサードパーティのシステムにリアルタイムデータを送信できるPubNubサービスです。 Events & Actionsは、例えば、メッセージが特定のPubNubチャネルにパブリッシュされた、または特定のIDを持つユーザーがメッセージをパブリッシュしたなど、PubNub[イベントを](https://www.pubnub.com/docs/serverless/events-and-actions/events)指定できるようにすることで機能します。例えば、Webhookをトリガーしたい、Amazon Kinesisにデータを送信したい、Apache Kafkaにデータを送信したいなどです。

ドキュメントを簡単に参照すると、手順は以下のようになる：

1.  Kafkaに送信したいデータを表す[PubNubイベントを定義](https://www.pubnub.com/docs/serverless/events-and-actions/events)する。 これは、特定のパターンに一致するイベントをフィルタリングするためのステップでもある。
    
2.  [Kafka](https://www.pubnub.com/docs/serverless/events-and-actions/actions/create-kafka-action)エンドポイントの詳細を使用して[Kafkaアクションを設定](https://www.pubnub.com/docs/serverless/events-and-actions/actions/create-kafka-action)します。 これは、セルフホスト、Amazon MSKクラスタ、またはConfluent Cloudである可能性があります。
    

### PubNub Kafkaアクションの設定例

[PubNubの管理ポータルから](https://admin.pubnub.com)'Events & Actions'を選択すると、イベントリスナーとアクションの両方を指定できます。

![Creating a Kafka Action ](https://www.pubnub.com/cdn/3prze68gbwl1/6OVcygGditdFc2EGSVIy1j/9f1f2cd9030f27e9efba8cc5a39705c5/1.png)

イベントリスナーを追加'を選択し、イベントソースを選択します。

![Creating a Kafka Action ](https://www.pubnub.com/cdn/3prze68gbwl1/52VGEHf6TQFvPE3I41pb6g/b533f7787d2688c741cd694cece10cbe/2.png)

ここでは、"send-to-kafka "という名前のチャネルで受信したすべてのメッセージをエクスポートしたいとします：

![Creating a Kafka Action ](https://www.pubnub.com/cdn/3prze68gbwl1/5Oh144gN0jimJfKaYxLgbB/39e902cc2bfe0e9db80f2d1fa7960bd5/3.png)

次に、Apache Kafkaアクションを作成する。

![Creating a Kafka Action ](https://www.pubnub.com/cdn/3prze68gbwl1/1IDJ8MfST0SAAcRtUpxXRC/ee64a3d56d4e4b6ff47711f8dde3ec13/4.png)

アクション設定の各フィールドが何を意味するかは、[Kafkaアクションのドキュメントに](https://www.pubnub.com/docs/serverless/events-and-actions/actions/create-kafka-action)詳しく記載されているが、以下のスクリーンショットは以下の設定にマッチする：

-   Kafka トピック: topic\_0
    
-   Kafkaトピックキー：stamford
    
-   認証：認証：SCRAM-SHA-256
    
-   イベントを受信するKafkaクラスターのURL：574mf0rd-bridge.ldn-west:1905
    
-   失敗した試行は2回再試行され、間隔は450秒前後の[計算式で](https://www.pubnub.com/docs/serverless/events-and-actions/events#retries)算出される
    

![Creating a Kafka Action ](https://www.pubnub.com/cdn/3prze68gbwl1/5htBDRFrFIPAIrJmADnK73/fad12a93dca4f892d4dd166a656f9722/5.png)

まとめ
---

すでに組織でKafkaを使用している場合、[PubNubを使用してネットワークエッジの](https://www.pubnub.com/solutions/edge-messaging/)デバイスのリアルタイム機能を強化できます。 これは、Kafkaイベントバスで発生したイベントを、JavaScriptを使用するWebブラウザやiOSまたはAndroidを実行するモバイルデバイスなどのプラットフォームに関係なくクライアントに配信できることを意味します。 また、複雑なセットアップ、スケーラビリティ、データセキュリティの懸念なしに、PubNubネットワーク経由でクライアントデバイスからKafkaにリアルタイムでデータを取り込むことができます。

詳細については、[Kafka Bridge開発者専用ページ](https://www.pubnub.com/developers/kafka/)または[Kafka統合ドキュメントを](https://www.pubnub.com/docs/general/integrations/kafka/basics)ご覧ください。セットアップに関するご質問は、[サポートチーム](https://support.pubnub.com/hc/en-us)または開発者リレーションズチームまで電子メール[（devrel@pubnub.com](mailto:devrel@pubnub.com)）でお問い合わせください。

#### 目次

[PubNub](#h-2)[Kafkaブリッジとは何ですか？](#h-0)[なぜイベント駆動型アーキテクチャ（EDA）にPubNub + Kafkaを使用するのですか？](#h-1)[EDAの使用例：](#h-2)[PubNub Kafkaブリッジの設定](#h-3)[PubNub Kafkaシンクコネクタの設定](#h-4)[PubNub Kafkaアクションの](#h-5)設定[PubNub Kafkaアクションの設定](#h-6)[例](#h-5)[まとめ](#h-7)

PubNubはどのようにあなたを助けることができますか？
============================

この記事は[PubNub.comに](https://www.pubnub.com/blog/connecting-kafka-and-pubnub/)掲載されたものです。

PubNubのプラットフォームは、開発者がWebアプリ、モバイルアプリ、IoTデバイス向けにリアルタイムのインタラクティブ機能を構築、提供、管理できるように支援します。

私たちのプラットフォームの基盤は、業界最大かつ最もスケーラブルなリアルタイムエッジメッセージングネットワークです。世界15か所以上で8億人の月間アクティブユーザーをサポートし、99.999%の信頼性を誇るため、停電や同時実行数の制限、トラフィックの急増による遅延の問題を心配する必要はありません。

PubNubを体験
---------

[ライブツアーを](https://www.pubnub.com/tour/introduction/)チェックして、5分以内にすべてのPubNub搭載アプリの背後にある本質的な概念を理解する

セットアップ
------

[PubNubアカウントに](https://admin.pubnub.com/signup/)サインアップすると、PubNubキーに無料ですぐにアクセスできます。

始める
---

[PubNubのドキュメントは](https://www.pubnub.com/docs)、ユースケースや[SDKに](https://www.pubnub.com/docs)関係なく、あなたを立ち上げ、実行することができます。