WEB問題集
あるデータエンジニアは、IoT センサーから 1 秒あたり最大 10MB のデータを Amazon Kinesis Data Streams に送信するパイプラインを設計しています。各レコードは平均 5KB で、ピーク時には 1 秒あたり 2,000 レコードに達します。プロビジョンドモードで構成する場合、最低限必要なシャード数はいくつになりますか。
正解:A
正解の根拠
Kinesis Data Streams のシャードは書込側で 1MB/秒 または 1,000 レコード/秒 のいずれか先に到達した上限で頭打ちです。本問は書込量 10MB/秒で 10 シャード相当、レコード数 2,000 件/秒で 2 シャード相当が必要となるため、最大値 10 が最小構成となります。
シャード上限と必要数
| 観点 | 上限 | 必要数 |
|---|---|---|
| 書込量 | 1 MB/秒 | 10 |
| レコード数 | 1,000 件/秒 | 2 |
不正解の理由
- B: 20 シャードは安全マージンとしては妥当ですが、最小構成という設問条件を満たさずコスト面で過剰となります。
- C: 5 シャードでは書込量 5MB/秒までしか処理できず、ピーク時に ProvisionedThroughputExceededException が発生します。
- D: 2 シャードはレコード数のみを根拠とした計算で、書込量上限 2MB/秒を 5 倍超過するためスロットリングが起きます。
ある企業では Kinesis Data Streams を使ってリアルタイムデータを処理しています。複数の独立したコンシューマーアプリケーションが同じストリームから低レイテンシで読取りを行いつつ、互いの読取り性能に影響を与えない構成にしたいと考えています。最も適切な機能はどれですか。
正解:B
正解の根拠
Kinesis Data Streams の Enhanced Fan-Out (EFO) はコンシューマー単位に専用 2 MB/s スループットを提供し、HTTP/2 push でレイテンシも約 70 ms 程度に短縮されます。複数コンシューマーが同時にフルスループットを得られます。
EFO の効果
| 要素 | 効果 |
|---|---|
| 専用 2 MB/s | 共有不要 |
| HTTP/2 push | 低レイテンシ |
| 登録 | SubscribeToShard |
不正解の理由
- A: ストリーム複製は重複コストが発生する副作用があり、EFO の単一ストリーム多重消費という設計目的と整合しません。
- C: シャード分割はパーティションキーで決まるため割当を選べない副作用があり、コンシューマー単位分離の設計目的に合致しません。
- D: SQS FIFO は順序保証つき独立キューで、Kinesis のストリーミングモデルとはサービス目的が異なります。
あるアプリケーションが Kinesis Data Streams の単一シャードに対して ProvisionedThroughputExceededException を頻繁に発生させており、調査の結果、特定のパーティションキーに書込が集中していると判明しました。最も適切な対処方法を 2 つ選んでください。
(2つ選択)
正解:A, C
正解の根拠
Kinesis Data Streams の書込スループットはシャード単位 (1 MB/s, 1000 records/s) で決まります。書込制限は (1) パーティションキー分散の改善 (2) シャード数の増加 の二軸で対処します。乱数サフィックス付与でホットスポットを解消し、UpdateShardCount でスプリットして容量を増やします。
書込スケール対応
| 対策 | 効果 |
|---|---|
| キー分散 | ホットシャード解消 |
| シャード追加 | 総スループット増 |
| On-Demand | 自動スケール |
不正解の理由
- B: 保持期間延長は再試行ウィンドウの拡大が目的で、書込制限自体を緩和する機能ではありません。
- D: チェックポイント間隔の調整はコンシューマー側の進捗管理機能で、プロデューサ側の書込制限の解消とは関係しません。
- E: コンシューマー並列度は読取スループットの観点で、書込側のスロットリング解消機能とは対象が異なります。
あるデータエンジニアは、Kinesis Data Streams で 1 日あたりのデータ量が大きく変動するワークロードを管理しています。ピークとオフピークで 10 倍以上の差があり、運用負荷を最小化しつつコストも最適化したい状況です。最も適切なキャパシティモードはどれですか。
正解:C
正解の根拠
オンデマンドモードは AWS 側が書込トラフィックに応じて自動的にキャパシティを調整する課金形態であり、ピークとオフピークで 10 倍以上の差があるワークロードに最適となります。シャード数の事前見積もりや手動切替えが不要となるため、運用負荷とコスト最適化を同時に満たすことができます。前 30 日のピークの 2 倍まで自動追従するため、突発的な増加にも耐えられる設計となっています。
キャパシティモード比較
| モード | 課金 | スケーリング | 適性 |
|---|---|---|---|
| Provisioned | シャード時間 + PUT 単位 | 手動 / Auto Scaling | 予測可能で安定したワークロード |
| On-Demand | 取込量 GB / 取得量 GB | 自動 (前 30 日ピークの 2 倍まで) | 変動が大きく予測困難なワークロード |
モード切替 CLI
aws kinesis update-stream-mode --stream-arn arn:aws:kinesis:ap-northeast-1:123456789012:stream/my-stream --stream-mode-details StreamMode=ON_DEMAND不正解の理由
- A: ピーク固定はオフピーク時に大幅な過剰プロビジョンとなり、コスト効率が悪化してしまいます。
- B: 半分構成ではピーク時に頻繁なスロットリングが発生し、データ損失や処理遅延の原因となります。
- D: 手動切替スクリプトは運用負荷が高いうえ、変動の予測ミスでサービス影響が出やすい構成です。
あるデータエンジニアは、Kinesis Data Streams から読取って変換処理を行う Lambda 関数を運用しています。ストリームは 10 シャード構成で、シャードあたりの並列処理数を増やしてスループットを向上させたいと考えています。Event Source Mapping で調整すべきパラメータはどれですか。
正解:C
正解の根拠
Kinesis を Lambda イベントソースとする場合、ParallelizationFactor (1〜10) を引上げることで、1 シャードあたりの並列 Lambda 起動数を増加させスループットを向上できます。順序保証はパーティションキー単位で維持されます。
パラメータ
| 項目 | 効果 |
|---|---|
| ParallelizationFactor | 並列度向上 |
| BatchSize | 1 回処理量 |
| EFO | 取得帯域 |
不正解の理由
- A: BatchSize 増加は 1 回処理量を増やすが、Lambda 単一起動内処理が直列化する副作用があり並列度は向上しません。
- B: MaximumRetryAttempts は再試行回数で、スループット向上ではなくエラー処理目的の機能であり設計目的が異なります。
- D: EFO はコンシューマー側スループットを上げるが Lambda 取得は標準で 2 MB/s 共有のままで、並列度パラメータとは別の機能領域です。
