gitkadoの気まぐれ日記

島根在住エンジニアが何かに興味を持ったらブログを更新します

【aws INNOVATE】AWS認定 試験対策 セッション2

セッション

aws INNOVATE
「パフォーマンスに優れたアーキテクチャを定義する」
各セッション情報はこちら

概要

高パフォーマンスなアーキテクチャの設計

  • 高パフォーマンスなストレージおよびデータベースを選択する
  • パフォーマンス向上のためキャッシュを使用する
  • 伸縮性とスケーラビリティに優れたソリューションを設計する

ポイント

高パフォーマンスなストレージおよびデータベースを選択する

【ストレージ】

  • EBSの各種特徴比較 ( 1 > 4 )

    • SSDはIOPSに対してコスト効率が良い
    • HDDはスループットに対してコスト効率が良い
    • SSDプロビジョンドIOPSはコストが高いが性能はダントツ
特徴 SSD 汎用 SSD プロビジョンドIOPS HDD スループット最適化 HDD コールド
最大サイズ 同じ 同じ 同じ 同じ
最大IOPS 2 1 3 4
最大スループット 4 1 2 3
高コスト 2 1 3 4
  • S3バケット

    • 高いスケーラビリティを持つため配信パフォーマンスを気にしなくて良い
  • S3料金設定

    • 保存しているデータサイズ
    • データアクセス数
    • リージョン外へのデータ転送数
  • ライフサイクルポリシー

    • S3データのライフサイクルを自動化することができる
    • データが格納されてから経過した時間によっていストレージタイプを変更できる
    • アクセス頻度が低下したデータのコストを下げることができる

IOPS…秒間IO操作総数
スループット…秒間IOデータ量

【データベース】

  • RDSを使用する

  • RDSを使用しない

    • 超高速読み書きレート(例:150,000書込/秒)
    • シンプルなGET/PUTリクエストのクエリ
    • RDBMSのカスタマイズ
  • RDSリードレプリカ

  • DynamoDB

    • キャパシティユニットを設定してリソースを自動で割り当てる
    • 読み書きでそれぞれキャパシティユニットは設定可能

パフォーマンス向上のためキャッシュを使用する

  • CloudFront

    • グローバルなコンテンツ配信ネットワーク(CDN)
    • WebシステムにおけるFront部分のキャッシュ
    • 各オリジンへのリクエストの仲介役になる
    • キャッシュがある場合はオリジンへのリクエストは行わない
    • CFエッジロケーション上にキャッシュが存在しない場合はオリジンにリクエストされる
    • オリジンからレスポンスがCFエッジロケーションに転送される(キャッシュされる)
  • ElastiCache

    • システム内部のキャッシュ
    • Redisを使うべきユースケースであるかを検討してキャッシュエンジンを選定する
Memcached(キャッシュエンジン) Redis(キャッシュエンジン)
マルチスレッド 単一スレッド
永続性がない 永続性がある
文字列キャッシュのみ 構造化データサポート

伸縮性とスケーラビリティに優れたソリューションを設計する

  • 垂直スケーリング

    • インスタンススペックを変更(CPUやメモリの増設)
    • サーバの再起動が必要なケースがある
  • 水平スケーリング

    • インスタンス数を変更
    • アプリケーションを分散に対応させる必要がある
  • AutoScaling

  • CloudWatchメトリクス

    • デフォルトメトリクスとカスタムメトリクスの違いを理解すること
      • 例: CPU使用率はデフォルトだがメモリ使用率はカスタムである

問題を解くコツ

  • パフォーマンスとコストはトレードオフ(何を問われているのか勘違いしないように)
  • データが構造化されていない場合はS3が一般的なストレージソリューションになる
  • キャッシュ戦略を使用してパフォーマンスを向上させる
  • AutoScalingを使用するユースケースと理由を理解する
  • ワークロードとパフォーマンスのニーズに最適なインスタンスやDBを選定する