このドキュメントでは、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 はすべての環境で中央のメッセージング システムとして使用できますが、独自の API を持つ個別のサービスであることを覚えておくことが重要です。特定の環境のメッセージ システムを操作する必要がある場合は、Managed Service for Apache Kafka を使用すると、より統合された開発エクスペリエンスを提供できます。
最適なサービス
さまざまな環境で一貫したエクスペリエンスが重要である場合は、Managed Service for Apache Kafka を選択します。ワークロードのスケーリングやリージョン間のデータ移動の最小構成に重点を置いている場合は、Pub/Sub が優れた利点を提供します。
次の要因が要件に当てはまる場合は、Pub/Sub を選択します。
Google Cloud内の運用の簡素化を優先します。
オーバーヘッドの管理を最小限に抑えたスケーラブルでサーバーレスなソリューションが必要です。
ワークロードのサイズが予測できない、または変化する。Pub/Sub は、ワークロードのスループットが安定している場合にも適しています。
1 つの不適切なメッセージによるパイプラインへの影響を最小限に抑えるには、メッセージごとの処理の追跡が必要です。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 ワークロードを Cloud に移行する場合は、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 の互換性 | × | ○ |
Identity and Access Management とセキュリティ | ○ | ○ |
ネットワークの自動構成 | ○ | ○ |
マルチクラウド: クラウド間で同一 | × | ○ |
稼働時間に関する SLA | はい | ○ |
データプレーンの SLA | はい | 現時点では対応していません |
ロギングとモニタリング | ○ | ○ |
ブローカー間でのパーティションの再分散 | 該当なし | ○ |
自動容量 | Pub/Sub は、受信メッセージのレートとサブスクライバーの需要に基づいて容量を動的に調整します。 | このサービスは、VM やストレージなどの基盤となるインフラストラクチャを管理します。パーティションの数やレプリケーション係数などの要素を制御します。 |
自動ストレージ管理 | ○ | ○ |
自動ソフトウェア アップグレード | ○ | ○ |
カスタマー サポート | ○ | ○ |
Kafka Connect サービス | 該当なし | ユーザー提供の Connect サービスを使用する |
スキーマのサポート | ○ | ユーザー提供のスキーマ レジストリを使用する |
ks qIDB、KSQL と互換性があります。 | × | ○ |
OSS コネクタのサポート | Kafka コネクタと Flink コネクタの場合: はい | × |
データレイクとデータ ウェアハウスとの統合 | ○ | ○ |