Amazon EC2 の基本をわかりやすくまとめてみた
目次
こんにちは。
AWSについて勉強しています。
今回はAWSの最もベーシックなサービス、EC2(Elastic Computing Cloud)についてまとめてみました。
そもそもAWSって何?という方はこちらの記事を御覧ください。
また、AWSのクラウドやサーバーがどういうものか具体的なイメージを知りたい方はこちらへどうぞ。
AWS公式ドキュメントでは概念的な言葉でわかりにくい表現がどうしてもあります。このブログではふわっとした言葉を極力なくして、わかりやすく伝えていこうと思います。
EC2って何だ
冒頭でも触れた通り、EC2とはElastic Computing Cloudの略です。
ECCではなく、Cを重ねるからEC2なんですね。
ECCにすると某英会話サービスが頭をよぎるから却下になったのでしょうか。個人的にはCCをC2と呼ぶのは、某緑髪のキャラクターが思い浮かびます...!
それはさておき、EC2とはつまりサーバーです。1台のコンピュータとして扱える物です。
サーバーが何かはこちらの記事に書いたとおりですが、要はネットワーク上から接続できるコンピュータを1台用意してくれるんですね。目的に問わず、とりあえずサーバーとしてのコンピュータが必要になったら、使えます。
何ができるか。
なんでもできます。
OSは何にする?CPUの性能をどうする?メモリサイズは?ストレージの性能や容量は?といったように、実際にパソコンを買うときのようにスペックを選んで、好きなようにサーバーを作ることができます。
大体はwebアプリケーションをホスト(そのサーバーで動くようにプログラムを配置)したり、何かインターネット上で特定のプログラムを実行するといった役割を担うパソコンが必要になったときに使います。
自由にプログラムをインストールさせることができるので、使える幅の広いサービスですね。
安いしお手軽
しかも、普通にパソコンを買うとしたら最低でも数万円とかかかってしまうかと思いますが、なんとこのEC2サーバーは使った分だけお金を払う形で利用することができます。
導入するのも、パソコンを調達・組み立てされるのを待つ必要はありません。
なんとスペックを選んで立ち上げるまで、ボタンクリックを数回ポチポチするだけで、数分で好きなサーバーを立ち上げて使い始めることができるのです。
これはクラウドならではのメリットですね〜。
オンプレミスの悩みを解決してくれる。
このようなクラウドのサーバーを利用することで、オンプレミス(つまり会社で用意する独自)のサーバーを立てようとしたときに発生する悩みを解決できます。
たとえば、場所を確保する必要がある、電源が必要、壊れないように管理する仕組みが必要、性能を変えたいときに買い換えなくてはならない、などの物質的な悩みです。
EC2で作ったサーバーの管理はすべてAWSが実施してくれます。また、スペックを変えたいときは、ボタンクリックですぐに変えられます。そして、同じサーバーがもう一台ほしい、やっぱり減らしたい、みたいなときもポチポチすれば自由かつ瞬時に変えることができるのです。
う〜ん、ミニマリズムを感じます。AWSって、すごいですね。
(実は、もっとミニマリズムなサーバレス・アーキテクチャという考え方があります。これはまた別の記事で。)
ちなみに、EC2のサーバーはインスタンスとも呼びます。実体という意味の単語ですが、コンピュータ1台を指しているイメージの言葉です。
色々なインスタンスタイプを選べる
インスタンスタイプとは、スペックのことです。
t3.micro
みたいな名前で表現されています。
この例では、頭のアルファベットであるt
がインスタンスファミリーを表しています。
インスタンスファミリーは、目的によって異なるアルファベットが使われています。
- 汎用:A,T,M
- コンピューティング最適:C
- メモリ最適:R
- 高速:P,G,F,Inf
- ストレージ最適:I,D,H
2つ目の数字3
が、インスタンスの世代を表しています。これは数字が大きい方が新しい世代でコスパが良いものなので、迷わず最新のものを使えば問題ないようです。
最後のmicro
がインスタンスのサイズ、つまり性能の良さを表しています。これがlarge
など大きくなるほど、メモリサイズやCPUの数(vCPUとか呼ばれてる)といった性能が良くなり料金が高くなるので、目的に応じて適切なサイズを選ぶ必要があります。
ちなみに汎用タイプであるt3.micro
(2コア、メモリ1GiB)の場合、0.0136USD/時間の料金がかかります。
100時間立ち上げていても、1.3ドル。(≒150円。)
や、やすい...! 電気代より安いんじゃないでしょうか。大丈夫か、AWS。
最新の詳しい料金表は公式をご参照くださいね。
設定
以下のような情報を設定します。
- ストレージ(EBSボリューム、後述)を何にして、それを1つつけるか複数つけるか。
- OS(ルートボリュームのテンプレートという)を何にするか。
- 起動許可(このインスタンスを作成できるAWSアカウントはどれか)
- ブロックデバイスマッピング (アタッチするボリュームの指定 Dドライブ、Cドライブ、みたいな)
ちなみに、設定情報はAMI(Amazon Machine Image)というイメージで保存してあります。
AMIとして設定情報を保管する目的は、同じインスタンスを増やしたい(再現性)、もう一度作りたい(再利用)、また、障害対策のバックアップとしたい、といったことがあります。
インスタンスの詳細設定として、ネットワーク、サブネット、セキュリティ、といった項目があるかと思いますが、これはまた別の記事にまとめます。
また、一番下にユーザデータという項目がありますが、これはインスタンスが起動したときに実行する処理を書いておけるものです。たとえば、アパッチというwebサーバー用のソフトをインストールして、起動したらすぐwebサーバーとして使えるようにする、といった使い方ができます。
選べるストレージ EBS
iPhoneを買うときに、容量が何GBかって選べますよね。パソコンの場合は、HDDにするか、SSDにするか、といったように、用途に応じて性能の異なる種類を選ぶことができます。
これと同じように、EC2インスタンスにもどのようなストレージをつけるか選ぶことができます。
EC2インスタンスにつけて使うストレージのことをEBS(Elastic Block Storage)といいます。
性能によって4種類を選ぶことができます。
SSDタイプ
- 汎用SSD
- プロビジョンドIOPS (速いけど高い)
HDDタイプ
- スループット最適HDD
- コールドHDD (遅いけど安い)
EBSはネットワークを通じてEC2とつながっているので、EC2を停止してもデータを残すことができます。EC2のホスト(コンピュータ)とは別なところにあるんですね。
原則、EBSは1つのインスタンスにのみ接続できます。EC2には複数のEBSをつけられますが、EBSには1つのインスタンスに対してしかつけることができません。これは普通のパソコンに対するHDDと同じですね。
複数のインスタンスと接続する場合は、EFS(Linux)か、FSx(Windows)という共有ファイルストレージサービスを使います。知ってる方はわかると思いますが、NASみたいなファイルサーバーですね。これらの使い分けは、OSの違いです。
速いけど儚いインスタンスストア
インスタンスストアとはEBSと似て非なるもので、エフェメラル(儚い)とか言われるタイプのストレージです。
何が儚いかというと、データが残りません。
なぜかというと、EBSのようにネットワークで繋がっているのではなく、同じホスト上に物理的に繋がっているストレージだからです。
え? 普通のパソコンは停止して再起動してもデータ残ってるじゃん!って思いますよね。
実はEC2インスタンスは一度停止してしまうと、次に再起動するときにデータセンターにある大量のマシンの中で、同じマシンで立ち上がるとは限らないのです。これは大量のコンピュータを効率よく利用する上で仕方のないクラウドならではの仕様ですね。
EC2は立ち上げるたびにどこのマシンに立ち上がるかわかりません。なので、物理的に繋がっているストレージであるインスタンスストアは、起動のたびにデータがなくなってしまうのです。
EBSはインスタンスとは別のサーバーに保管してあるので再度繋ぐことができますが、インスタンスストアは一回立ち上がったマシンの中に存在するので、停止するたびに中身が消えてしまいます。
そのようなデメリットがあるものの、インスタンスストアを使うメリットはあります。
それがデータにアクセスする速度(読み書きの速度)が速い、ということです。
EBSに対して、読み書きが速いと何に使えるかと言うと、例えばEC2で大量演算するときに使えます。計算途中のデータを置いておく場所が必要な場合、そのデータを置いたり読んだりするスピードが早くなるので、計算のスピードを全体的に早くすることができたりします。
そういった用途以外では、一般的にインスタンスストアは使わず、EBSやEFSにファイルを保存するような使い方をした方が、データが消えなくてすみます。
料金に関わる選択肢
色々と便利なEC2ですが、なんとお得に使うためのオプションサービスが用意されていたりします。
-
オンデマンドインスタンス
これは使いたいときに時間単位で課金されるという、普通のインスタンスの呼び名です。 -
リザーブドインスタンス
1~3年の予約購入による割引プランです。さらに、スタンダード、コンバーティブル、スケジュールドといったプランが選べます。これは、同じ予約購入だけれど、スペックを途中で変えられるかどうか、の違いです。 -
Savings Plans
リザーブドと似ていますが、これは1年にどれだけ使うかを約束することで安くしてくれるというプランです。リザーブドよりも柔軟性があります。数を減らしたりインスタンスタイプを変えられるのは自由で、使ったインスタンスタイプによらず、いくら使うかということのみでコミット(約束)するプランですね。最近はリザーブドインスタンスよりも、こっちがお勧めされてるみたいです。 -
スポットインスタンス
変動価格のインスタンスです。データセンターに余裕がないときは高く、余裕があるときは安いです。入札価格(リクエスト価格)、つまり自分が使いたい価格が価格より上回れば使うことができます。使っている中で、入札価格よりインスタンスの価格が上回ると、使うことができなくなりますので、途中で落ちてもいいような処理で使います。たとえば、1台でもできる処理だけど、2台で処理を早められるなら早めたいな〜、などのケースで、ちょっと料金を出せるなら2台目のインスタンスをこのスポットインスタンスで賄うことがお財布に優しいです。
また、一度購入したインスタンスの価格がリクエスト価格を下回った場合は、変動するスポット価格で課金されます。たとえば、1時間ごとに課金されるインスタンスでは、1時間ごとに料金が見直されていきます。なので、キワキワを攻めて設定する必要はなく、使いたさが優先する場合は、多少多めに価格を見積もってリクエストしても良さそうです。
ちなみにEC2にはタグ機能というのがあります。タグによって請求を一括管理できたりしますし、タグを使うこと自体は料金がかからないので、積極的に活用することが推奨されているようです。
ちょっと潔癖な選択肢
データセンターにあるサーバーに対して、自分のAWSアカウントのみでそのハードウェアを使用したいというときに使えるオプションがあります。
それが、ハードウェア専有インスタンス(Dedicated Instance)と、Dedicated Hostです。
Dedicatedとは、専有された、という意味です。
同じマシンで他のアカウントも使われているなんて嫌だとは、なかなか潔癖症というか、神経質なオプションですね。主に金融機関、医療機関などコンプライアンス(法令遵守)が厳しい需要向けと思われます。
Dedicated Instanceは、他のAWSアカウントから物理的に分離されているという要件を満たしているので、コンプライアンスの問題だけであればこっちを選べばOKです。
もっとマニアックな使い方が、Dedicated Hostです。Dedicated Hostは、ホストマシンまるごとがユーザ専用です。CPU, socket数まですべて専有して、どれにするか指定できることができます。ソフトウェアのライセンス持ち込みで使いたいときで、特にコア数がいくつでいくら、ソケットいくつまでいくらみたいな要求があるときに使われるようです。
まとめ
というわけで、オンプレミスのサーバーで解決できない悩みを解決できるAWSサービス、EC2についてまとめてみました。
EC2を使えば、瞬時に自由に管理不要なサーバーを用意することができます。便利!
参考記事
日々AWSのサービスは進化しています。最新情報はこちらで。