Amazon MSK
Apache Kafka をフルマネージドで提供し、リアルタイムストリーミングデータ処理を実現するサービス
何ができるか
Amazon MSK (Managed Streaming for Apache Kafka) は、Apache Kafka をクラウド上で簡単に構築・運用できるフルマネージドサービスです。Kafka クラスターのプロビジョニング、設定、パッチ適用、障害対応をすべて AWS が管理するため、開発者はストリーミングアプリケーションの構築に集中できます。オープンソースの Apache Kafka と完全互換であり、既存の Kafka アプリケーションをコード変更なしで移行できます。
どのような場面で使うか
リアルタイムのログ集約と分析、クリックストリームデータの収集と処理、IoT センサーデータのストリーミング、マイクロサービス間のイベント駆動アーキテクチャ、データベースの変更データキャプチャ (CDC)、リアルタイムの不正検知システムなど、大量のストリーミングデータを低レイテンシで処理する必要がある場面で活用されています。 この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。
身近な例え
高速道路の料金所に例えるとわかりやすいでしょう。大量の車 (データ) が絶え間なく流れてくる中、料金所 (Kafka ブローカー) が車を整理して適切なレーン (トピック) に振り分けます。Amazon MSK は料金所の建設・保守・拡張をすべて代行してくれるため、利用者は車の流れの設計だけに集中できます。
Amazon MSK とは
Amazon MSK は、Apache Kafka のマネージドサービスです。Apache Kafka はリアルタイムストリーミングデータパイプラインの構築に広く使われるオープンソースプラットフォームですが、自前で運用するにはクラスターの構築、ZooKeeper の管理、ブローカーの監視、パッチ適用など多くの運用作業が必要です。MSK はこれらの運用負荷をすべて AWS に委任でき、99.9% の可用性 SLA を提供します。Kafka のネイティブ API をそのまま利用できるため、既存のプロデューサーやコンシューマーアプリケーションの移行も容易です。
MSK Serverless と MSK Provisioned
Amazon MSK には 2 つのデプロイオプションがあります。MSK Provisioned は従来型のクラスター構成で、ブローカーのインスタンスタイプやストレージ容量を明示的に指定します。ワークロードの特性が予測可能な場合に適しています。MSK Serverless はクラスターの容量管理が完全に自動化されており、トラフィックに応じてスケールアップ・ダウンします。初期設定が簡単で、ワークロードが変動する場合やスモールスタートに最適です。どちらもオープンソース Kafka との互換性は同等です。
セキュリティと統合
Amazon MSK は多層的なセキュリティ機能を提供します。通信の暗号化 (TLS)、保存データの暗号化 (AWS KMS)、IAM 認証、SASL/SCRAM 認証、Apache Kafka ACL によるきめ細かなアクセス制御が可能です。VPC 内にクラスターを配置することで、ネットワークレベルの分離も実現できます。AWS Glue Schema Registry との統合によりスキーマ管理を一元化でき、Amazon S3、Amazon Redshift、OpenSearch Service などへのデータ連携も MSK Connect を使って簡単に構築できます。
Azure・オンプレミスとの比較
AWS の優位点
- オープンソース Apache Kafka と完全互換であり、既存の Kafka アプリケーションやエコシステムツールをコード変更なしでそのまま利用できる
- MSK Serverless によりクラスターの容量管理が完全に自動化され、トラフィック変動に応じた自動スケーリングで運用負荷をゼロに近づけられる
- MSK Connect を使って S3、Redshift、OpenSearch など AWS サービスへのデータパイプラインをコネクタ設定だけで構築でき、カスタムコードが不要になる
注意点
- Kinesis Data Streams と比較して、既存の Kafka エコシステム (Connect、Streams、ksqlDB) をそのまま活用したい場合に MSK が適している
- MSK Serverless はパーティション数に上限があるため、大規模なワークロードでは MSK Provisioned の利用を検討すること
さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。