type
status
date
slug
summary
tags
category
icon
password
理論
1. スケーラビリティの重要性
スケーラビリティとは、システムが増加するトラフィックやデータ量に対して、効率的にリソースを追加できる能力のことです。特に、トラフィックの増加やユーザー数の増加が見込まれるシステムでは、スケーラビリティを意識して設計することが非常に重要です。
- 単一のEC2インスタンスに依存する設計は、負荷が高まるとボトルネックが発生し、接続の遅延や失敗、システムダウンの原因となります。EC2インスタンスのスケーリングが不足するため、負荷が集中し、リソース消費が急増します。
- Auto Scalingグループを使うことで、需要に応じてインスタンスを自動的に増減させ、システム全体が拡張可能な設計にすることができます。
2. 耐障害性と冗長性
耐障害性は、システムが部分的な障害が発生した場合にも機能し続ける能力です。障害が発生した際に迅速に対応できる仕組みが必要です。
- FTPサーバーのような中央集権的なシステムは、単一障害点(SPOF: Single Point of Failure)となりやすいです。接続が切れるとファイルのアップロードに支障をきたし、システム全体が停止してしまう可能性があります。
- 分散型アーキテクチャ(例えば、S3やAWS Transfer Family)は冗長性が高く、障害発生時にもサービスが継続的に動作します。これにより、サービスの可用性が向上します。
3. ストレージの最適化と管理
ストレージは、アプリケーションのパフォーマンスに大きな影響を与える要素です。適切なストレージ設計を行うことで、効率的にデータを管理し、アクセス速度や可用性を向上させることができます。
- S3はスケーラブルで高可用性のあるオブジェクトストレージサービスであり、アップロードされるファイルが急増しても、自動的にリソースを増強して対応できます。
- FTPサーバーに依存すると、ストレージの容量や接続数の制限に直面します。これに対し、S3とイベント駆動型アーキテクチャ(例えば、S3イベント通知やAWS Lambda)を使用することで、ストレージ管理が効率化され、ファイル処理やメタデータの追加が自動化されます。
4. イベント駆動アーキテクチャ
イベント駆動型アーキテクチャは、アプリケーションの一部が特定のイベント(例えば、ファイルのアップロード)をトリガーとして、他の処理を自動的に実行する仕組みです。
- S3イベント通知を使用することで、ファイルがアップロードされるたびに自動でLambda関数を呼び出し、メタデータを追加したり、データベースを更新したりすることができます。これにより、手動での処理やエラーの発生を減らし、効率的なデータ処理が可能になります。
5. 運用の自動化と効率化
手動による運用はミスや遅延を引き起こすリスクが高いため、可能な限り自動化すべきです。AWSの各サービスは自動化のためのツール(例えば、LambdaやS3イベント通知)を提供しており、これを活用することで、システムの管理負担を軽減できます。
結論
- システム設計の本質的な考え方は、「スケーラビリティ」「耐障害性」「効率的なリソース管理」にあります。特に、ユーザー数の増加やデータ量の急増に備え、自動化と分散型アーキテクチャを活用することが求められます。
- FTPサーバーの代わりにS3とAWS Transfer Familyを使用することで、ストレージのスケーラビリティやデータ管理の効率化、障害発生時の耐性を向上させることが可能になります。また、Lambdaを活用したイベント駆動型の処理も、システム全体の効率化を実現します。
実践
略
一問道場
質問 #145
トピック 1
ある国際配送会社がAWS上で配送管理システムをホストしています。ドライバーはシステムを使って配達確認をアップロードします。確認内容には受取人の署名または受取人と荷物の写真が含まれます。ドライバーのハンドヘルドデバイスは、FTPを通じて単一のAmazon EC2インスタンスに署名と写真をアップロードします。各ハンドヘルドデバイスは、サインインしたユーザーに基づいたディレクトリにファイルを保存し、ファイル名は配送番号に一致します。その後、EC2インスタンスは中央データベースにクエリを送信して配送情報を取得し、ファイルにメタデータを追加します。その後、ファイルはアーカイブ用にAmazon S3に配置されます。
会社の拡大に伴い、ドライバーはシステムが接続を拒否していると報告しています。FTPサーバーは切断された接続とメモリの問題により問題が発生しています。この問題に対処するため、システムエンジニアはEC2インスタンスを30分ごとに再起動するためのcronタスクをスケジュールしました。しかし、請求チームはファイルが常にアーカイブに保存されていないことと、中央システムが常に更新されていないことを報告しています。
ソリューションアーキテクトは、アーカイブが常にファイルを受け取り、システムが常に更新されることを確保するために、スケーラビリティを最大化するソリューションを設計する必要があります。ハンドヘルドデバイスは変更できないため、新しいアプリケーションの展開はできません。
どのソリューションがこの要件を満たすか?
A. 既存のEC2インスタンスのAMIを作成し、EC2インスタンスのオートスケーリンググループをアプリケーションロードバランサーの背後に作成します。オートスケーリンググループの最小インスタンス数を3に設定します。
B. AWS Transfer Familyを使用してFTPサーバーを作成し、ファイルをAmazon Elastic File System (Amazon EFS)に配置します。EFSボリュームを既存のEC2インスタンスにマウントし、EC2インスタンスに新しいパスを指し示すようにします。
C. AWS Transfer Familyを使用してFTPサーバーを作成し、ファイルをAmazon S3に配置します。S3イベント通知をAmazon Simple Notification Service (Amazon SNS)を通じて設定し、AWS Lambda関数を呼び出します。Lambda関数はメタデータを追加し、配送システムを更新します。
D. ハンドヘルドデバイスを更新して、ファイルを直接Amazon S3に配置します。S3イベント通知をAmazon Simple Queue Service (Amazon SQS)を通じて設定し、AWS Lambda関数を呼び出します。Lambda関数はメタデータを追加し、配送システムを更新します。
解説
この問題の解説をします。
背景
企業がデリバリー管理システムを使用して、ドライバーが配達確認書類(サインや荷物の写真)をアップロードします。ドライバーの手持ちデバイスがFTPを使って、これらのファイルをAmazon EC2インスタンスにアップロードし、後でS3にアーカイブされます。しかし、システムがスケーラビリティの問題に直面し、接続の切断やメモリの問題が発生しており、ファイルが必ずしもアーカイブされていないといった問題が発生しています。この問題を解決するために、スケーラビリティと信頼性を最大化する方法を選ぶ必要があります。
解決策の選択肢
以下の解決策から最適なものを選ぶ必要があります。
A. EC2インスタンスのAMIを作成し、Auto Scalingグループを設定して、最小3インスタンスを維持する。
B. AWS Transfer Familyを使ってFTPサーバーを作成し、Amazon EFSにファイルを保存する。EC2インスタンスでそのEFSをマウントし、新しいパスでファイルを処理する。
C. AWS Transfer Familyを使ってFTPサーバーを作成し、ファイルをAmazon S3に保存する。S3イベント通知を使って、Lambda関数を呼び出し、メタデータを追加して配達システムを更新する。
D. ハンドヘルドデバイスを更新して、直接Amazon S3にファイルを保存する。S3イベント通知を使って、SQSを呼び出し、Lambda関数を使ってメタデータを追加し配達システムを更新する。
正解は C です。
解説
- A. EC2インスタンスをスケーリングする方法は、システムのスケーラビリティに貢献しますが、根本的な問題である「FTPサーバーの接続問題」や「メモリの問題」を解決する方法ではありません。また、EC2インスタンスに依存することは、スケーラビリティや可用性を制限する可能性があります。
- B. EFSを使用する方法は、ファイルストレージのスケーラビリティを改善しますが、根本的にFTPサーバーを使っている問題を解決するわけではありません。また、EFSはネットワーク経由でアクセスされるため、FTPに依存するという構成に留まることになり、完全な解決には至りません。
- C. AWS Transfer Family を使用してFTPサーバーをAmazon S3に変更する方法は、FTPサーバーの可用性やスケーラビリティの問題を解決する最適な方法です。S3にファイルを直接保存し、S3イベント通知を使ってLambda関数を呼び出し、メタデータの追加と配達システムの更新を行います。このアプローチにより、システムがスケールし、ファイルの処理が自動化され、信頼性も向上します。
- D. ハンドヘルドデバイスを更新して、直接S3にアップロードさせる方法も一つの選択肢ですが、ハンドヘルドデバイスを変更できないという制約があるため、選択肢としては不適切です。
結論
最も適切な解決策は C です。AWS Transfer Familyを利用してFTPの代わりにS3を使用し、S3イベント通知とLambdaを組み合わせて自動的にメタデータを追加することで、システムの信頼性、スケーラビリティ、可用性を確保できます。
- 作者:みなみ
- 链接:https://tangly1024.com/資格勉強/16fd7ae8-88e2-802a-ae52-e8357043e0fc
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章