コンテンツにスキップ

Amazon MSK(Managed Streaming for Apache Kafka)

1. サービス概要

Amazon MSK(Managed Streaming for Apache Kafka)は、Apache Kafka をフルマネージドで運用する AWS サービスである。
メッセージングやストリーミング処理に人気の高い Kafka を、クラスタ運用やアップグレード、スケーリングなどの煩雑な作業を AWS が代行し、高可用性とセキュアな環境を提供する。

主なユースケースとしては、

  • リアルタイムログ収集・分析
  • ストリーミングアプリケーションや、マイクロサービス間の非同期通信
  • IoT や金融トランザクションのイベント処理

などが挙げられる。
Kafka 固有の高スループット、順序性、耐障害性を備えつつ、運用負荷を大幅に低減できる。

2. 主な特徴と機能

2.1 フルマネージド Kafka クラスター

AWS がクラスターのノード管理やソフトウェアアップグレード、障害対応を自動で行う。
高可用性を実現するためにマルチ AZ レプリケーションが標準サポートされ、ロールアウト/ロールバック、メンテナンスもシームレスである。

2.2 バージョン選択と互換性

MSK は複数の Kafka バージョンを選択でき、既存アプリケーションとの互換性を保ちながら移行が可能である。
また、Kafka クライアントや独自プロデューサー/コンシューマーを修正せずに MSK へ接続できる。

2.3 スケーリングと自動リバランス

Broker のインスタンスタイプや数を柔軟に変更でき、パーティション数の拡張もサポート。
Kafka 特有のリバランス機能により、パーティション割り当てを自動調整し、高負荷時でも安定稼働を維持する。

2.4 セキュリティとモニタリング

暗号化 (At-rest / In-transit) や IAM/Amazon MSK の認証機能、VPC 内配置などにより安全性を確保。
CloudWatch や Open Monitoring(Prometheus 互換)により、ブローカやトピックのメトリクスをリアルタイムで監視できる。

2.5 エコシステムとの統合

Kafka Streams や KSQL、Spark、Flink など多数のストリーミング処理フレームワークと連携し、柔軟な拡張が可能である。
また、Connect プラグインを活用すれば、RDB や Data Lake、NoSQL データベースとの連携も簡単に実装できる。

3. アーキテクチャおよび技術要素

  1. MSK クラスターを作成し、Broker(Kafka サーバ)をマルチ AZ に分散
  2. プロデューサー(Log 送信、アプリケーションなど)がトピックにメッセージを送信
  3. Kafka Broker がメッセージをパーティション別に保持し、レプリカを AZ 間で同期
  4. コンシューマー(分析ツール、他サービスなど)がメッセージを順次取得し、リアルタイム処理
  5. メトリクスとログを CloudWatch/Open Monitoring に出力し、監視/可視化を行う

ブローカの冗長化とパーティションレプリケーションにより、単一障害点を排除しながら高スループット処理を実現する。

4. セキュリティと認証・認可

Amazon MSK でのセキュリティ設計は以下のポイントが重要である:

  • VPC 内配置: MSK ブローカをプライベートサブネットに置き、外部アクセスを制限
  • 暗号化: TLS による In-transit 暗号化、KMS キーを用いた At-rest 暗号化(Broker ノード、ログ、トピックデータ)
  • IAM 認証: IAM で認証を行う MSK 独自の機能を利用可能
  • SASL/SCRAM/Mutual TLS: Kafka ネイティブの認証方式もサポートし、多様なセキュリティ要件に対応
  • アクセス制御リスト(ACL): Kafka ACL を設定してトピック/グループ単位で読み書き権限を細かく管理

5. 料金形態

Amazon MSK の料金は以下に基づく:

  • Broker インスタンス: 稼働中のインスタンスサイズ・台数の時間従量課金
  • ストレージ: ブローカで使用する EBS 容量の GB 単位コスト、IOPS コスト(プロビジョンドモードの場合)
  • データ転送料: AZ 間レプリケーションやパブリック通信(通常は VPC 内通信)によるネットワーク料金
  • スナップショット: MSK クラスタのバックアップ・アーカイブに伴う追加ストレージ料金

6. よくあるアーキテクチャ・設計パターン

Amazon MSK を導入する上での代表的なパターンとしては以下がある:

  • リアルタイムログ収集: アプリケーションや IoT デバイスのイベントを Kafka で集約し、Spark や Kinesis へ連携
  • Microservices 間の非同期通信: 各サービス間を Kafka トピックで疎結合化し、水平スケールやリトライを簡単に
  • Big Data ETL パイプライン: MSK に取り込んだデータを EMR や Glue などで処理し、S3 や Redshift に保存
  • オフライン/オンライン分析統合: Hot Data を Kafka Streams や Flink でリアルタイム処理、Cold Data を S3 に蓄積して後解析

7. 設定・デプロイ手順(ハンズオン例)

  1. AWS コンソールで「Amazon MSK」を検索し、「Create cluster」をクリック
  2. クラスタ名と Kafka バージョンを選択、Broker インスタンスタイプ・数を指定
  3. ストレージサイズと Replication factor などを設定
  4. ネットワーク設定(VPC、サブネット、セキュリティグループ)やセキュリティ(TLS、暗号化など)を指定
  5. クラスタを作成し、ステータスが「Active」になったらブローカリストを取得
  6. Kafka クライアント(Producer/Consumer)で接続テストし、トピックの作成・メッセージ送受信を検証

8. 試験で問われやすいポイント

8.1 Kafka の基本概念

  • トピック/パーティション/オフセット: データストリーミングを管理する主要要素
  • Producer/Consumer グループ: メッセージを書き込み・読み取りするためのロール
  • Broker: Kafka サーバ。クラスター内でデータをレプリケーションする

8.2 マネージドの利点と制限

  • 利点: ノード管理やパッチ適用が自動化、監視やフェイルオーバーが容易
  • 制限: 一部バージョンやプラグインの制約、ブローカレベルでのカスタム設定に制限

8.3 スケーリング戦略

  • Broker 数増減: スループットに応じて Broker を追加し、パーティションを再割り当て
  • インスタンスタイプ変更: CPU やメモリを増強して性能向上
  • Elastic Scaling への期待: 今後のバージョンアップでの自動スケーリングに注目

8.4 セキュリティ手法

  • TLS 暗号化: クライアント ⇔Broker 間の通信を保護
  • SASL / IAM Auth: 認証機能でアクセスを制御
  • ACL 設定: Kafka ネイティブ ACL で Topic/ConsumerGroup ごとに権限を設定

8.5 料金とコスト最適化

  • Broker 従量課金: インスタンスサイズ・時間で費用が発生
  • EBS ストレージ: トピックに保持するデータ量に応じた GB コスト
  • ネットワーク転送量: AZ 間レプリケーションや外部送信量で追加料金

8.6 試験で頻出となる具体的な問われ方と答え

  • Q: MSK で Kafka を使うメリットは?
  • A: クラスター管理やアップグレードを AWS が代行し、マルチ AZ や暗号化などの要件を簡単に満たせる。
  • Q: MSK のセキュリティ設計で重要なのは?
  • A: VPC 内配置、TLS、IAM/SASL 認証、Kafka ACL による権限制御、KMS 暗号化。
  • Q: スケールアップ/ダウンはどう行う?
  • A: Broker インスタンスサイズ変更、Broker 数増減による再割り当て。停止時間やリバランスを考慮する。
  • Q: S3 との連携方法は?
  • A: Kafka Connect の S3 Connector を使い、メッセージを S3 に書き出したり、S3 から読み込む。
  • Q: MSK の料金要素は?
  • A: Broker の EC2 使用料、EBS ストレージ、AZ 間データ転送、追加でスナップショットやマネージドストレージのコスト。