AWS / SAP-C02

SAP-C02-172 · セクション 19 / タスク 4.3

Existing WorkloadからTarget Architectureを決定する

Compute / Container / Storage / Database / Compatibility / Operations / Performance / Target Architecture Selection

1. 個別に適切なサービスを選んだだけではアーキテクチャは完成しない

既存ワークロードを再設計するとき、コンピューティング、コンテナ、ストレージ、データベースについて、それぞれ適切な候補を選んでも、それだけではターゲットアーキテクチャは完成しません。

例えば、

コンテナ実行
→ Amazon ECS on AWS Fargate

共有ファイル
→ Amazon EFS

リレーショナルデータベース
→ Amazon RDS

という個別判断が妥当でも、

アプリケーション
↓
コンテナ
↓
ストレージ
↓
データベース

を接続したときに、互換性・運用・性能を含めてワークロード全体が成立する必要があります。

各サービスが単独で要件を満たすことと、組み合わせたアーキテクチャがワークロード要件を満たすことは別の確認です。

2. 既存ワークロードを実行時の役割へ分解する

ターゲットアーキテクチャを決めるときは、既存サーバー台数をそのままAWSサービスへ置き換えるのではなく、ワークロードを実行時の役割へ分解します。

例えば既存の3層Webシステムが、

Web / API処理
+
共有ファイル
+
PostgreSQL

で構成されているとします。

ターゲット側では、

Web / API実行
→ コンピューティング / コンテナ

共有ファイル
→ ストレージ

トランザクションデータ
→ データベース

として役割を分けます。

重要なのは、既存サーバーとAWSサービスの1対1変換ではなく、既存ワークロードが必要とする役割を、各役割を満たすAWS上の構成要素へ変換することです。

3. 候補を1つの依存関係として接続する

各構成要素の候補を選んだら、次に接続関係を確認します。

利用者
   │
   ▼
アプリケーション
   │
   ▼
Amazon ECS
   │
   ▼
AWS Fargate
   │
   ├────────→ Amazon EFS
   │
   └────────→ Amazon RDS for PostgreSQL

この時点では、Fargate、EFS、RDSを個別に選べるかを再検討するのではありません。

この組み合わせで既存ワークロードが必要とする処理を最後まで実行できるかを確認します。

4. 構成要素の適合とアーキテクチャ全体の適合を区別する

候補サービスがそれぞれ単独で利用可能でも、組み合わせ方が成立しない場合があります。

例えばAmazon ECS on AWS Fargateがアプリケーションの実行先として適切でも、アプリケーションが、

複数の実行単位から
同じファイルを共有
+
実行単位が置き換わっても
ファイルを保持

する必要があるなら、タスク内部の一時領域だけでは要件を完成できません。

一時的な処理データ
→ タスクの一時領域

永続的な共有データ
→ Amazon EFSなどの永続ストレージ

のように、データのライフサイクルとコンピューティングのライフサイクルを合わせて確認します。

5. ComputeとStorageの境界を確認する

コンピューティング方式を変えると、既存ストレージの前提が成立しなくなる場合があります。

既存サーバーでは1台のサーバーとローカルファイルで問題がなくても、ターゲット側で複数タスク、タスク置換、水平スケーリングを行うなら、そのデータは実行単位と一緒に消えてよいのかを確認します。

一時ファイルなら、実行単位のライフサイクルに結び付いた領域を利用できます。

一方、利用者がアップロードしたファイル、複数タスクから共有するファイル、タスク置換後も必要なファイルは、実行単位とは別の永続ストレージへ配置する必要があります。

6. ContainerとStorageは対応条件まで確認する

サービス名の組み合わせだけではなく、実際にその組み合わせがサポートされる条件も確認します。

Amazon ECS on AWS FargateでAmazon EFSを利用するLinuxタスクでは、Fargateプラットフォームバージョン1.4.0以降が必要です。

したがって、Amazon ECS、AWS Fargate、Amazon EFSというサービス名だけを見て組み合わせ可能と判断するのではありません。

OS、プラットフォームバージョン、必要なストレージ機能まで含めて、候補アーキテクチャとして成立するか確認します。

7. Database Compatibilityは全体構成の入力条件として扱う

データベースエンジン、バージョン、拡張機能、認証方式などの互換性は、データベース候補を選択する段階で確認します。

ターゲットアーキテクチャを統合する段階では、その確認を最初からやり直すのではありません。

Database Compatibility
確認済み
        │
        ▼
アプリケーションから
接続して利用できる候補
        │
        ▼
他の構成要素と接続

成立確認済みのデータベース候補を全体アーキテクチャの入力として使用します。

ここで確認するのは個別のデータベース機能ではなく、選択済みのデータベースがアプリケーション、ストレージ、コンピューティングを含むターゲット構成の中で成立するかです。

8. 個別の運用責任を1つの運用モデルへ統合する

各AWSサービスについて利用者側に残る運用責任を確認しただけでは、ワークロード全体の運用設計は完成しません。

アプリケーション実行
→ 担当チームA

共有ストレージ
→ 担当チームB

データベース
→ 担当チームC

と個別担当が決まっていても、アプリケーションからDBへ接続できない、共有ファイルを読み込めない、デプロイ後に性能が劣化した、といった事象は複数の構成要素をまたぐことがあります。

個別サービスの運用責任
        │
        ▼
障害の検知
        │
        ▼
最初の切り分け
        │
        ▼
担当へのエスカレーション
        │
        ▼
復旧確認

重要なのは「誰がOSを管理するか」を再確認することではなく、複数の構成要素にまたがるワークロードを誰がどの順序で運用するかを完成させることです。

9. Performanceは構成要素の最大性能ではなくワークロード要件で評価する

ターゲットアーキテクチャでは、各サービスの公称性能が高いことだけでは選択を確定しません。

ピーク
2,000リクエスト/秒

p95レイテンシー
300ミリ秒以下

という業務要件があるなら、その条件を候補アーキテクチャが満たすことが必要です。

候補を比較するときは、アプリケーション、ストレージ、データベース、構成要素間の通信を含めた結果を判断材料にします。

ここで性能検証の方法そのものを改めて学習するのではなく、既に得られた性能測定結果をターゲット選択の入力として使うことが重要です。

10. 候補は構成要素を接続した状態で評価する

個々の構成要素がそれぞれ要件を満たしていても、それらを接続した候補アーキテクチャが同じ結果になるとは限りません。

コンテナ実行
→ 要件を満たす

共有ストレージ
→ 要件を満たす

データベース
→ 要件を満たす

という状態でも、アプリケーション、共有ストレージ、データベースまで接続した代表ワークロードで性能要件や運用要件を満たせなければ、その候補をそのまま最終構成にはできません。

個別の構成要素の成立
        ↓
接続した候補アーキテクチャを構成
        ↓
Compatibility
Operations
Performance
を全体で確認

という順序で評価します。

11. アーキテクチャ判断マトリクスで候補全体を比較する

複数の候補を比較するときは、サービス単位ではなく候補アーキテクチャ単位で整理します。

評価項目候補A候補B
コンピューティング要件○○
コンテナ要件○△
ストレージ要件○○
データベース互換性○○
構成要素間の互換性○○
運用モデル○×
性能要件○○

この表で重要なのは、サービス単体の優劣を決めることではありません。

ワークロード全体として構成要素を接続できるか、運用モデルを成立させられるか、要求された性能を満たせるかを候補単位で確認します。

12. ターゲットアーキテクチャには判断根拠を残す

最終的な構成図だけを残すと、なぜFargateなのか、なぜEFSなのか、なぜRDSなのか、どの互換性を確認したのか、どの性能要件を満たしたのか、どの運用責任が残るのかが分からなくなります。

そのため、ターゲットアーキテクチャでは少なくとも、

構成要素
↓
担当する役割
↓
満たす要件
↓
確認した互換性
↓
運用モデル
↓
性能上の根拠

を対応付けます。

Amazon ECS on AWS Fargate
→ Web / API実行
→ コンテナ化済みアプリケーション

Amazon EFS
→ 永続共有ファイル
→ 複数タスクから同じファイルを利用

Amazon RDS for PostgreSQL
→ トランザクションデータ
→ 確認済みのPostgreSQL互換性

という構成だけでなく、どの要件を、どの構成要素が、どの証拠によって満たしたかまで追跡できる状態にします。

13. 最終判断フロー

既存ワークロード
        │
        ▼
実行時の役割へ分解
        │
        ├─ Compute / Container
        ├─ Storage
        └─ Database
        │
        ▼
各役割の候補を接続
        │
        ▼
構成要素間のCompatibility確認
        │
        ▼
Operationsを統合
        │
        ▼
Performance要件の成立確認
        │
        ▼
候補アーキテクチャ全体を比較
        │
        ▼
判断根拠を記録
        │
        ▼
Target Architectureを決定

この判断では、最も新しいAWSサービスや、単体で最も性能が高いサービスを選ぶことが目的ではありません。

既存ワークロードに必要な互換性を維持しながら、構成要素を接続した状態で運用と性能まで成立するターゲットアーキテクチャを選択することが目的です。

14. 主要AWS公式資料