このドキュメントでは、Pub/Sub と Google Cloud Managed Service for Apache Kafka のどちらを選択するかについて説明します。Pub/Sub と Managed Service for Apache Kafka はどちらも、水平スケーリングが可能なマネージド メッセージング サービスであり、大量のワークロードを処理できます。
このドキュメントは、ストリーミング データとメッセージング ワークロードを処理するためのマネージド サービスを探しているデベロッパー、アーキテクト、意思決定者を対象としています。
Apache Kafka の実行には、パートナー サービスやセルフマネージド オープンソース ソフトウェアなど、複数のオプションがあります。このドキュメントでは、これらのオプションについては説明しません。
Pub/Sub のコンセプトの概要については、Pub/Sub サービスの概要をご覧ください。
Managed Service for Apache Kafka のコンセプトの概要については、Managed Service for Apache Kafka の概要をご覧ください。
運用の容易さとポータビリティ
Pub/Sub と Managed Service for Apache Kafka のどちらを選択するかは、運用上のシンプルさと移植性のどちらを重視するかというトレードオフになります。
Pub/Sub の運用上のシンプルさ
Pub/Sub は、 Google Cloud インフラストラクチャを使用するフルマネージドのサーバーレスのグローバル分散サービスです。ワークロードを処理するために自動的にスケーリングされるため、インフラストラクチャの管理について心配する必要はありません。Pub/Sub は、個々のトピックとサブスクリプションの容量を動的に調整します。パブリッシャーとサブスクライバーは、異なるトピックとサブスクリプションだけでなく、同じトピックとサブスクリプション内でも個別にスケーリングできます。
Pub/Sub は、複数のリージョン間でデータをシームレスに移動することもできます。つまり、パブリッシャーとサブスクライバーは最も近いリージョンに接続でき、残りの処理はサービスが行います。
Managed Service for Apache Kafka は、大量のデータを処理することもできます。ただし、クラスタサイズを管理し、トピックのスケーリングのニーズに基づいて他のいくつかのプロパティを構成する必要があります。最も重要なのは、トピックに割り当てるパーティションの数を検討することです。パーティションが多すぎると、リソースが無駄になる可能性があります。パーティションが少なすぎると、Kafka クラスタのブローカーが過負荷になる可能性があります。また、レイテンシとコンシューマーのファンアウトの要件に応じて、パーティションごとに構成する必要があるレプリカの数も考慮する必要があります。
Kafka デプロイは特定のリージョンに関連付けられているため、リージョン間でデータを移動する場合は、サービス外でデータ移動を行う必要があります。データ移動の継続的な健全性を確保し、Kafka クラスタ内のトピックのニーズを満たすと、運用作業が増えます。
Managed Service for Apache Kafka のポータビリティ
Pub/Sub の自動スケーリングとグローバル データ配信により運用は容易になりますが、Apache Kafka API はより広範に採用されています。
オンプレミス環境やクラウド プロバイダ環境で独立したメッセージング システムを使用する予定がある場合は、Managed Service for Apache Kafka を使用すると、アプリケーション全体でより一貫したエクスペリエンスを実現できます。これは、Kafka を標準化し、同じ API を使用して各環境の Kafka サービスと通信できるためです。
Pub/Sub をすべての環境で中央メッセージング システムとして使用することはできますが、Pub/Sub は独自の API を持つ個別のサービスであることを覚えておくことが重要です。特定の環境のメッセージング システムとやり取りする必要がある場合は、Managed Service for Apache Kafka を使用すると、より統一された開発エクスペリエンスが得られる可能性があります。
最適なサービス
さまざまな環境で一貫したエクスペリエンスが最も重要な場合は、Managed Service for Apache Kafka を選択します。ワークロードのスケーリングやリージョン間のデータ移動の構成を最小限に抑えることが目的の場合は、Pub/Sub が大きなメリットをもたらします。
次の要素が要件に該当する場合は、Pub/Sub を選択します。
Google Cloud内で運用の簡素化を優先します。
管理オーバーヘッドを最小限に抑えた、スケーラブルなサーバーレス ソリューションが必要です。
ワークロードのサイズが予測できないか、変化している。Pub/Sub は、ワークロードのスループットが安定している場合にも効果を発揮します。
単一の不良メッセージによるパイプラインの影響を最小限に抑えるために、メッセージごとの処理の追跡が必要です。Pub/Sub には、組み込みのデッドレター キュー(DLQ)と順序外メッセージ処理のサポートが用意されているため、問題のあるメッセージが発生した場合でもシステムを運用し続けることができます。
リージョン間のデータ集計が必要である。
パブリッシャーとサブスクライバーを個別にスケーリングする必要がある。
次の要素が要件に当てはまる場合は、Managed Service for Apache Kafka を選択します。
複数のクラウド プロバイダまたはオンプレミス環境間でのポータビリティが重要です。
Google Cloudに移行する既存の Kafka ワークロードがある。詳細については、既存の Kafka 設定に基づいて選択するをご覧ください。
トラフィック量が一定で、変動が少ない。
容量管理を行う。
キーあたりのスループットが高いメッセージの順序指定が必要である。
イベントログを信頼できる唯一の情報源としてイベント ソーシング パターンを使用したい。
既存の Kafka 設定に基づいて選択する
すでに Kafka を使用しており、 Google Cloudでマネージドで安全かつ信頼性の高いソリューションをお探しの場合は、Managed Service for Apache Kafka をおすすめします。
すでに Kafka を実行していて、アプリケーションを書き換えてスケーラビリティの高い自動スケーリングのグローバル サービスのメリットを得たい場合は、Pub/Sub をおすすめします。Kafka から Pub/Sub に移行するには、Kafka から Pub/Sub に移行するをご覧ください。
新しいワークロードや Google Cloudでのストリーミングを初めて使用するユーザーには、使いやすさの点で Pub/Sub が推奨されます。既存の Kafka ワークロードを最小限のコード変更でクラウドに移行する場合は、Managed Service for Apache Kafka が最適です。
Cloud プロダクトとの統合
Google Managed Service for Apache Kafka と Pub/Sub はどちらも、Dataflow、BigQuery、Cloud Storage などのさまざまなサービスと統合されています。 Google Cloud
マルチクラウド戦略が必要で、さまざまなクラウド プロバイダ間の移植性を優先する場合は、Managed Service for Apache Kafka の方が柔軟性が高くなります。これは、Kafka が Pub/Sub よりも幅広い Google Cloud 以外のシステムと統合されているためです。
機能の比較
前のセクションの概要レベルの決定基準が役に立たない場合は、特定の機能のサポートに基づいて選択できます。2 つの製品の詳細な比較については、次の表をご覧ください。
| 機能 | Pub/Sub | Managed Service for Apache Kafka |
|---|---|---|
| 使いやすさ | 設定と保守が容易 | 運用に手間がかかる |
| 費用モデル | 従量課金 | コンピューティングの容量ベースの料金 ネットワーキングとストレージの従量課金制。 |
| exactly-once 処理 | 単一の同時配信と強力な確認応答セマンティクスをサポートします。 | 1 つのトピックから読み取り、別のトピックに書き込む場合に、1 回限りの副作用をサポートします。 |
| スケーリング | 予測不可能なワークロードにも対応する、トピックあたり 1 秒あたり KB から GB へのシームレスな自動スケーリング。 | 手動構成が必要 |
| 順序付けられた配信 | キー内での順序付けが可能です。 きめ細かい順序指定キーあたり 1 MBps のスループット |
パーティション内の順序付けを提供します。 パーティションのスループット容量までのパーティションごとの順序付け。 |
| データの保持 | 31 日 | 無期限の保持 |
| エンドツーエンドのレイテンシ | エンドツーエンドのレイテンシは通常 100 ミリ秒程度 | 通常、適切な動作をするサブスクライバーの場合は 10 ミリ秒程度です。 |
| リフト&シフトのためのオープンソース Kafka の互換性 | いいえ | はい |
| ID とアクセスの管理とセキュリティ | はい | はい |
| ネットワークの自動構成 | はい | はい |
| マルチクラウド: クラウド間で同一 | いいえ | はい |
| 稼働時間に関する SLA | はい | はい |
| データプレーンの SLA | はい | 現時点では停止されません |
| ロギングとモニタリング | はい | はい |
| ブローカー間のパーティションの再調整 | 該当なし | はい |
| 自動容量 | Pub/Sub は、受信メッセージのレートとサブスクライバーの需要に基づいて容量を動的に調整します。 | このサービスは、VM やストレージなどの基盤となるインフラストラクチャを管理します。パーティションの数やレプリケーション係数などの側面を制御します。 |
| 自動ストレージ管理 | はい | はい |
| 自動ソフトウェア アップグレード | はい | はい |
| カスタマー サポート | はい | はい |
| Kafka Connect サービス | 該当なし | ユーザー提供の Connect サービスを使用する場合 |
| スキーマのサポート | はい | ユーザー指定のスキーマ レジストリを使用する |
| ks qIDB、KSQL と互換性があります | いいえ | はい |
| OSS コネクタのサポート | Kafka コネクタと Flink コネクタの場合は「はい」 | いいえ |
| データレイクとデータ ウェアハウスとの統合 | はい | はい |