Amazon MSK で構築する Apache Kafka ストリーミング基盤 - クラスタ設計と運用
Amazon MSK のクラスタ設計、MSK Serverless との使い分け、MSK Connect によるデータ連携パターンを解説します。
MSK の特徴と Kinesis との使い分け
この記事は約 4 分で読めます。 MSK は Apache Kafka のマネージドサービスで、ブローカーのプロビジョニング、パッチ適用、障害復旧を AWS が管理します。Kafka のプロトコルと完全互換のため、既存の Kafka プロデューサー、コンシューマー、Kafka Streams アプリケーション、Connect コネクタをそのまま使用できます。Kinesis Data Streams との使い分けは、既存の Kafka エコシステムとの互換性が必要な場合は MSK、AWS ネイティブな統合とシンプルさを優先する場合は Kinesis を選択します。Kinesis はシャード単位の従量課金でスモールスタートに適し、MSK はブローカーインスタンスの時間課金で大規模ストリーミングのコスト効率が高くなります。
この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。
クラスタ設計と MSK Serverless
プロビジョンドクラスタではブローカーのインスタンスタイプ (kafka.m5.large など)、ブローカー数、ストレージ容量を指定します。本番環境では最低 3 ブローカー (各 AZ に 1 台) を推奨し、レプリケーションファクター 3、min.insync.replicas 2 の設定でデータの耐久性を確保します。MSK Serverless は 2022 年に GA となったモードで、クラスタのプロビジョニングが完全に不要です。トピックの作成とデータの送受信だけに集中でき、スループットはパーティション単位で自動スケールします。トラフィックパターンが予測困難な場合や、運用チームのリソースが限られる場合に最適です。ただし、Kafka の設定パラメータのカスタマイズはプロビジョンドクラスタの方が柔軟です。
MSK Connect によるデータ連携
MSK Connect は Kafka Connect のコネクタをマネージドに実行するサービスです。S3 Sink Connector でトピックのデータを S3 に自動的に書き出し、Redshift や Athena で分析できます。DynamoDB Sink Connector でリアルタイムにテーブルを更新し、Debezium Source Connector で RDS のテーブル変更をキャプチャして Kafka トピックに流すことも可能です。コネクタのスケーリングは自動または手動で設定でき、ワーカー数を増減してスループットを調整します。コネクタプラグインは S3 にアップロードした JAR ファイルから作成するため、Confluent Hub や OSS コミュニティのコネクタを自由に利用できます。
さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。
まとめ
MSK は Apache Kafka の運用管理を AWS に委託しつつ、Kafka エコシステムの互換性を維持するサービスです。MSK Serverless で運用負荷を最小化し、MSK Connect でデータ連携を自動化することで、ストリーミングデータの活用に集中できます。
AWS の優位点
- Apache Kafka と完全互換のマネージドサービスで、既存の Kafka クライアント、ツール、コネクタをそのまま使用できる
- MSK Serverless はクラスタのプロビジョニングが不要で、パーティションあたりの自動スケーリングにより運用負荷をゼロに近づける
- MSK Connect で Kafka Connect のコネクタをマネージドに実行し、S3、DynamoDB、Elasticsearch へのデータ連携をコードなしで構築できる
- ブローカーあたり最大 3,000 パーティションをサポートし、大規模なイベントストリーミング基盤に対応する
- TLS 暗号化、SASL/SCRAM 認証、IAM アクセス制御の 3 層セキュリティでデータの機密性を確保できる