AWS HealthOmics プライベートワークフローにストレージ容量管理が不要なストレージタイプが追加されました

2024.05.28

AWS HealthOmics に動的実行ストレージが追加されました。ストレージ容量管理が不要になり、特に小規模なワークフローや開発/テストに最適です。

なにが嬉しいのか

動的実行ストレージの利点を紹介します。

  • ストレージの容量管理が不要
    • ストレージサイズが動的にスケールするため、事前の見積もりが不要です。
    • 利用状況に応じて自動的にスケールアップ/スケールダウンします。
  • ストレージ不足による実行エラーを回避
    • 常に十分なストレージがプロビジョニングされ、実行失敗を防ぎます。
  • プロビジョニング速度が早い
    • ワークフローのスタートアップ時間を短縮します。
    • 小規模なワークフローや新しいワークフローの開発/テストに適しています。

個人的にはプロビジョニング速度の向上が一番ありがたいです。ワークフロー実行から処理開始までのオーバーヘッドが結構ありますからね。

静的と動的実行ストレージを比較

静的実行ストレージと動的実行ストレージのスペックを比較してみました。

特徴 静的実行ストレージ (Static) 動的実行ストレージ (Dynamic)
コスト $0.0001918/GB-Hours $0.0004110/GB-Hours
スループット 高い -
リソース予測 事前に予測必要 予測不要
ストレージの柔軟性 低い 高い (自動スケール)
プロビジョニング時間 長い 短い
ストレージ不足エラー リスクあり リスクなし
ユースケース 大規模ワークフロー 小規模ワークフロー、開発/テスト

動的実行ストレージのコストは静的実行ストレージより約 214% 高いです(2024 年 5 月 28 日現在の北米リージョン価格)。

料金表引用: Genomic Data Analysis - AWS HealthOmics Pricing - Amazon Web Services

動的実行ストレージを使ってみた

プライベートワークフローで動的実行ストレージを利用しました。実行ストレージ容量の選択肢に Dynamic Storage が追加されていました。これを選択し、Hello World 的なワークフローを実行しました。

以下がワークフローの実行結果です。実行ストレージ容量は指定どおりDynamic storageで実行されています。画面下の実行タスクには使用したディスクサイズは表示されませんでした。

AWS CLI で使用したディスクサイズの確認方法

2 時間以内に完了したワークフローは最大ストレージ使用量が確認できない場合があります。

For a dynamic storage run that completes within 2 hours, the maximum storage value may not be available.

Running workflows - AWS HealthOmics

今回の実行時間は 2 時間以内のため取得できない可能性がありますが、確認できるコマンドを試してみます。aws omic get-runコマンドの引数でワークフローの実行 ID を指定します。

$ aws omics get-run --id 2788273

実行結果は以下です。使用したディスク容量の項目はありませんでした。

{
    "arn": "arn:aws:omics:us-east-1:123456789012:run/2788273",
    "id": "2788273",
    "status": "COMPLETED",
    "workflowId": "6511312",
    "workflowType": "PRIVATE",
    "roleArn": "arn:aws:iam::123456789012:role/OmicsWorkflowRunRole",
    "name": "run-0526-1",
    "priority": 100,
    "digest": "sha256:e94f5b269d431936135fea08d378fc8f61d393b4ef2f88cdba1d7ec7e7c60e3d",
    "parameters": {
        "message": "Dynamic"
    },
    "outputUri": "s3://omicsbackendstack-outputbucket7114eb27-khnd24oag2oy",
    "startedBy": "arn:aws:sts::123456789012:assumed-role/cm-ohmura.yasutaka/cm-ohmura.yasutaka",
    "creationTime": "2024-05-26T03:29:17.152240+00:00",
    "startTime": "2024-05-26T03:34:02.940000+00:00",
    "stopTime": "2024-05-26T03:48:03.576590+00:00",
    "tags": {},
    "retentionMode": "RETAIN",
    "logLocation": {
        "runLogStream": "arn:aws:logs:us-east-1:123456789012:log-group:/aws/omics/WorkflowLog:log-stream:run/2788273"
    },
    "uuid": "9ac7d979-03b2-f2ba-2172-9d7a90757e42",
    "runOutputUri": "s3://omicsbackendstack-outputbucket7114eb27-khnd24oag2oy/2788273",
    "storageType": "DYNAMIC",
    "workflowOwnerId": "123456789012"
}

請求金額から確認

ワークフローの実行ごとのディスクサイズは確認できませんが、合計の使用容量は請求金額から確認可能でした。

プロビジョニング速度の確認

動的実行ストレージはプロビジョニング速度が速いです。同じ Hello World 的なワークフローで静的と動的実行ストレージを比較しました。

小規模なワークフローですと、実行時間に約 7 分 30 秒の差がありました。動的実行ストレージの方が確かに早かったです。

動的実行ストレージの実行結果詳細

ワークフローの実行自体は 36 秒なのですが、マネージドサービスのインスタンスが起動から終了までに 14 分かかっています。

静的実行ストレージの実行結果詳細

ワークフローの実行自体は同じ 36 秒なのですが、マネージドサービスのインスタンスが起動から終了までに 21 分 28 秒もかかっています。

以前から遅く感じていました。特に小規模なワークフローの場合は、動的実行ストレージの利用が好ましいケースがでてきそうです。

静的、動的実行ストレージとコスト比較

静的実行ストレージは最小で 1.2TB のストレージ容量を使用します。そのためディスク容量を必要としないワークフローでもディスクコストはかかります。

その点、動的実行ストレージはストレージサイズが自動でスケールアップ・ダウンしコスト最適化はされています。ですが、スループット性能は静的実行ストレージの方が優れているとのことです。

動的実行ストレージの実行コスト

静的実行ストレージの実行コスト

まとめ

  • 大規模なワークフローには、コスト効率が高く、スループットが優れている静的実行ストレージが適しています。
  • 小規模なワークフローや頻繁に実行されるワークフロー、および開発/テストサイクルには、柔軟性が高く、迅速なプロビジョニングが可能な動的実行ストレージが適しています。

どちらのストレージタイプを選択するかは、ワークフローの規模、実行頻度、コスト要件に応じて決定することが重要ですね。

おわりに

ワークフロー実行のプロビジョニング速度が一般的な EC2 起動くらいまで短縮されることを願っています。

参考