【AWS re:Invent 2017】AWS FargateをEC2より安く使おう【料金】

この記事は公開されてから半年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

re:Invent 2017 day3 keynote にて発表された新サービス「AWS Fargate」は
単位時間あたりの料金を比較するとEC2より1.5~3倍程度割高に見えますが、
コンテナのメリットを生かしたAuto Scalingでリソース消費を最低限に抑え
EC2よりも安く使いましょう。

料金の比較

vCPU メモリ
(GB)
EC2のインスタンスタイプ EC2の月額料金
(東京)
Fargateの月額料金
(バージニア北部)
1 2 t2.small $23.36 $55.50336
2 4 t2.medium $46.72 $111.00672
2 8 m4.large $94.17 $148.11408
4 16 m4.xlarge $188.34 $296.22816

※月額は 1日分 × 365日 /12ヶ月 で計算しました

単純に金額を比較すると上記のようになります。
しかし、EC2を使うのであれば以下のことを考慮する必要があります。

  • 可用性を考慮するとMulti-AZ構成のため最低2台起動する必要があります。
  • t2シリーズには「バースト」ルールがあります。
  • 高速なスケールのためには余裕をもったスペックでインスタンスを起動しておく必要があります。
  • クラスターを管理するエンジニアの人件費、システムの開発費がかかります。

Auto Scalingの設定方法

ECSを使う上で重要となる3要素「タスク」「サービス」「クラスター」の内、
Auto Scalingの設定は「サービス」が持ちます。

 

サービスの作成、若しくは更新ウィザードでAuto Scalingの設定を行えます。
※初めてAWS Fargateにアクセスしたときに表示される以下のようなフォームでは
Auto Scalingの項目は省略されているようです。

 

ステップ 1: サービスの設定

サービスの作成、若しくは更新ウィザードの[ステップ 1: サービスの設定]は
以下のようなページです。

赤枠で囲った[タスクの数]という項目がサービス作成、若しくは更新時点で
クラスター上で実行されるタスクの数となります。
[次のステップ]ボタンをクリックし、[ステップ 3: Auto Scaling (オプション)]へ進みましょう。

 

ステップ 3: Auto Scaling (オプション)

まず、(1)の[Service Auto Scaling]のラジオボタンを
「Service Auto Scaling の設定を変更することで、サービスの必要数を調整する」
を選択します。
するとフォームが途端に大きくなり驚いてしまいますが、
下半分のグレーの部分はスケールアウト、スケールインの条件と動作を指定する部分で
画面をよく読んで設定していけば、それほど難しくありません。

問題は(2)の部分です。
「タスクの最小数」「タスクの必要数」「タスクの最大数」という用語が出てきます。
「タスクの最小数」「タスクの最大数」はAuto Scalingによってスケールする際の
タスクの数の下限と上限です。
「タスクの必要数」ですが、
なんとこれは[ステップ 1: サービスの設定]の「タスクの数」と同じ項目です。
試しに[ステップ 1: サービスの設定]で入力した[タスクの数]と
異なる数を入力して[次のステップ]ボタンをクリックし
[ステップ 4: サービスの確認]で設定を確認してみると、
[タスクの数]が[タスクの必要数]で上書きされているのが確認できます。
そして[タスクの必要数]という項目はありません。

ちなみに英語版のUIでは[タスクの数]は[number of tasks]、
[タスクの必要数]は[desired number of tasks]という項目名でした。
恐らく、Auto Scalingの設定するならここでも変えられた方が便利だろう、
ということで実装してくれたのだと思いますが、
表記揺れのためにここで混乱してしまう人もいるかもしれません。

Multi-AZの設定方法

折角クラスターを使うからにはやはりMulti-AZにしたいですね。

 

ステップ 2: ネットワーク構成

ウィザードを戻りますが、[ステップ 2: ネットワーク構成]の
[クラスターVPC]で
「異なるAvailability Zoneと関連付いた複数のサブネット」を持つVPCを選択し
[サブネット]に2つ以上の「異なるAvailability Zoneと関連付いたサブネット」を選択しておけば
タスク実行時にMulti-AZで実行できます。

最後に

あとはタスクの最小限のvCPU、メモリを見極めることで
待機時には省リソース消費の常時起動サービスが提供できます。

コメントを残す

メールアドレスが公開されることはありません。

Time limit is exhausted. Please reload CAPTCHA.