GCP・AWS・Heroku の最低価格帯インスタンスの料金比較（2020年1月版）

はじめに
-------

規模の小さい Web アプリケーション（CPU 1 コア・メモリ 1 GB 弱のサーバ 1 台で動作可能）を
動かすための環境として GCP・AWS・Heroku を検討したので、
各サービスごとの最低価格帯の料金をまとめてみました。（料金は 2020年1月3日現在のもの。）
Azure は今まで全く触ったことがないので検討に入れておらず…すみません…

料金比較表
--------
主なサービスを月間料金の昇順でソートしてみました。

| Service | Instance |(v)CPU | RAM(GB) | 時間料金(USD)|月間料金(USD)|月間料金概算|Region|
|:--------|:---------|---:|--------:|-----------|-----------|-------:|---|
| Heroku    |free | ?[^3] | 0.5   |            | $0 [^4] |0円   |US|
| AWS     | t3a.nano | 2  | 0.5 | $0.0061 | $4.392 |480円   |東京|
| GCP     | f1-micro | 1  | 0.6 | $0.0092 | $4.70  |520円   |東京|
| AWS     | t3.nano  | 2  | 0.5 | $0.0068 | $4.896 |540円   |東京|
| AWS     | t2.nano  | 1  | 0.5 | $0.0076 | $5.472 |600円   |東京|
| Heroku    |Hobby | ?[^3]    | 0.5 |        | $7 |770円   |US|
| AWS     | t3a.micro| 2  | 1.0 | $0.0122 | $8.784 |960円   |東京|
| AWS     | t3.micro | 2  | 1.0 | $0.0136 | $9.792 |1070円   |東京|
| AWS     | t2.micro | 1  | 1.0 | $0.0152 | $10.944|1200円   |東京|
| GCP     | g1-micro | 1  | 1.70| $0.0322 | $16.45 |1800円   |東京|
| AWS     | t3a.small| 2  | 2.0 | $0.0245 | $17.568 |1920円   |東京|
| AWS     | t3.small | 2  | 2.0 | $0.0272 | $19.584 |2140円   |東京|
| AWS     | t2.small | 1  | 2.0 | $0.0304 | $21.888 |2400円   |東京|
| GCP   |n1マシンタイプ | 1  | 1.0 | $0.0460 [^1] | $23.5249 [^2] |2600円   |東京|
| GCP |n1-standard-1 | 1  | 3.75  | $0.0610 | $31.17 |3500円   |東京|
| Heroku |Standard 1x | ?[^3] | 0.5 |        | $25 |2750円   |US|
| Heroku |Standard 2x | ?[^3] | 1.0 |        | $50 |5500円   |US|
| GAE     | F1,B1    | 1  | 0.25 | $0.07  | $50.4  |5600円   |東京|

### 注意事項・補足

- 月間料金概算は、1ドル約110円として概算
- 各料金は、各サービスの下記公式ページから抜粋
    - [AWS の料金表](https://aws.amazon.com/jp/ec2/pricing/on-demand/)
    - [GCP の料金表](https://cloud.google.com/compute/all-pricing?hl=ja)
    - [Heroku の料金表](https://jp.heroku.com/pricing)
- AWS の月間料金は、1時間料金 * 24 * 30 として算出
- GCP の月間料金は、GCP の料金表より抜粋
    - 一定時間以上使用すると継続利用割引（最大 30 %）が適用される
- 無料枠
    - GAE の Standard Environment では 1 日あたり 28 インスタンス時間の無料枠がある
    - GCE では 1 インスタンス
        - f1-micro、ただしリージョンは、オレゴン(us-west1)、アイオワ(us-central1)、サウスカロライナ(us-east1) に限られる
    - AWS は、無期限での無料利用枠は AWS Lambda のみ
        - 12ヶ月間限定では、750 時間 / 月の t2.micro (Linux、RHEL、または SLES) インスタンスが含まれる
- AWS の「東京」は `アジアパシフィック（東京）` 、GCP の東京は `東京（asia-northeast1）` 
- Heroku の US は North Virginia にあるらしい。[公式ページ](https://help.heroku.com/X1JPM2Z6/where-is-each-region-geographically-located) で Region を調べる方法の記載がある。
- AWS の t3 と t3a の違いは、下記引用の通り、CPU が若干異なるだけとのこと。

>T3a インスタンスは T3 インスタンスのバリアントであり、全コアターボのクロック速度が最大 2.5 GHz の AMD EPYC プロセッサを搭載しています。T3a インスタンスは、使用中に一時的なスパイクが生じる中程度の CPU 使用率を持つアプリケーション向けの Amazon EC2 コンピューティング環境で、10% のコスト削減を目指すお客様にとっての新たな選択肢となります。

[AWS 公式の T3a 提供開始のお知らせ](https://aws.amazon.com/jp/about-aws/whats-new/2019/04/amazon-ec2-t3a-instances-are-now-generally-available/) より引用

個人的な所感
----------

Heroku はとても安いので、GCP の GAE も安いのではと思っていたところ
GCE に比較して全く安くないということがわかりました。
確かに、GAE はマシン自体の管理が必要ないという点で GCE と比較して
運用側のコストが抑えられるものの、Docker コンテナ等でサービスを運用するのであれば
GCE が最適かなーと思いました。

AWS は相変わらず安いですが、色々考えてプラットフォームは一つに絞りたいし、
GCP がいいかなーと考えています。


[参考] Heroku の各タイプの特徴
---------------------------

- Free
    - スリープ状態への移行あり
    - カスタムドメインは使用可
    - プロセスタイプ数　〜2
- Hobby
    - スリープ状態への移行なし
    - 高度なアプリケーション用に複数の WORKER を使用可
    - 10分毎のメトリクス
    - プロセスタイプ数　〜10
- Standard
    - 手動スケール
    - 閾値によるアラート


[^1]: (\$0.040618 / vCPU hour) + ($0.005419 / GB hour) として算出
[^2]: (\$20.755798 / vCPU month) + ($2.769109 / GB month) として算出
[^3]: Heroku 上の CPU コア数は非公表。ただし [StackOverflow](https://stackoverflow.com/questions/15910965/how-many-cpu-cores-has-a-heroku-dyno) には、調べた結果 4 コアまたは 8 コアだったという情報がある。
[^4]: 1アカウントあたり合計 1000時間 / 月まで無料