一銭も払わずにクラウド上でWebサービスを公開する(2021/02時点)

これはなに?

Webサービスを開発する際に使えるサービスのうち、無料枠があるものをまとめました。
自分でちょっとしたWebサービスを作ろうと思ったときに一銭も払いたくないなという気持ちがあるが、そもそもどの程度までちゃんとした構成が取れるんだっけというのをこれまでに100万回調べている気がするので自分用にまとめたメモです。
前提として、基本的にはAWSとGCPを対象に調べて、一部はそれ以外のサービスも追加で調べている、という感じです

最初に結論

  • 「無料でWebサービスを提供する」というところだけに集中するならAWSよりはGCPのほうが良さそう(ハードルが低そう + できることが多そう)
    • 無料枠だけで完結させるならherokuはSQLも使えるし視野に入れて良さそう
  • ドメイン周りだけはどうにもならないので諦めてお金を払うか各クラウドサービスのドメインのまま使いましょう
  • 無料の範囲内で最低限のWebサービスのためのアーキテクチャ(アプリケーションサーバ/DBサーバ/静的ファイルストレージ)の例について考えてみたものを一番下に書いてあります

まず最初に見ると便利なページ

2大クラウドサービスの一般的な無料枠の概念について

AWS、GCPはそれぞれ

  • 契約してから1年は無料で使える枠
    • AWSは各サービスごとに細かく定められています
    • GCPは$300の範囲まではどれだけ使ってもいいよ~という感じ
  • 毎月必ずついてくる無料枠

の2つがあり、基本的には後者があるものを「(一定の範囲内で)無料で使える」とみなしています

ある程度の範囲まで無料で使えるサービスたち

コード投げつけたらいい感じに動かしてくれるやつら(heroku的PaaS)

  • GAE
    • インスタンスクラスが「F」の場合は1日あたり28時間まで(つまり2インスタンス以上使わないと余る)、「B」の場合は1日あたり9時間まで無料
    • その他ログやらデプロイやら結構いろいろな無料枠の制限があって、普通にやってる分にはそこまで気にならないと思いますが脚注のリンク先(公式ページ)で詳しく見ておくと良いです1
  • beanstalkは単体で動くPaaSではなく、他のコンポーネントのプロビジョニング/運用のためのサービスなので比較はできない2
  • heroku
    • クレジットカード番号を入力した認証済みアカウントだとweb, workerなどで共有のdyno(アプリケーションコンテナのインスタンス)の時間が毎月1000時間付与されます3
    • リクエストがないと30分で休止し、時間が節約されます

任意のdockerコンテナ動かすPaaS

  • Cloud Runは1GiBまで無料枠がある4
  • GAE FlexibleEnvironment、ECSは無料枠はありませんでした。

データベース

いわゆるNoSQLは継続的に無料で使えそう。herokuだけは無料枠があるPostgreSQLがあります

  • RDS: 最初の1年の無料枠以外はなし
  • Cloud SQL: 無料枠なし
  • DynamoDB
    • 25GBまでは無料で、その他操作の回数などに制約がある
    • どこまでが無料になるのかが若干難しいのでドキュメントを読むと良いです
    • ざっくりいうと Provisioned Capacity mode の方にだけ読み書きの無料枠があり、読み書きの容量/秒間の操作回数に制約がある形です
    • キャパシティユニット(容量等の制約については クラスメソッドさんの記事 も参考になりそう
  • Firestore: 1GBまでは無料
  • Heroku: 1万レコード&1GBまで、同時接続数が20までなどの制約がありますが毎月99.5%は動くようです(つまり毎月0.5%≒4時間くらいは止まる)5

関数系

  • AWS lambda: 100万回までの呼び出しは可能
  • Google Cloud Functions: 200万回の呼び出しまで無料

Storage

  • Google Cloud Storage: 5GBまで無料
  • S3は無料枠がありませんでした。

CDN

調べた範囲では継続的に無料で使えるものはありませんでした

  • Fastly: $50までの(多少の機能制限もあるが)無料枠がある6
  • CloudFront: 契約して最初の1年間の無料枠があるが、それ以外に毎月の無料枠はない7
  • Cloud CDN(+ Cloud Load Balancing): 無料枠なし8

まとめ/構成例

とりあえず無料で使えるサービスで、ドメイン周り以外は揃うことがわかりました。
なので構成としては以下のような感じぐらいまでが無料の限界かなと思います。
無料枠の範囲内の柔軟性はGCPのほうが上かなという感じです。

GCP

  • アプリケーションサーバ: GAE
  • DB: Firestore
  • ストレージ: Cloud Storage

AWS

  • アプリケーションサーバ: lambda
  • DB: DynamoDB(provisioned capacity mode)
  • ストレージ: 無料枠がないのでcloud storageとかに逃がすしかなさそう

heroku


  1. https://cloud.google.com/appengine/pricing?hl=ja 

  2. 「ボンネットを開けられる」(https://www.atmarkit.co.jp/news/201204/25/aws.html )というかボンネットの中身丸見えなbeanstalkをこのラインナップに並べるのはちょっと違和感があるが、まあ一般的にbeanstalkはPaaSとして扱われてそうなのでこの枠で言及しました 

  3. https://jp.heroku.com/free 

  4. https://cloud.google.com/run/pricing?hl=ja 

  5. https://elements.heroku.com/addons/heroku-postgresql 

  6. https://docs.fastly.com/ja/guides/accounts-and-pricing-plans 

  7. https://aws.amazon.com/jp/cloudfront/pricing/  

  8. https://cloud.google.com/cdn/pricing?hl=ja 

okazu_dm
Webアプリケーションエンジニア(インフラからフロントエンドまで)、セキュリティエンジニア。 クラウドのベストプラクティスや安全なWebサービスの作り方に興味があります。
ユーザー登録して、Qiitaをもっと便利に使ってみませんか。
  1. あなたにマッチした記事をお届けします
    ユーザーやタグをフォローすることで、あなたが興味を持つ技術分野の情報をまとめてキャッチアップできます
  2. 便利な情報をあとで効率的に読み返せます
    気に入った記事を「ストック」することで、あとからすぐに検索できます
この記事は以下の記事からリンクされています
kurokurokurottiQiita Daily Survey memo 2021.02.24からリンク
コメント

CDNではCloudFlareには無料プランがあります。
通信量やコネクション数に制限がないので便利です。
https://www.cloudflare.com/plans/

ドメイン周りだけはどうにもならないので諦めてお金を払うか各クラウドサービスのドメインのまま使いましょう

herokuとCloudflareの無料枠を使えば、ランニングコスト0でドメイン適用しつつ運用できます(ドメインの購入代金はかかる)
https://qiita.com/healing_code/items/0e334606709fb9deae87

GAEのリンク先がないです。

ドメインは、利用だけなら、Freenomどうでしょうか?

(編集済み)

GAEのリンク先がないです。

こちら対応しました。ありがとうございます :bow:

あなたもコメントしてみませんか :)
すでにアカウントを持っている方は
ユーザーは見つかりませんでした