本文へスキップ
BecomeCoder

AWS SAA(ソリューションアーキテクト)コース · 第9章 高性能・スケーラビリティの設計 · レッスン53

適切なサービス選択で性能を出す

導入

ここまでの技術(スケーリング・キャッシュ・非同期化)を正しく使っても、そもそもの土台となるサービス選びを間違えていては性能は出ません。最後に、レイヤーごとに「どういう要件ならどのサービスを選ぶか」を整理します。

説明

コンピュート層

要件選ぶサービス
細かく制御したい・特殊なOS/ミドルウェア構成EC2
インフラ管理をなくしたい・イベント駆動の短時間処理Lambda
コンテナ化されたアプリを運用したいECS / EKS(Fargateならサーバー管理も不要)
予測不能なバッチ・機械学習の演算負荷Lambda(短時間)/ Batch(長時間バッチ)

ストレージ

要件選ぶサービス
オブジェクト(画像・動画・ログなど)を大量に保存S3
複数EC2から同時マウントする共有ファイルシステムEFS
高IOPSが必要なDBのブロックストレージEBS(プロビジョンドIOPS SSD)
超高速な機械学習・HPC向けの並列ファイルシステムFSx for Lustre

データベース

要件選ぶサービス
一般的なリレーショナルDBRDS
リレーショナルDBで極めて高い性能・自動スケールAurora(Aurora Serverlessなら自動でキャパシティ調整)
キー・バリューで超低レイテンシー・大規模スケールDynamoDB
インメモリの超高速キャッシュ/セッションストアElastiCache

ネットワーク層

要件選ぶサービス
静的コンテンツを世界中に低レイテンシーで配信CloudFront
TCP/UDPレベルでグローバルなユーザーを最寄りの健全なエンドポイントへ振り分けたいGlobal Accelerator
リージョン内でのトラフィック分散Elastic Load Balancing
flowchart TD
    Global["グローバルユーザー向け"] --> CF["CloudFront<br/>(静的コンテンツ配信)"]
    Global --> GA["Global Accelerator<br/>(TCP/UDPをAWSグローバルネットワーク経由で高速中継)"]
    CF --> Origin["オリジン(S3/ALBなど)"]
    GA --> Origin

特にグローバル展開するシステムでは、CloudFront(コンテンツ配信の高速化)と Global Accelerator(TCP/UDPトラフィック自体をAWSのバックボーンネットワーク経由で運び、ユーザーを最も健全でレイテンシーの低いエンドポイントへ振り向ける)の使い分けが問われます。CloudFrontはキャッシュ可能なコンテンツ配信に強く、Global Acceleratorはキャッシュできない動的トラフィックやゲーム・IoTのようなノンHTTPプロトコルにも対応できる点が違いです。

読んでみよう

SAAの性能問題は「要件(レイテンシー・スループット・データの性質)」→「対応するAWSサービス」の対応表を頭に持っているかどうかで決まります。第2〜9章で登場したサービスを、この章の4つの表に立ち返って整理しておくと、本番の選択肢を素早く絞り込めるようになります。