Tomo's IT Blog

技術的な調査メモ

AWS EC2インスタンスを試す- その1:EC2調査編

目的

よく、仕事柄いろいろなソフトウェアの検証を実施しますが、今後はEC2を活用して簡単かつスピーディーに検証環境を構築したいと思い、EC2の勉強を始めました。

AWS EC2調査

AWS勉強も兼ねて、少し細かめに調査します。
すでにAWSのアカウントは持っておりますが、無償枠は終わってしまったので今回は自腹での実施です。どれくらいの料金?とか心配なので、まずは必要なEC2インスタンスタイプとそれの料金を調査します。

EC2インスタンスタイプとは?

まずは、検証内容によって、用意するEC2インスタンスのタイプを考えなければいけません。さまざまなインスタンスタイプがありますが、搭載しているvCPUやメモリが判断の気中になるかと思います。AWSのvCPUはハイパースレッドOnでのCPU数らしいので、実際の物理コアに換算するには2で割ることになると思います。
実際にどのようなインスタンスタイプがあるのか確認してみましょう。
aws.amazon.com

どれを利用すべきか、最初はちょっと戸惑います。ざっと列挙すると、以下の通り…。

通常のケースでは、汎用タイプでよさそうです。汎用タイプのユースケースは、

小規模および中規模のデータベース、増設メモリを必要とするデータ処理タスク、キャッシュサーバー群、および SAP、Microsoft SharePointクラスターコンピューティング、その他の企業アプリケーションの実行。

とのこと。

なお、以下のブログも参考になりました。
インスタンスの選択方法(最適なサイジング)と起動方法 | 超高速 WordPress AMI AMIMOTO

料金を確認してみる

インスタンスタイプはあたりは付いたので、次は料金を確認してみます。
https://aws.amazon.com/jp/ec2/pricing/

ここでもいろんな選択肢が出てきます。4つの選択肢があるようですね。

今回は検証目的なので、スポットインスタンスが良いと思いました。

スポットインスタンスとは?

通常のオンデマンドよりは安く使える。オンデマンド価格から最大90%割引で予備のEC2コンピューティングを利用可能。
仕組みとしては、需要と供給によりインスタンス価格が変動。利用したい入札価格を指定しておくと、それよりも低いインスタンス価格の場合にインスタンスが起動して利用可能。市場価格がそれ以上になると自動停止ということらしい。
なお、入札価格を指定しても課金されるのは、インスタンス価格なので、入札価格というよりは、閾値みたいな価格だと思ったほうが良いかもしれない。


オンデマンドとスポットインスタンスの東京リージョンの料金比較*1

オンデマンド(Linux)

m3.xlarge $0.385 /1 時間
m4.xlarge $0.348 /1 時間

スポットインスタンス(Linux)

m3.large $0.0239 /1 時間
m4.xlarge $0.0428 /1 時間

約88%ぐらい安い!
あと、スポットインスタンスには、継続利用料金も設定されていて、例えば6hourを選択すれば6時間はインスタンス料金が変動しても停止せずに使い続けることができるようです。ただし、その場合は値段がだいぶ高くなりますが、オンデマンドよりは安いです。

スポットインスタンス6時間継続料金(Linux)

m3.xlarge $0.269 /1 時間
m4.xlarge $0.256 /1 時間
補足:ECUとは?

利用金表を見ていて、もうひとつ解らなかったことが、ECUという単語です。
これは、FAQに記載がありました。
よくある質問 - Amazon EC2 | AWS

Q:「EC2 コンピューティングユニット (ECU)」とは何ですか? またそれを導入するどのような理由がありますか?

ユーティリティ コンピューティングモデルへの移行は、開発者が CPU リソースに対してこれまで持っていた考え方を根本的に変えるものです。特定のプロセッサを購入またはリースして数か月から数年間使用する代わりに、時間単位で処理能力をレンタルすることができます。Amazon EC2 は、コモディティなハードウェア上に構築されているため、EC2 インスタンスが内在する物理的なハードウェアの種類は、時間と共に異なる可能性があります。当社の目的は、実際に利用するハードウェアがどのようなものであろうと、一定量の CPU 能力を安定したかたちで供給することです。

Amazon EC2 は様々な手段を使用し、各インスタンスに安定した期待通りの CPU 能力を提供します。異なるインスタンスタイプ間で開発者が間単に CPU 能力値を比較できるように、Amazon EC2 コンピュートユニット(ECU)が定義されています。特定のインスタンスに配分されている CPU 量は、これらの EC2 コンピュートユニットで明示されます。当社はいくつかのベンチマークとテストを使用して、EC2 コンピュートユニットのパフォーマンスの安定性と予測可能性を管理します。EC2 コンピューティングユニット(ECU)は、Amazon EC2 インスタンスの整数処理能力を相対的に測定します。将来的に、コンピューティング性能についてお客様により明確な図を提供するメトリクスが見つかった場合には、EC2 コンピュートユニット (ECU) の定義方法が追加または交換される場合があります。

つまり、どういうことかというかというと、時代とともに物理CPUは変化していくので、vCPUという単位だけでは、物理性能差分は表現できない。そこでECUという単位を用いて相対的な処理能力を数値化して処理能力の目安にするということだと理解しました。
ただ、オンデマンド料金サイトにはm4.largeのECUが6.5、m4.xlargeのECUが13と書いてあります。インスタンスタイプの違いで相対値として倍になっていると理解はできますが、6.5や13といった絶対値が何を意味するのかが良く分かりませんでした。
いろいろググってみると、記事が古いですが以下のサイトなどに1ECUの定義が記載されています。

検証!Amazon EC2 - [CPU性能]実効速度は最大で3GHz相当:ITpro

ECUは、「Intel XeonまたはAMD Opteronの1.0G~1.2GHz相当」の処理能力を示す性能指標

ただ、AWSの公式にサイトにはどこにも書いていないので現在は違うということなのでしょうか…。
また公式サイトには、将来的に定義方法が追加または交換されるとありますので、絶対値で考えるようなものではないのかもしれません。
過去のユーザが乗り換える場合などの性能差分の目安などにするとかそういうことになるのでしょうかね。

以下のブログを見ると、ECUは初めてのAWSユーザには理解し辛いことと、最近はvCPUベースに移行しているとのことが記載されていますので、あまり深く考えないようにします。
Making Sense of AWS EC2 Instance Type Pricing: ECU Vs. vCPU - Botmetric

以下のインスタンスタイプマトリックスからはECUの記載はありません。
インスタンスタイプ - Amazon EC2 | AWS


あと、追加で調べておきたいことのメモ書き。このあたりは別途理解した内容を記載しようかと思います。

EC2インスタンスの作成

前置きが長くなりましたが,次回からEC2インスタンスを作成していこうと思います。

*1:2016/11/24 10:33での比較、変動するのであくまで参考値です。詳細はAWSサイトで調べましょう!