AWSのt2.microインスタンスについて(おさらい)

こんにちは。タグボート開発メンバーのワシヅカです。

今日はこのタグボードで使用している、AWSのEC2(t2.microインスタンス)について使用感などをご紹介したいと思います。記事の内容は「とーっても今更感」がありますが、自分の整理のためにも改めてまとめてみようと思います。

 

タグボートで利用しているインスタンスタイプについて

このタグボートは、AWS(Amazon Web Service)環境で動いています。インスタンスタイプは、t2.microインスタンスを使用しています。t2.microインスタンスは、t2.nanoに次いで、下から2番めのスペックです。1仮想CPUと1GiBメモリというと、最近のノートPCに比べてもぐっとスペックが低く、ちょっと非力なイメージですね。

モデル vCPU CPU クレジット/時 メモリ (GiB) ストレージ
t2.nano 1 3 0.5 EBS のみ
t2.micro 1 6 1 EBS のみ
t2.small 1 12 2 EBS のみ
t2.medium 2 24 4 EBS のみ
t2.large 2 36 8 EBS のみ
t2.xlarge 4 54 16 EBS のみ
t2.2xlarge 8 81 32 EBS のみ

引用元:https://aws.amazon.com/jp/ec2/instance-types/

 

 

タグボードのシステム構成

そんなt2.microインスタンスの上に、タグボードは以下のようなシステム構成で構築しています。

基盤まわりとしては

  • Windows Server(OS)
  • Apache (Webサーバー)
  • Tomcat(アプリケーション・サーバー)
  • MySQL(データベース)

という形で構成しています。

アプリケーションは、Javaを使って作成しており、フレームワークは

  • SpringBoot
  • Thymeleaf
  • JPA(Java Persistence API)

を使用し作成しています。
※バージョンについては、セキュリティー上の関係から伏せさせて頂きます。

また、トップページのプロモーションページや、この記事はWordpressを使用しています。WordpressはApache上でPHPをインストールして動作するようにしています。

 

 

t2.microで動くタグボードのパフォーマンスは?

このタグボードは10月にリリースしました。
まだまだ認知度は低く、残念ながら日に50アクセスあるかないかというレベルなので(泣)、全体的なパフォーマンスは良好です。Google先生の評価はもう一歩というところでしょうか。サイトチェックツールの指摘に従って、Apache、Tomcatの設定ファイルの変更や、サイトのパフォーマンス向上の対応を施し、レスポンスを早くするようにはしていますが、モバイル表示はもう少しチューニングが必要そうです。

Google PageSpeed Insightsの結果は以下のような感じです。

 

t2.microインスタンスの特徴と注意点

t2.microを含む、t2インスタンスの特徴として、バーストという機能があります。
バースト機能は「CPUクレジット残高」を使用し、ベースラインパフォーマンスを超えて処理することができます。

簡単にいうと「CPUクレジット残高」という貯金を使って、いつもよりたくさん処理できるようになるのです。

「CPUクレジット残高」の貯金が底を着いてしまうと、CPUが割り当てられず、ベースラインパフォーマンスに引き下げられ、非常に低いパフォーマンスになってしまいます。

ベースラインパフォーマンスは、インスタンスタイプごとに決まっており、それを超えると「CPUクレジット残高」を使用し始めます。
t2.microインスタンスの場合、CPU使用率が「たったの10%」です。10%を超えると「CPUクレジット残高」を使用して処理し始めます。

 

インスタンスタイプ 初期 CPU
クレジット
1 時間あたりに
受け取る
CPU クレジット
vCPU ベースライン
パフォーマンス (CPU 使用率)
最大獲得
CPU クレジットバランス
t2.nano 30 3 1 5% 72
t2.micro 30 6 1 10% 144
t2.small 30 12 1 20% 288
t2.medium 60 24 2 40% (最大 200%)** 576
t2.large 60 36 2 60% (最大 200%)** 864
t2.xlarge 120 54 4 90% (最大 400%)** 1296
t2.2xlarge 240 81 8 135% (最大 800%)** 1944

引用元:http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/t2-instances.html

 

また、「CPUクレジット残高」は、インスタンスをSTOP/STARTすると、「初期CPUクレジット」残高にリセットされます。ですので、「CPUクレジット残高」が底をついてしまい、どうしようもなくなってしまった場合は、インスタンスをSTOP/STARTしてあげるとよいです。(アクセス数が多いサイトではちょっと難しい荒業だと思いますが)注意したいのは、インスタンスの再起動ではリセットされませんのでご注意ください。

ベースラインのCPU使用率を超えていない間、「CPUクレジット残高」は「最大獲得 CPU クレジットバランス」まで貯金されていきます。ただし獲得した貯金は24時間で失効してしまいますので注意が必要です。

 

 

t2.microインスタンスを実際に使ってみて

実際に開発に使ってみた所感です。

正直なところ、ベースラインパフォーマンスが10%というのはなかなか厳しい条件でした。

開発作業で、Javaアプリケーションのデプロイや、Wordpressの管理画面で重い操作していると、CPU使用率が簡単に20%を超えてしまうため、「CPUクレジット残高」を意識して作業せざるを得ませんでした。

対応する「CPUクレジット残高」のグラフです。「CPUクレジット残高」 がなくなり始めた11/7 8:00頃にはCPU使用率はベースラインの10%に留まってしまっています。

 

また、開発当初、インスタンスを立ち上げた状態が続くとCPU使用率が100%に張り付いてしまい、CPUクレジット残高不足でパフォーマンスが上がらなくなるという事象が発生していました。CPU使用率が高騰してしまう原因として、「Windows Defender」が自分自身をウィルスチェックしてしまい、CPUが高負荷になるという情報をキャッチしたため、対処しましたが、対処後も同事象が再発してまい、CPUクレジット残高不足が発生するという状態でした。

そこで、現在はLambdaを使って利用時間帯が少ない夜間にインスタンスのSTOP/STARTを行う運用をしています。この運用ですと、獲得したCPUクレジット残高はリセットされてしまうので、「CPUクレジット残高」がたくさん余っている場合は勿体無いのですが、CPU使用率高騰の事象が発生しなくなるため比較的安定した運用ができています。

「CPUクレジット残高」が残っている状態であれば、他社のレンタルサーバーよりもかなり高いパフォーマンスだと感じています。Wordpressの記事を投稿するぐらいであれば、対してCPU使用率も上がりませんし、管理者画面や、開発したWebアプリケーションについてもかなり速い速度でに表示されます。プライベートや会社の業務で、何社か異なるレンタルサーバーを借りてWordpressを運用していますが、他社と比べても遜色なく、ハイパフォーマンスな印象を受けました。

■2018/06/04
上記のCPU使用率の高騰の現象について、最近では比較的発生しなくなりました。月例のWindows Updateが原因と睨んでいますが、原因の特定までは至っておらず…。WindowsUpdateの自動更新を止めるのも手かもしれません。

 

気になる料金は…?

EC2の契約には、大きく分けて「オンデマンド」、「リザーブドインスタンス」、「スポットインスタンス」、「Dedicated Host」の4つの種類があり、タグボードは「オンデマンド」で契約しています。「オンデマンド」は、インスタンスを起動していると課金されていくイメージです。課金される料金は、インスタンスタイプ、リージョン(実際の物理マシンが配置されてる地区)、使用OSなどの要素によって変わります。

タグボードは「t2.microインスタンス」+「アジア・パシフィック(東京)リージョン」+「WindowsOS」なので、この料金表になります。

 

vCPU ECU メモリ(GiB) インスタンスストレージ(GB) Windows 料金
一般的な目的 – 現行世代
t2.nano 1 可変 0.5 EBS のみ $0.0099 /1 時間
t2.micro 1 可変 1 EBS のみ $0.0198 /1 時間
t2.small 1 可変 2 EBS のみ $0.0396 /1 時間
t2.medium 2 可変 4 EBS のみ $0.0788 /1 時間
t2.large 2 可変 8 EBS のみ $0.1496 /1 時間
t2.xlarge 4 可変 16 EBS のみ $0.2842 /1 時間
t2.2xlarge 8 可変 32 EBS のみ $0.5484 /1 時間

引用元:https://aws.amazon.com/jp/ec2/pricing/on-demand/

 

1ヶ月あたりの料金をちょっと計算してみましょう。

$0.0198 /1 時間  × 24時間 × 30日 × 114円(円換算)= 1625.184円

 

これだけ自由に使えてこのお値段では、なかなかコスパは良さそうです。

ただ、実際はこの料金以外にも静的IPアドレスを割り振ったり、パフォーマンスモニターを使ったりと「おまけ」の課金がありますので、実際利用される場合は、1ヶ月2,000円弱と見積もっておいたほうが良いかなと思います。

 

 

まとめ

  • t2インスタンスにおいて、「CPUクレジット残高」は、非常に重要なポイント。常に「CPUクレジット残高」を意識して運用する必要がある
  • インスタンスタイプの選定には注意を払う必要があり、「CPUクレジット残高」不足が頻発するようであれば、インスタンスタイプを上位に変更する
  • t2.microの用途として向いているのは、
    • スタートアップのアプリケーション
    • デバッグ環境
    • 個人ユースのWebサーバー(予想ですが一日平均1000~2000アクセス以下ぐらいであれば耐えられると思います。)
  • 自由に色々やりたいのであれば、他社のVPCに比べてもなかなかのコスパ!(逆にブログだけ書きたい人には不向きです)

といったところでしょうか。

これからAWSで開発してみようかな。という方の参考になれば幸いです。タグボードは、無料で使って頂けるのでぜひ触っていただいて「あぁ。これぐらいのパフォーマンスがでるんだなぁ」と感じていただければ嬉しいです!

 

以上、開発チームのワシヅカでした。



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください