Amazon Managed Streaming for Apache Kafka 機能

Amazon MSK が選ばれる理由

Amazon Managed Streaming for Apache Kafka (Amazon MSK) は、フルマネージド型の Apache Kafka、Kafka Connect、Amazon MSK Replicator を提供します。Apache Kafka は、ストリーミングデータをリアルタイムで取り込んで処理するために最適化された分散データストアです。Amazon MSK は、クラスターインフラストラクチャのプロビジョニング、Apache Kafka クラスターの設定、障害時のサーバーの交換、サーバーのパッチとアップグレードのオーケストレート、高可用性のためのクラスターの構築、データの永続的な保存とセキュリティの確保、モニタリングとアラームの設定、負荷変動をサポートするためのスケーリングの実行を行います。Amazon MSK を使用すると、Apache Kafka クラスターを管理する時間より多くの時間をストリーミングイベントアプリケーションの開発と実行に費やすことができます。

道路の鳥瞰図

スケーラブルな統合

Amazon MSK は、データの取り込みや処理サービス、マイクロサービスアプリケーションアーキテクチャの中心となる、最新のメッセージングおよびイベントドリブンアプリケーションの統合バックボーンです。他のさまざまな AWS サービスを含め、他のシステムと統合する方法はいくつもあり、アプリケーション開発をより簡単かつ迅速に行うことができます。独自のコネクタを持ち込んで、Amazon MSK Connect を使用してフルマネージド型のインフラストラクチャにデプロイできます。または、Amazon S3、Amazon Redshift、Amazon Managed Service for Apache Flink、AWS Lambda など、他の AWS サービスとのネイティブ統合の増え続けているリストの中から選択することもできます。Amazon MSK は、WS Identity and Access Management (IAM)、AWS Certificate Manager (ACM)、AWS Key Management Service (AWS KMS) とも統合されており、お客様のデータへの安全で認証および承認されたクライアントアクセスを提供します。AWS Glue スキーマレジストリを使用してスキーマガバナンスを適用するオプションもあります。

都市景観

Apache Kafka との互換性

Amazon MSK は そのままで Apache Kafka のすべての機能をサポートしており、Apache Kafka の新しいバージョンは一般公開から数週間以内に利用可能になります。

Amazon MSK は Apache Kafka のオープンソースクライアントプロトコルとの完全な互換性を維持しているため、Apache Kafka 向けに構築されたアプリケーションやツールはアプリケーションコードを変更することなく、すぐに Amazon MSK で動作します。

プロビジョンドクラスターの Apache Kafka バージョンをわずか数ステップでアップグレードできます。そのようにして、いつ Apache Kafka の新しいバージョンで提供されている機能やバグ修正を活用するか決められるようになります。Amazon MSK は、クライアントの I/O の可用性を維持するために、稼働中のクラスターへのバージョンアップグレードの展開を自動化します。

独自のクラスタータイプを選択

Amazon MSK Provisioned では、Apache Kafka クラスターをきめ細かく制御できます。ブローカータイプを選択し、サーバーインスタンスを事前にプロビジョニングし、必要なストレージのタイプを選択し、任意の Apache Kafka のバージョンを選択できます。また、ワークロードの変化に応じてクラスターをスケーリングするタイミングと程度を選択することもできます。

Amazon MSK Serverless は Apache Kafka クラスターを完全に管理するため、ワークロードに必要な容量を見積もったり、トラフィックの変化に応じてスケールするタイミングを判断したりする必要はありません。

サーバー管理が不要

どのクラスタータイプを選択しても、AWS マネジメントコンソールでいくつかのステップを実行するだけで、可用性が高く安全な完全マネージド型クラスターを作成できます。このクラスターは、クラスターの運用状態を自動的に維持する Amazon MSK の高度なモニタリングおよび検出システムによってサポートされています。

Apache Kafka はメタデータの管理のために Apache Kafka Raft (KRaft) または Apache ZooKeeper のいずれかを使用します。Amazon MSK では、サポートされている Apache Kafka バージョンでいずれのモードでもクラスターを作成できます。また、Amazon MSK は、追加コストなしでこれらの追加のメタデータノードも管理します。

複数のブローカータイプ

Express ブローカーは、MSK Provisioned で提供されるブローカーの一種です。Express ブローカーを利用すると、Apache Kafka の管理が簡単になり、大規模運用時のコスト効率が高まり、期待どおりの低レイテンシーで柔軟性が高まります。Express ブローカーには、管理オーバーヘッドを必要としない実質的に無制限の柔軟なストレージ容量があり、ブローカーあたりのスループットが最大 3 倍向上し、最大 20 倍高速に拡張できます。また、Amazon Managed Streaming services for Apache Kafka (MSK) では、標準の Apache Kafka ブローカーよりも最大 90% 速く復旧できます。

MSK Provisioned の Standard ブローカーは、クラスターのパフォーマンスを最も柔軟に設定できます。クラスターのさまざまな構成から選択して、可用性、耐久性、スループット、レイテンシーなどのディメンションを調整できます。Standard ブローカーでは、クラスターのストレージ構成も制御し、ストレージのプロビジョニングと使用率の管理も担います。

ストレージオプション

Express ブローカーには、サイズ設定、プロビジョニング、継続的な容量管理が不要な、事実上無制限で柔軟なストレージ容量が含まれています。ストレージ容量は、データ保持のニーズに合わせて自動的に拡張され、お支払いいただくのは使用したストレージ分のみです。

階層化ストレージを使えば、ストレージ容量のプロビジョニングや管理をすることなく、Amazon MSK に事実上無制限にデータを保存することができます。既存のクラスターに対して、いくつかのステップで階層化ストレージを有効にし、使用した分だけ支払うことができます。まず最初にパフォーマンスが最適化されたプライマリストレージ階層にデータを保存すると、Amazon MSK によって自動的に低コスト階層にデータが階層化され、保存期間が長くなります。この機能は、Amazon MSK が利用可能なすべての AWS リージョンでサポートされています。階層型ストレージの開始方法については、Amazon MSK デベロッパーガイドをご覧ください。

高い弾力性

すべてのクラスターは複数のアベイラビリティーゾーン (デフォルトは 3 つ) に分散されており、Amazon MSK では追加料金なしでこれらのアベイラビリティーゾーン間でデータをレプリケートできます。クラスターの可用性は、99.9% の可用性を保証する Amazon MSK サービスレベルアグリーメントによってもサポートされています。

Amazon MSK には、問題を迅速に検出して対応する自動化システムがあります。コンポーネントで障害が発生しても、Amazon MSK がアプリケーションのダウンタイムなしで自動的に交換します。また、クラスターを最新の状態に保ってスムーズに実行するため、必要に応じてソフトウェアパッチを自動的にデプロイします。

MSK Provisioned の Amazon MSK Serverless および Express ブローカーは、3 方向のレプリケーションなどのベストプラクティス設定を適用し、レプリケーションや復旧などのバックグラウンド操作用に帯域幅を予約するため、クラスターリソースの予測可能な可用性をより簡単に実現できます。

Amazon MSK Replicator を使用すると、別のリージョンのセカンダリバックアップクラスターへの継続的なデータレプリケーションを設定できます。これにより、可用性が高くフォールトトレラントなマルチリージョンアプリケーションを構築して耐障害性を高めることができます。また、MSK Replicator を使用して、異なるリージョンで低レイテンシーのデータアクセスを提供したり、パートナーにデータを配信したりできます。

高い安全性

Apache Kafka クラスターは、Amazon MSK によって管理される Amazon Virtual Private Cloud (Amazon VPC) で実行されます。お客様の Amazon VPC 内の Kafka クライアントは、Amazon MSK が VPC にデプロイするクロスアカウントの Elastic Network Interface を介して、クラスターにプライベートにアクセスできます。Kafka クライアントが 1 つ以上の VPC または AWS アカウントに分散している場合でも、マルチ VPC プライベート接続機能を使用してクラスターにプライベートに接続できます。この機能により、AWS PrivateLink ソリューションの自己管理によるオペレーションのオーバーヘッドが排除され、Amazon MSK クラスターのスケールに合わせてシームレスにスケールすることができるため、追加の設定を変更することなくクラスターへのプライベート接続を維持できます。マルチ VPC プライベート接続では、重複しない IP、他の VPC 接続ソリューションに関連する複雑なピアリングおよびルーティングテーブルを管理するという課題も解消されます。 マルチ VPC プライベート接続機能を使用すると、接続している VPC 間で IP を重複させることができます。

IAM アクセスコントロールは、追加費用なしで提供するセキュリティオプションです。IAM ロールやユーザーポリシーを使用してアクセスを制御することで、クラスター認証と Apache Kafka API 承認を簡素化します。IAM アクセスコントロールを使用すると、Apache Kafka のクライアント認証と認可を制御するために 1 回限りのアクセス管理システムを構築して実行する必要がなくなります。クラスターはデフォルトで最小権限の許可を使用して保護されます。プロビジョンドクラスターの場合、Simple Authentication and Security Layer (SASL)/Salted Challenge Response Authentication Mechanism (SCRAM) または Apache Kafka アクセスコントロールリスト (ACL) を使用した相互 Transport Layer Security (TLS) 認証を使用して、クライアントのアクセスを制御することもできます。

Amazon MSK では、特殊な設定やサードパーティー製ツールがなくても保管時にデータが暗号化されます。プロビジョンドクラスターの場合、保存中のデータはすべてデフォルトで AWS KMS キーを使用して、またはお客様ご自身のキーを使用して暗号化できます。また、ブローカー間およびクラスター上のクライアントとブローカー間の転送中のデータを TLS を介して暗号化することもできます。サーバーレスクラスターの場合、保管中のデータはすべてデフォルトでサービスマネージドキーを使用して暗号化され、転送中のデータはすべてデフォルトで TLS を介して暗号化されます。

Amazon MSK は、Apache Kafka 2.6.0 以降のバージョンを実行している Amazon MSK クラスターのブローカーにインターネット経由で安全に接続するオプションを提供しています。パブリックアクセスを可能にすることで、プライベートな Amazon Virtual Private Cloud (VPC) の外部にいる許可されたクライアントは、特定の Amazon MSK クラスターとの間で暗号化されたデータをストリーミングでやり取りすることができます。

スケーラブル

ブローカーを追加したり、より大きなサイズのブローカーインスタンスに移行したりすることで、ダウンタイムなしで数分で MSK プロビジョンドクラスターをスケーリングできます。同様に、ブローカーを削除するか、より小さなブローカーインスタンスに移行することで、クラスター容量をスケールダウンできます。

Amazon MSK Serverless クラスターは、アプリケーションのスループットニーズに応じて、ワークロードで利用できるコンピューティングリソースとストレージリソースを自動的に調整します。

Amazon MSK は、Apache Kafka 用の人気オープンソースツールである Cruise Control と統合しており、お客様に代わってパーテーションの割り当てを自動的に管理します。サーバーレスクラスターの場合、Amazon MSK がパーティションの割り当てを自動的に管理します。

AWS マネジメントコンソールまたは AWS Command Line Interface (AWS CLI) を使用して、ストレージ要件の変化に合わせてブローカーごとにプロビジョニングされるストレージの量をシームレスにスケールアップできます。また、オートスケーリングポリシーを作成することで、増大するストリーミング要件に合わせて自動的にストレージを拡張することができます。

設定可能

Amazon MSK では、クラスターをどの程度設定可能にするかを選択できます。Express Brokers には、Amazon MSK が推奨するデフォルトのベストプラクティスがあらかじめ設定されています。これにより、すぐに最適な可用性、耐久性、スループットパフォーマンスが得られます。ワークロードの特定のニーズを満たすように、選択した構成をカスタマイズできます。一方、Standard ブローカーでは、30 種類以上のクラスター設定を柔軟に変更できます。これにより、可用性、価格パフォーマンス、およびクラスター全体の動作を正確な要件に合わせて調整できます。また、Kafka の動的な設定やトピックレベルの設定もすべて利用できるため、エクスペリエンスをさらに向上させることができます。詳細については、Custom MSK Configurations ドキュメントを参照してください。

監視可能

CloudWatch を使用して、重要なメトリクスを視覚化してモニタリングし、ストリーミングアプリケーションのパフォーマンスを理解して維持することができます。50 を超えるメトリクスのデフォルトセットを追加料金なしで利用できます。また、より強化されたブローカーレベルおよびトピックレベルのモニタリングを有効にして、特定の問題のトラブルシューティングを行うこともできます。拡張メトリクスについては CloudWatch の標準料金が請求されます。

Open Monitoring with Prometheus では、DatadogLensesNew RelicSumo Logic、または Prometheus サーバーなどのソリューションを使用して Amazon MSK をモニタリングし、既存のモニタリングダッシュボードを簡単に Amazon MSK に移行することができます。詳しくは、Open Monitoring with Prometheus ドキュメントをご覧ください。

ブローカーログを使用すると、Apache Kafka アプリケーションのトラブルシューティングを行い、MSK クラスターとの通信を分析できます。Apache Kafka ブローカーログは、Amazon CloudWatch Logs、Amazon Simple Storage Service (Amazon S3)、Amazon Data Firehose のうちの 1 つまたは複数の送信先タイプに配信できます。AWS CloudTrail を使用して Amazon MSK API コールをログに記録することもできます。

深く統合

Amazon MSK では、さまざまな AWS 統合を提供しています。これらの統合には以下が含まれます。