Amazon MSK(Managed Streaming for Apache Kafka)設計パターン5選|SAA-C03 頻出の Kafka 管理クラスター・イベント駆動アーキテクチャ完全攻略

AWS SAA-C03 で頻出の Amazon MSK(Managed Streaming for Apache Kafka)を完全整理。MSK vs Kinesis の使い分け・ブローカー/トピック/パーティション/コンシューマーグループの基本構造・Lambda トリガー・データレイクパイプライン・マイクロサービス連携・MSK Serverless の設計パターンを体系化。試験シナリオを解法パターンで一気に整理する。

「MSK は Kinesis より高機能だから MSK を選ぶ、という発想が最大のワナ。MSK を選ぶのは『Kafka API 互換性・既存 Kafka アプリの移行・複数コンシューマーグループによる独立した再消費』が必要なときに限る。Kinesis で十分な要件に MSK を投入すると、ブローカー管理コストが跳ね上がる」 — 本記事では SAA-C03 頻出の Amazon MSK 設計パターン5選を体系化し、MSK と Kinesis の判断軸から試験シナリオを即断できる粒度まで分解する。

※ 本記事はアフィリエイト広告(Amazon アソシエイト等)を含みます


📑 目次

  1. 結論:MSK を選ぶ判定軸
  2. MSK の基本構造(ブローカー・トピック・パーティション・コンシューマーグループ)
  3. パターン1:リアルタイムイベント処理(MSK + Lambda)
  4. パターン2:データレイクパイプライン(MSK → S3/Redshift)
  5. パターン3:マイクロサービス間イベント連携(MSK + ECS/EKS)
  6. パターン4:MSK Serverless(スパイク対応・容量管理なし)
  7. パターン5:MSK Connect(既存コネクタによるデータ統合)
  8. MSK vs Kinesis Data Streams 使い分け表
  9. 試験頻出シナリオ → 解法パターン早見表
  10. 次のアクション チェックリスト
  11. 関連記事
  12. 関連サイト

1. 結論:MSK を選ぶ判定軸

Amazon MSK(Managed Streaming for Apache Kafka)は、Apache Kafka クラスターを AWS 上でフルマネージドに運用できるサービスだ。「高スループットだから MSK」という短絡的な判断は SAA 試験でも実務でも間違いのもとになる。

MSK を選ぶべき3要件

要件MSKKinesis Data Streams
Kafka API 互換性が必要(既存アプリをそのまま移行)✅ Kafka クライアントがそのまま動作❌ 独自 API のため移行改修が必要
複数の独立したコンシューマーグループが同一トピックを再消費✅ コンシューマーグループが独立して offset を管理△ 拡張コンシューマーは高コスト
Kafka エコシステム(Kafka Connect, Kafka Streams)を活用✅ フルサポート❌ 非対応

2. MSK の基本構造

MSK の動作を理解するには「ブローカー・トピック・パーティション・コンシューマーグループ」の4要素を押さえる。

ブローカー(Broker)

MSK クラスターは複数の Kafka ブローカー(EC2 インスタンス) で構成される。ブローカーはメッセージの受信・保存・配信を担う。可用性のためにブローカーは複数 AZ に分散配置される(最小3ブローカー推奨)。

トピック(Topic)・パーティション(Partition)

データは トピック という名前付きキューに書き込まれる。各トピックは複数の パーティション に分割され、パーティション単位でスループットをスケールする。パーティション数を増やすと並列処理能力が上がる。

コンシューマーグループ(Consumer Group)

複数のコンシューマーを1つのコンシューマーグループにまとめると、グループ内でパーティションが分散消費される。異なるグループは独立して同じトピックを消費できる—これが MSK の最大の強みであり、Kinesis との根本的な違いだ。

Producer --> [Topic: orders]
              |--[Partition 0]--|
              |--[Partition 1]--|  --> Consumer Group A(注文処理)
              |--[Partition 2]--|  --> Consumer Group B(在庫更新)← 独立した再消費

3. パターン1:リアルタイムイベント処理(MSK + Lambda)

シナリオ:EC サイトで注文イベントを MSK トピックに書き込み、Lambda が即座に処理してリアルタイム通知を送る。

注文アプリ
  → MSK トピック(orders)
    → Lambda(MSK をイベントソースとして設定)
      → SNS → メール・プッシュ通知

設計ポイント

  • Lambda の MSK イベントソースマッピング を使うと、トピックのメッセージを Lambda が自動的にポーリングして処理する
  • バッチサイズ・バッチウィンドウを設定して処理効率を調整
  • Lambda は コンシューマーグループとして動作し、複数 Lambda 関数を別グループにすれば独立した並列処理が可能

4. パターン2:データレイクパイプライン(MSK → S3/Redshift)

シナリオ:IoT センサーデータをリアルタイムで MSK に取り込み、S3 データレイクへ蓄積して Athena で分析する。

IoT デバイス
  → MSK トピック(sensor-data)
    → MSK Connect(S3 Sink Connector)
      → S3(Parquet 形式)
        → AWS Glue カタログ
          → Athena(分析)

設計ポイント

  • MSK Connect の S3 Sink Connector を使うと、Kafka トピックのデータを S3 に自動書き込みできる
  • Parquet/ORC 形式で保存すれば Athena のスキャンコストを削減できる
  • Redshift へ直接書き込む場合は Redshift Sink Connector を使用

5. パターン3:マイクロサービス間イベント連携(MSK + ECS/EKS)

シナリオ:複数のマイクロサービス(ECS 上)が MSK トピックを介して疎結合に連携する。

注文サービス(ECS)
  → MSK トピック(order-events)
    → 在庫サービス(ECS)   ← Consumer Group A
    → 配送サービス(ECS)   ← Consumer Group B
    → 分析サービス(ECS)   ← Consumer Group C

設計ポイント

  • 各マイクロサービスが独立したコンシューマーグループを持つため、1サービスの障害が他のサービスの消費に影響しない
  • ECS タスクがスケールアウトすると、同グループ内でパーティションが再配分(リバランス)される
  • MSK の 自動作成ポリシー でトピックの自動作成を制御する

6. パターン4:MSK Serverless(スパイク対応・容量管理なし)

シナリオ:トラフィックが予測困難なアプリケーションで、ブローカー管理なしに Kafka を使いたい。

MSK には2つのモードがある:

モード特徴向いているケース
MSK プロビジョニングブローカー数・インスタンスタイプを手動設定安定した高スループット、コスト予測が必要な本番環境
MSK Serverlessブローカーレス・自動スケール・使った分だけ課金トラフィックが不規則・開発/テスト・スパイク対応

MSK Serverless の制約(試験に出やすい):

  • 認証は IAM のみ(SASL/SCRAM、mTLS は非対応)
  • リテンション期間は最大 24 時間(プロビジョニングは最大 7 日)
  • パーティション数の上限はプロビジョニングより低い

7. パターン5:MSK Connect(既存コネクタによるデータ統合)

MSK Connect は Kafka Connect をフルマネージドで実行できるサービスだ。オープンソースのコネクタを使って、外部システムと Kafka トピックを双方向に接続する。

コネクタ種別方向ユースケース
Source Connector外部システム → MSKRDS(Debezium CDC)、S3、MongoDB からのデータ取り込み
Sink ConnectorMSK → 外部システムS3、Redshift、OpenSearch、DynamoDB への書き込み

8. MSK vs Kinesis Data Streams 使い分け表

SAA-C03 で最も問われるのが「MSK か Kinesis か」の選択。以下の判定表を丸暗記する。

評価項目
Amazon MSK
Amazon Kinesis Data Streams
Kafka API 互換性 ✅ Kafka クライアントそのまま使える ❌ AWS 独自 API が必要
既存 Kafka の移行 ✅ そのまま移行可(Lift & Shift) ❌ コード改修が必要
コンシューマーグループ ✅ 複数グループが独立して再消費可 △ 拡張ファンアウトで対応可だが高コスト
スループットのスケール パーティション数で調整(手動) シャード数で調整(自動 or 手動)
データ保持期間 最大 7 日(Serverless は 24h) 最大 365 日
AWS サービスとの統合 Lambda/S3/MSK Connect 豊富(Firehose/Lambda/Glue/Analytics)
運用コスト ブローカー管理・モニタリングが必要 フルマネージド・管理不要
料金モデル ブローカー稼働時間+ストレージ シャード時間+データ量
SAA の選択基準 Kafka 互換性 or Kafka エコシステムが要件 AWS ネイティブ統合 or シンプル優先

9. 試験頻出シナリオ → 解法パターン早見表

シナリオのキーワード正解サービス理由
「既存 Kafka アプリをそのまま AWS へ移行したい」MSKKafka API 互換性が必須
「複数のサービスが同じメッセージを独立して再処理したい(Kafka クライアント使用)」MSKコンシューマーグループの独立再消費
「リアルタイムデータを S3/Redshift に自動配信したい」Kinesis FirehoseMSK Connect より設定が簡単、AWS ネイティブ統合
「秒単位のリアルタイム処理、複数 Lambda が同時処理」Kinesis Data StreamsAWS ネイティブ、Lambda 統合が簡単
「ブローカー管理なしに Kafka を使いたい、トラフィック予測不能」MSK Serverlessサーバーレスモードで自動スケール
「IoT データを DB 変更と一緒にリアルタイム連携(CDC)」MSK + DebeziumMSK Connect の Source Connector
「Kafka Connect の既存コネクタを活用して DynamoDB/OpenSearch に書き込む」MSK ConnectSink Connector でマネージドに実行
「マイクロサービス間の非同期メッセージング(単一キュー、順序保証不要)」SQSMSK は過剰設計になる

10. 次のアクション チェックリスト

SAA 試験に向けて、以下を確認しておこう:

  • MSK を選ぶ3条件(Kafka 互換性・コンシューマーグループ独立再消費・Kafka エコシステム)を暗記した
  • MSK vs Kinesis の判定基準(シナリオにKafkaキーワードがあるかどうか)を実際の問題で練習した
  • MSK Serverless の制約(IAM 認証のみ、リテンション 24h)を押さえた
  • MSK Connect のコネクタ種別(Source / Sink)と主要ユースケースを理解した
  • Debezium CDC パターン(RDS 変更 → MSK → 他サービス連携)を図で描けるようにした
  • 本記事の「試験頻出シナリオ早見表」を1分で見直せるようにした

11. 関連記事


12. 関連サイト

出典・参考情報