type
status
date
slug
summary
tags
category
icon
password
理論
「クローリング」とは、インターネット上のウェブサイトやページを自動的に巡回して情報を収集するプロセスのことです。特に、検索エンジンのボットがウェブページをスキャンして、内容をインデックスに登録する際に行う作業が「ウェブクロール」と呼ばれます。
このプロセスでは、指定されたURLのリストを基に、ページを訪れてデータを取得し、必要な情報(例えば、テキストや画像)をダウンロードしたり、解析したりします。クローリングは、例えば検索エンジンがページの内容を理解し、結果をランキングに反映させるために必要不可欠です。
1. AWS Lambdaを利用したサーバーレスアーキテクチャ
- AWS Lambdaは、サーバーを管理せずにコードを実行できるサーバーレスサービスです。
- Lambdaは、トリガーに応じて自動的にスケールし、リクエストがないときは実行されません。この特性により、リソースの無駄を避けることができ、コストを最小化できます。
- Lambdaの利用には、リクエストに基づいた課金がされるため、アイドル状態のコストが発生しません。
2. Amazon S3を用いた低コストなストレージ
- Amazon S3は、非常にスケーラブルで耐久性が高いオブジェクトストレージサービスです。データを長期間保存する場合に最適で、クローリングデータのような大量のファイルを効率的に保存できます。
- S3は、保存するデータ量に基づいてコストが発生するため、処理後の結果を保存するのに非常にコスト効率が良いです。
3. Amazon EC2インスタンスのコスト最適化
- EC2インスタンスを使用する場合、インスタンスが常に稼働し続けるため、アイドル状態の時間が長いとコストが無駄になります。
- 必要に応じてスケールするサービス(LambdaやFargateなど)の導入により、コストを最適化することができます。
4. 非同期処理とバッチ処理
- SQS(Simple Queue Service)を使用することで、非同期処理を実現し、リクエストがあるときにのみリソースを利用できます。LambdaやEC2インスタンスの利用を非同期にすることで、効率的にリソースを使用できます。
これらの知識を活用することで、ウェブクローリングのようなリソースを動的に管理するタスクのコストを最適化し、スケーラブルなシステムを構築できます。
実践
略
一問道場
ある企業が、機械学習アルゴリズムの訓練データを取得するために、ターゲットURLのリストに基づいてウェブクローリングプロセスを実行しています。複数のAmazon EC2 t2.microインスタンスが、Amazon Simple Queue Service (Amazon SQS)キューからターゲットURLを取得し、クローリングアルゴリズムの結果を.csvファイルとしてAmazon Elastic File System (Amazon EFS)ボリュームに書き込みます。EFSボリュームは、インスタンスのすべてのフリートでマウントされています。別のシステムが、URLをSQSキューに追加していますが、その頻度は低いです。インスタンスは、各URLを10秒以内にクローリングします。メトリクスによると、URLがSQSキューにないときに、一部のインスタンスがアイドル状態になっています。ソリューションアーキテクトは、コストを最適化するためにアーキテクチャを再設計する必要があります。
次の手順のうち、コストを最も効果的に最適化するために実施すべきものはどれですか?(2つ選んでください。)
A. ウェブクローリングプロセスにm5.8xlargeインスタンスを使用し、インスタンスの数を50%削減します。
B. ウェブクローリングプロセスをAWS Lambda関数に変換し、Lambda関数でSQSキューからURLを取得するように設定します。
C. ウェブクローリングプロセスで結果をAmazon Neptuneに保存するように変更します。
D. ウェブクローリングプロセスで結果をAmazon Aurora Serverless MySQLインスタンスに保存するように変更します。
E. ウェブクローリングプロセスで結果をAmazon S3に保存するように変更します。
解説
この問題の解説は、AWSリソースのコスト最適化に関するアーキテクチャの変更方法に焦点を当てています。以下のステップで解説します。
問題の背景
- 会社はEC2 t2.microインスタンスを使って、SQSからURLを取得し、ウェブページをクローリングしてEFSに結果を保存しています。
- 現在、URLがない時にはインスタンスがアイドル状態になるため、コスト効率が悪化しています。
- 要求される解決策は、コスト最適化を目指し、クローリングプロセスを再設計することです。
解決策の選択肢の分析
A. EC2インスタンスの変更
- m5.8xlargeインスタンスに変更することで、インスタンスの性能は向上しますが、t2.microよりもはるかに高価です。さらに、インスタンス数を削減しても、依然としてEC2インスタンスはコストがかかり続けます。
- この方法では、クローリングの間にインスタンスが稼働し続ける必要があるため、コスト削減にはつながりません。
B. AWS Lambdaを使用
- Lambda関数に変換することで、サーバーレスアーキテクチャを利用できます。Lambdaはリクエストがあるときにのみ起動するため、アイドル時間がなく、コストが必要なときにだけ発生します。
- SQSからURLを取得してLambdaで処理するため、アイドル状態がなくなり、リソースの無駄を減らせます。
- 最もコスト効率の良い方法です。
C. 結果をAmazon Neptuneに保存
- Amazon Neptuneはグラフデータベースであり、クローリングの結果を保存するには適していません。データがリレーショナルではないため、Neptuneはこのケースにおいては適切ではないでしょう。
D. 結果をAmazon Aurora Serverless MySQLに保存
- Aurora Serverlessは、需要に応じて自動的にスケールするため、コスト効率が良い選択肢ですが、クローリング結果を保存するには過剰かもしれません。
- 通常、クローリングデータは単純なファイルとして保存することが多いため、Aurora Serverlessはやや高価な選択肢となります。
E. 結果をAmazon S3に保存
- Amazon S3は、低コストでデータを保存できるため、クローリング結果を保存するのに非常に適しています。S3はスケーラブルで、高い耐久性を持つため、クローリングデータを長期間保存するのに理想的です。
結論
最もコスト効率が良い解決策は、AWS Lambdaを使用してクローリングを処理し、その結果をAmazon S3に保存することです。Lambdaは必要なときにだけ実行され、アイドル状態のインスタンスを回避できます。また、S3は低コストで、データの保存に最適です。
したがって、最適な選択肢はB(Lambdaを使用)とE(S3に保存)です。
- 作者:みなみ
- 链接:https://tangly1024.com/資格勉強/17bd7ae8-88e2-806c-9dfd-c55194516974
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章