AWS初心者がサービス内容と料金を調べて見積もりしてみた

「AWSとはなにか」と聞かれても「Amazonがやってる便利なサービスだよね」と答えるくらいAWS初心者なわたしですが、iOSアプリ開発で必要に迫られてお見積もりをつくったので、そのときに学んだことを紹介します。

AWSってサービス多すぎてわけわからん！　なにをどうやって見積もればいいねん！　というかたの手助けになれば幸いです。

## AWSとは

[AWS](https://aws.amazon.com/jp/)とは、アマゾン・ウェブ・サービスの略で、名前の通りAmazonが提供しているウェブサービスです。

ウェブサービスというと非常にざっくりしていますが、ざっくりとしか言いようがないくらい、AWSには多種多様なサービスが含まれています。

<img width="1218" alt="aws001.png" src="https://qiita-image-store.s3.amazonaws.com/0/38924/ff0cee96-021f-f180-4232-ac6e676a38f3.png">


Amazon公式の[クラウドとは？](https://aws.amazon.com/jp/cloud/?nc2=h_l2_cc)を見ると、AWSのクラウドサービスには20種類ものカテゴリーがあります。

さらに、カテゴリーをクリックすると実際のサービスを参照できます。たとえば、コンピューティングをクリックしてみると……

<img width="1271" alt="aws002.png" src="https://qiita-image-store.s3.amazonaws.com/0/38924/81414fd1-d113-2a8a-befb-929c500bd461.png">


12種類ものサービスが表示されました。

これだけたくさんあると、「じゃあ、AWSでいったいなにができるの？」という気持ちになります（なりました）。

<img width="1281" alt="aws003.png" src="https://qiita-image-store.s3.amazonaws.com/0/38924/12ae0f46-ada0-5cd9-f4e5-76ad64e9becb.png">


公式サイトには、代表的なクラウドの活用用途が書いてあります。

このようにAmazonが保有している様々なコンピューター資源にインターネット経由でアクセスして使用できるのがAWSです。
従来でしたら、自社にサーバーを設置して、RAIDを組んで、UPSを置いて……みたいなことをする必要がありましたが、そういった物理的な管理をしなくてもいいのがAWSの魅力のひとつです。

また、設定を変更するだけで、サーバーを追加したり、ディスク容量を増やしたりできます。そのため、サービス開始当初は最小構成でランニングコストを安くしておいて、サービスが大きくなるとそれに合わせてサーバーの構成を増強する、という運用がやりやすいのもAWSの魅力のひとつです。

## AWSのおもなサービス

つぎに、AWSのおもなサービスをみていきましょう。
さきほど紹介したように、AWSには様々なサービスがあるので、アプリ開発でよく使うと思われるサービスを中心に紹介します。

### EC2
EC2（Amazon Elastic Compute Cloud）は、クラウド内の仮想サーバーです。メモリ、CPU、オペレーティングシステム（Linuxディストリビューションや Microsoft Windows Server）を選択できます。

EC2は、クラウド上にありますが実態は通常のサーバーなので、アプリをインストールしたり実行したりできます。管理サイトを置いたり、APIを実行するプログラムを置いたりするならEC2です。

### S3
S3（Amazon Simple Storage Service）は、クラウドストレージです。

EC2にもストレージがありますが、値段が高い（らしい）ので、画像などの容量が大きいデータをたくさん置くときはS3にしましょう。

### RDS
RDS（Amazon Relational Database Service）は、クラウド内でつかえるリレーショナルデータベースです。データベースの種類は、Amazon Aurora、PostgreSQL、MySQL、MariaDB、Oracle、Microsoft SQL Serverから選択できます。

EC2はサーバーなので、データベースソフトをインストールして使うこともできますが、値段が（以下略
RDSとはべつにAmazon Auroraというサービスもありますが、RDSでもAuroraを選択できるのでナゾです。

アプリやウェブサービスのデータを管理したいときに使ってください。

### Amazon DynamoDB
Amazon DynamoDBは、RDSと同じようなデータベースサービスですが、こちらはNoSQL（非リレーショナルデータベース）です。

NoSQLを実際に使ったことがないので詳しくはわかりませんが、サイトの説明によると

> どのような規模においても整合性と1桁ミリ秒単位のレイテンシーを必要とするアプリケーションに対応した、高速かつ柔軟な非リレーショナルデータベースサービスです

とのことです。
アプリやウェブサービスの特性に合わせて、RDSかDynamoDBを使いわけましょう。

### Amazon SNS
Amazon SNS（Amazon Simple Notification Service）は、モバイル通知サービスです。iOS、Androidなどにプッシュ通知を送信できます。

プッシュ通知をつかうアプリを開発するならAmazon SNSです。

### ELB
ELB（Elastic Load Balancing）は、アプリケーションへのトラフィックを複数のターゲット (Amazon EC2インスタンス、コンテナ、IPアドレスなど) に自動的に分散します。

負荷が集中しやすいサービスでも、自動的に負荷を分散してくれるので、つながりにくいということが起きにくくなります。

### VPC
VPC（Amazon Virtual Private Cloud）は、仮想プライベートネットワークを設定できます。

インターネットに接続する必要のあるWebサーバーだけグローバルに割り当てて、データベースやストレージをプライベートに割り当てれば、データベースやストレージにインターネットから直接アクセスできなくなるので安全です。

### Amazon Route 53
Amazon Route 53は、クラウドドメインネームシステム(DNS)ウェブサービスです。

公式サイトによると、

> 可用性が高くスケーラブルなさまざまなルーティングタイプ (レイテンシーベースルーティング、Geo DNS、地理的近接性、加重ラウンドロビンなど) を使用してトラフィックをグローバルに簡単に管理できます

とあるので、いろいろな要素を考慮して自動的に一番ネットワーク的に近くて速いDNSサーバーを経由してくれるということでしょうか（よくわかってない）。

どういう用途のときにRoute53をつかえばいいかわからないので、使用例などを教えていただけると助かります。

### CloudFront
Amazon CloudFrontは、低レイテンシーの高速転送によりデータ、ビデオ、アプリケーション、APIをビューワーに安全に配信するグローバルコンテンツ配信ネットワーク(CDN)サービスです。

公式サイトによると、

> CloudFrontのインテリジェントなルーティングは、Amazon.comを含む著名なインターネットサイトから継続的に収集される、現実世界でのレイテンシー測定値に基づいています。

> CloudFrontでは標準サービスの一部としてリージョン別エッジキャッシュロケーションが提供されており、世界中で高いキャッシュヒット率を維持できます。

とあるので、実際に運用しているサイトからの膨大なデータのルーティング情報やキャッシュヒット情報をもとにして、いい感じに経路を割り当てたりキャッシュしたりして高速転送を実現しているということでしょうか（よくわかってない）。

映像配信など、高速なデータのやり取りを求める場合に使うといいようです。

## お見積もり

さて、実際にAWSを使うとなると、気になるのがそのお値段です。
というわけで、つぎは見積もり方法を紹介します。

サービスが多い上に料金体系も複雑なので、どこから手をつけていいかわかないよ！　という声に応えて、公式の資料が用意されています。

<img width="1007" alt="aws004.png" src="https://qiita-image-store.s3.amazonaws.com/0/38924/d74e8dc2-4d13-15aa-06f8-ee4a341cff1f.png">


[AWS の課金体系と見積もり方法 | AWS](https://aws.amazon.com/jp/how-to-understand-pricing/)にアクセスすると `「AWS の課金体系」に関する資料ダウンロードはこちら` というリンクがあります。こちらのリンクから「AWSの課金体系」というPDFをダウンロードできます。

<img width="896" alt="aws005.png" src="https://qiita-image-store.s3.amazonaws.com/0/38924/d4be75a9-488d-2f81-53e8-81c38efb342b.png">


この資料では、主要サービスの価格や、課金方法のポイントや、見積もりをするときの注意事項が載っています。よくまとめられているので、見積もりをする前にぜひご一読ください。

**追記**

「EC2の課金は1時間単位ではなく、秒単位が可能となっておりますよ！」とのコメントをいただきました。また、[公式ブログ](https://aws.amazon.com/jp/blogs/news/new-per-second-billing-for-ec2-instances-and-ebs-volumes/)のリンクも教えていただきました。
hiroki_konishiさん、ありがとうございます！

**追記ここまで**


おなじページに `「AWS Simple Monthly Calculator(簡易見積ツール)使用方法ご説明資料」はこちら` というリンクがあります。こちらのリンクでは「AWS Simple Monthly Calculator (簡易見積ツール)解説資料」というPDFをダウンロードできます。このPDFは、Amazonが提供している簡易見積ツールという、AWS料金の見積りを補助してくれるツールの紹介が載っています。

<img width="1097" alt="aws006.png" src="https://qiita-image-store.s3.amazonaws.com/0/38924/680e5064-e13d-2def-698f-200e7ba8fe58.png">


このように、見積もりに必要な項目の解説や注意点が載っているので、簡易見積ツールをつかうときにとても参考になりました。

さらに、「AWS Simple Monthly Calculator (簡易見積ツール)解説資料」の参考資料として[クラウド推奨構成とお見積り例 | AWS](https://aws.amazon.com/jp/cdp/?sc_ichannel=HA&sc_ipage=how-to-understand-pricing&sc_iplace=text_link&sc_icampaigntype=pricing&sc_icampaign=ha_jp_how-to-understand-pricing_cdp&sc_icountry=JP)というリンクが掲載されています。

<img width="737" alt="aws007.png" src="https://qiita-image-store.s3.amazonaws.com/0/38924/28f3f745-b0b7-3d3e-dda8-b9e44ffbea4d.png">


リンク先では、実例に沿ったいくつかの構成が載っているので、これから開発するサービスに似た構成を選んで参考にできます

<img width="745" alt="aws008.png" src="https://qiita-image-store.s3.amazonaws.com/0/38924/378bd6fc-eaa6-db70-7253-502493a0b0ff.png">


選択した構成での見積り金額も載っていますし、 `最新料金によるお見積り金額は、こちらよりご覧いただけます` というリンクをクリックすると、

<img width="928" alt="aws009.png" src="https://qiita-image-store.s3.amazonaws.com/0/38924/159e63cb-be61-089f-0682-342593c617dc.png">


選択した構成の見積内容が記入済みの状態で簡易見積ツール画面が表示されます。

あとは、これから開発するサービスに合わせて必要な箇所を変更するだけで、お見積もりが完成します。

## AWSの監視・保守

サービスはつくって終わりではなく、リリースしてからが本番です。
日々のサービス運用でAWSが問題なく動いているかを、監視・保守する必要があります。

とはいえ、自社で監視や保守をするのは大変なので、餅は餅屋の専門家にお任せしましょう。ご参考までに、こちらに監視・保守の代行サービスを提供している会社をあげておきます。

[Amazonクラウドでビジネスを加速｜AWS専業のcloudpack（クラウドパック）](https://cloudpack.jp)

[AWS・クラウドのMSP スカイアーチネットワークス](https://www.skyarch.net)

[AWSの総合支援ならクラスメソッドメンバーズ｜クラスメソッドのサービス](https://classmethod.jp/services/members/)

## おわりに

実際にお見積もりするには、データの使用量やデータの転送量やセッション数などを算定する必要がありますが、この記事では割愛します。

この記事を読んで、「AWSナニそれこわい」というかたが「AWSよさそうだね」くらいな身近さを感じられるようになれば幸いです。