type
status
date
slug
summary
tags
category
icon
password
理論
1. Amazon EC2の使用方法とインスタンスの料金モデル
Amazon EC2(Elastic Compute Cloud)は、オンデマンドでコンピュータリソースを提供するサービスです。EC2インスタンスの料金には、オンデマンド、リザーブド、スポットインスタンスの3つの主要な料金モデルがあります。
- オンデマンドインスタンス: 使用した時間に基づいて課金される、最も柔軟なオプションです。短期間での使用には便利ですが、長期間の使用には高額になる可能性があります。
- リザーブドインスタンス: 特定の期間(1年または3年)でインスタンスを予約することで、オンデマンドよりもコストを抑えることができます。ただし、事前に購入する必要があり、一定の柔軟性を欠くため、長期的な使用が確定している場合に有利です。
- スポットインスタンス: AWSが未使用のキャパシティを利用して提供する、最もコスト効果の高いインスタンスオプションです。ただし、リソースが必要になった場合にはインスタンスが停止される可能性があるため、利用には慎重さが必要です。
2. AWS Batch

AWS Batchは、大規模なバッチ処理を簡単に実行するための完全マネージドサービスです。AWS Batchはジョブスケジューリング、コンテナ化された処理、インスタンスのスケーリングなどを管理し、インフラの管理負担を大幅に削減します。
- スポットインスタンスの使用: AWS Batchではスポットインスタンスを使用することで、コスト効率をさらに向上させることができます。特に処理の優先度が低く、失敗しても再試行が可能なジョブに適しています。
- バッチ処理のスケーリング: AWS Batchは、処理の負荷に応じてインスタンスの数を動的に調整するため、リソースの無駄を減らし、コストを削減することができます。
3. Amazon Kinesis Data Firehose
Amazon Kinesis Data Firehoseは、データストリーミングのための完全マネージド型サービスで、リアルタイムでデータを収集、変換、保存することができます。データをAmazon S3、Amazon Redshift、Amazon Elasticsearchなどに自動的にストリーミングすることができます。
- データのストリーミングと保存: Kinesis Data Firehoseを使用すると、ストリーミングデータをリアルタイムで保存でき、処理を後で行うためにデータを一時的に保持することができます。これにより、データの即時処理や後処理のスケジュールが可能になります。
4. Amazon S3
Amazon S3(Simple Storage Service)は、スケーラブルで高可用性のあるオブジェクトストレージサービスです。バッチ処理や大規模データの保存に頻繁に使用されます。Kinesis Data Firehoseと組み合わせて使用することで、ストリーミングデータを効率的に保存し、後続の処理に利用することができます。
- バッチ処理に適したストレージ: S3は、高いスループットとスケーラビリティを提供するため、バッチ処理や分析に非常に適しています。データの保存やアーカイブに使い、S3上のデータを他のサービス(例えばAWS Lambda、Redshiftなど)で処理することができます。
5. AWS Lambda
AWS Lambdaは、サーバーレスの計算サービスで、コードをイベントに基づいて自動的に実行します。これにより、サーバーの管理やスケーリングを気にせずに、イベント駆動型の処理を実行できます。
- サーバーレス処理: AWS Lambdaを使用すれば、インフラを管理することなく、データの処理や統計の集計などを実行できます。例えば、KinesisやS3イベントをトリガーにしてLambda関数を実行することで、リアルタイムまたは定期的なデータ処理が可能です。
6. Amazon Redshift
Amazon Redshiftは、ペタバイト規模のデータウェアハウスソリューションで、大規模なデータの分析を高速で行うことができます。大量のデータを集約して、迅速にクエリを実行できるため、分析用途に最適です。
- データ分析のためのデータストレージ: バッチ処理後の集計結果をRedshiftに保存し、データを迅速に分析することができます。Redshiftは高い並列処理能力を持ち、ビジネスインテリジェンス(BI)ツールやダッシュボードに活用することができます。
7. コスト最適化
AWSでは、リソースの利用効率を最適化することで、コスト削減が可能です。以下の方法でコスト効率を最大化できます。
- スポットインスタンスの活用: 特に優先度が低く、停止しても問題ないジョブにスポットインスタンスを使用することで、コストを最大50%削減できます。
- オートスケーリング: AWSのオートスケーリング機能を使用すると、需要に応じてインスタンス数を増減させ、リソースを無駄なく使用できます。
- 予約インスタンス: 長期的に安定したリソース需要がある場合、リザーブドインスタンスを使って割引を受けることができます。
結論
データのストリーミング処理やバッチ処理の設計において、コスト効率を最適化するための選択肢は、スポットインスタンスの利用やAWS Batch、Kinesis Data Firehoseを活用したアーキテクチャの選定です。これにより、柔軟性とコスト削減を両立させながら、大規模なデータ処理を効率的に行うことができます。
実践
一問道場
問題 #291
トピック 1
ある企業は、ストリーミング市場データを取り込み、処理しています。データの取り込み速度は一定です。毎晩行われる集計統計の計算には4時間かかります。この統計分析はビジネスにとって重要ではなく、特定の実行が失敗しても次回の実行でデータポイントを処理できます。
現在のアーキテクチャでは、1年間の予約をしたAmazon EC2リザーブドインスタンスのプールを使用しています。これらのEC2インスタンスはフルタイムで動作し、ストリーミングデータを取り込んでAmazon Elastic Block Store(Amazon EBS)ボリュームに保存しています。毎晩スケジュールされたスクリプトがEC2オンデマンドインスタンスを起動し、そのインスタンスで保存されたデータにアクセスして夜間の処理を行います。処理が完了するとスクリプトがインスタンスを終了します。
リザーブドインスタンスの予約が終了します。会社は、新しい予約を購入するべきか、別の設計を採用すべきかを決定する必要があります。
どのソリューションが最もコスト効果の高い方法となりますか?
A. 取り込みプロセスを変更し、Amazon Kinesis Data Firehoseを使用してデータをAmazon S3に保存します。毎晩のバッチ処理のためにスケジュールされたスクリプトでEC2オンデマンドインスタンスのフリートを起動し、処理が完了した後にインスタンスを終了します。
B. 取り込みプロセスを変更し、Amazon Kinesis Data Firehoseを使用してデータをAmazon S3に保存します。AWS Batchを使用し、スポットインスタンスを最大でオンデマンド価格の50%で使用して毎晩の処理を実行します。
C. 取り込みプロセスを変更し、EC2リザーブドインスタンスのフリートを3年間の予約でネットワークロードバランサー(NLB)の背後に配置します。AWS Batchを使用し、スポットインスタンスを最大でオンデマンド価格の50%で使用して毎晩の処理を実行します。
D. 取り込みプロセスを変更し、Amazon Kinesis Data Firehoseを使用してデータをAmazon Redshiftに保存します。Amazon EventBridgeを使用して、毎晩Amazon Redshiftをクエリして統計を生成するAWS Lambda関数をスケジュールします。
解説
この問題では、企業がデータ処理のコストを最適化するために、既存のEC2インスタンスのリザーブドインスタンスを使用する方法から、より効率的でコスト効果の高いアーキテクチャに移行する方法を検討しています。各選択肢について解説します。
A. Kinesis Data FirehoseとEC2オンデマンドインスタンス
- アーキテクチャ: データはAmazon Kinesis Data Firehoseを使用してS3に保存され、毎晩EC2オンデマンドインスタンスでバッチ処理を行います。処理が完了した後、インスタンスは終了します。
- 評価: これはEC2インスタンスを使用し続ける選択肢であり、コストがかかりやすい可能性があります。EC2オンデマンドインスタンスは使用時間に応じて料金が発生するため、コストが高くなることがあります。
B. Kinesis Data FirehoseとAWS Batchスポットインスタンス
- アーキテクチャ: データはKinesis Data FirehoseでS3に保存され、AWS Batchを使用してスポットインスタンスで毎晩の処理を実行します。スポットインスタンスの価格はオンデマンド価格の最大50%です。
- 評価: スポットインスタンスを使用することで、コストを大幅に削減できます。AWS Batchはスケーラブルで効率的な処理を行うため、コスト効率が良いです。処理が失敗してもデータが次回の処理に再利用できるため、スポットインスタンスの中断にも耐性があります。
C. EC2リザーブドインスタンスとAWS Batchスポットインスタンス
- アーキテクチャ: EC2リザーブドインスタンスを3年間予約し、その後ろにネットワークロードバランサー(NLB)を配置します。AWS Batchを使い、スポットインスタンスで毎晩の処理を実行します。
- 評価: リザーブドインスタンスを使うことで一定のコスト削減は可能ですが、3年間の予約が固定されるため、柔軟性に欠けます。また、バッチ処理のためにスポットインスタンスを使っても、事前にリザーブドインスタンスを購入するコストが高くなる可能性があります。
D. Kinesis Data FirehoseとAmazon Redshift、AWS Lambda
- アーキテクチャ: データはKinesis Data Firehoseを使用してAmazon Redshiftに保存され、Amazon EventBridgeで毎晩の処理をAWS Lambda関数にスケジュールします。Lambda関数がRedshiftをクエリして統計を生成します。
- 評価: Lambda関数はサーバーレスでスケーラブルな処理を提供しますが、データの保存先としてAmazon Redshiftを選ぶことはオーバーヘッドが大きくなります。特に、統計の計算に特化した処理でない限り、Redshiftを使用するのはコストと管理の面で効率的でない可能性があります。
最もコスト効率の良い選択肢
- B が最もコスト効率の良い選択肢です。Amazon Kinesis Data Firehoseを使用してデータをS3に保存し、AWS Batchをスポットインスタンスで実行することで、スケーラブルで低コストの処理を実現できます。スポットインスタンスの価格を最大50%削減できるため、コストの最適化が図れます。
結論
- B が最もコスト効果の高い解決策です。
- 作者:みなみ
- 链接:https://tangly1024.com/資格勉強/175d7ae8-88e2-8059-bdbb-d7b6ffb8b19f
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章