TxKxZxWx's blog

AWS SAA取得に向けて学習

AWS SAA取得に向けて 110日目 問題 シャーディング、ELBヘルスチェック、S3パフォーマンスの最適化

間違えた問題を復習

 

問題1:

 

データベースを複数のホストにまたがって分けること、または大規模なデータベースをいくつかの小さなデータベースに分散する方法は?

  1. DDLオペレーション
  2. 障害回復
  3. シャーディング
  4. フェデレーション

 

解答:

 

解説:

「シャーディング」

複数のデータベースサーバーで書き込みパフォーマンスを上げる方法に「シャーディング」がある。

基本的には、同じ構造のデータベースを用意して適切なテーブルのカラムをキーにして分割し、書き込み処理を分散する。

クラウドが提供するRDBMSサービスを用いれば、可用性が高く、運用効率も良いシャーディングが可能になる。

 

qiita.com

 

 

 

問題2:

ウェブアプリケーションは、単一のカスタムAMIから起動された10個のEC2インスタンスで実行される。

EC2インスタンスは、ALBの背後にある。

Route53は、アプリケーションにDNSを提供する。

ウェブアプリケーションのEC2インスタンスに障害を発生した場合、自動的に回復する最適な方法は?

  1. ELBヘルスチェックでAuto Scalingグループ内のインスタンスを起動する。
  2. インスタンスヘルスチェックを使用して、各インスタンスにRoute53レコードを追加する。
  3. 複数のAZでインスタンスを起動し、ALBのマルチAZを有効にする。
  4. インスタンスにCloudWatchアラームアクションを追加して、ステータスチェック(全て)が失敗した場合に再起動する。

 

 

解答:

 

解説:

「ELBヘルスチェック」

ELBヘルスチェックを使用するように、Auto Scalingグループを設定できる。

これにより、ロードバランサーによって提供される追加のテストに基づいて、グループはインスタンスのヘルスを判断できるようになる。

ロードバランサーは定期的にpingを送信するか、接続を試みるか、またはEC2インスタンスのテストをリクエストする。

これらのテストはヘルスチェックと呼ばれる。

 

Auto Scalingインスタンスのヘルスステータスは、正常または以上のどちらか。

一方でELBヘルスチェックを使用するようにAuto Scalingを設定した場合、EC2 Auto ScalingはEC2ステータスチェックELBヘルスチェックの両方を調べて、インスタンスのヘルスステータスを判断する。

 

docs.aws.amazon.com

 

以下は間違い:

2:インスタンスヘルスチェックを使用して、各インスタンスにRoute53レコードを追加する。

→Route53は、アプリケーションにDNSを提供している。

インスタンスにRoute53は、アプリケーションにDNSを提供している。

インスタンスにRoute53レコードを追加するのは適切な方法ではない。

 

3:複数のAZでインスタンスを起動し、ALBのマルチAZを有効にする。

複数のAZでインスタンスを起動し、ALBのマルチAZを有効にしただけでは、要件は満たせない。

ALBヘルスチェックを使用するようにAuto Scalingグループを設定する必要がある。

マルチAZを有効にするのがおすすめ。(ALBでは、マルチAZを有効にする必要がある。)

この設定では、1つのAZが利用できなくなったか正常なターゲットがなくなった場合、ロードバランサートラフィックを別のAZの正常な登録済みターゲットにルーティングできる。

AZを無効にすると、そのAZ内のターゲットはロードバランサーに登録されたままだが、ロードバランサートラフィックをターゲットにルーティングしなくなる。

 

docs.aws.amazon.com

 

4:各インスタンスにCloudWatchアラームアクションを追加して、ステータスチェック(全て)が失敗した場合に再起動する。

→フロントなるELBなどがないため要件を満たせないため間違い。

 

 

 

問題3:

会社の開発チームは、数百万の画像を含むS3バケットを作成することを計画している。

S3の読み取りパフォーマンスを最適化して使用する命名規則は?

  1. 16進数のハッシュをサフィックスとして追加する。
  2. 16進数のハッシュをプレフィックスとして追加する。
  3. 命名規則を使用して最適化する必要はない。
  4. サフィックスとして連続IDを追加する。
  5. プレフィックスとして日付を追加する。

 

解答:

 

解説:

「ベストプラクティスの設計パターン:S3パフォーマンスの最適化」

S3は高いリクエスト率に自動的にスケールされる。

例えばアプリケーションでバケット内のプレフィックスごとに1秒あたり3,500回以上のPUT/COPY/POST/DELETEリクエストと5,500回以上のGET/HEADリクエストを達成できる。

バケット内のプレフィックスの数に制限はない。

読み取りを並列化することによって読み取りまたは書き込みのパフォーマンスを向上させることができる。

例えばS3バケットに10個のプレフィックスを作成して読み取りを並列化すると、読み取りパフォーマンスを1秒あたり55,000回の読み取りリクエストにスケールできる。

 

以前のS3パフォーマンスガイドラインでは、頻繁なデータ検索のパフォーマンスを最適化するために、ハッシュ文字を使用して、プレフィックス命名をランダム化することを推奨していた。

現在は、パフォーマンスを向上させるためにプレフィックス命名をランダム化する必要はなくなりプレフィックスに日付順の名前を使用できるようになった。

docs.aws.amazon.com