【個人開発】サービスのアーキテクチャをAWSの仮想環境からNetlify + Herokuに移行させたら収支が月約一万円変わった話

# はじめに

「GitHubでコードを管理するように、テストをWeb上でチームで管理するプラットフォームが欲しい！」
そう思い立ち、Nuxt.js + Ruby on Railsで開発した、OSSや個人用のテスト管理プラットフォーム「Itamaster」を運営しております。
ふぁると申します。
[運営者ギルド](https://qiita.com/organizations/admin-guild)に所属しています。皆様にはいつもお世話になっております。
現在はItamasterのみですが、今後も新規のサービス開発・Qiita記事やSNSを用いた発信活動に努めて参りますので、フォロー・LGTMよろしくお願いいたします。
【Twitterリンク】
https://twitter.com/@itamaster_

【Itamaster公開記事リンク】
https://qiita.com/Itamaster/items/f821be4c33caab640a93

【Itamaster】
https://itamaster.work

<TABLE ALIGN=CENTER>
  <TR>
    <TD WIDTH=600px>
      <A HREF="https://itamaster.work" TARGET="_blank"><strong>テスト管理プラットフォーム　Itamaster</strong></a>
      <A HREF="https://itamaster.work" TARGET="_blank">
      <IMG BORDER="0" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1869061/8cd870e2-8b7d-e6b6-c0b9-4f3266f51fbd.png" BORDER="0" ALT="" /></a>
      <BR
    </TD>
  </TR>
</TABLE>

# 旧インフラ構成
こんな感じ......？
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1869061/443468c4-42a4-7002-c539-9528e856d6af.png)
解釈等大きく外れているかもです。

## Route53
DNSです。カスタムドメインとEC2に紐づけたElastic IPとの連携に使ってた（？）と思います。
すみません、ぶっちゃけふわふわしてます。

## ALB
ロードバランサーです。
サービスをhttps化するにあたり、フロントエンドからのリクエストをバックエンド（同仮想環境内）に渡すときに、
「localhost、アドレス直打ちのリクエストダメだよ！！！」ってブラウザにくっそ怒られて、困り果てた際に運営者ギルドの[mikkame](https://qiita.com/mikkame)さんにヒントをいただき（サブドメインについて）導入の流れとなりました。

## EC2
仮想サーバーです。Amazon Linuxを利用しました。
月750時間までの無料枠があるのですが、無料枠のスケールではnpm run generateするとほとんどの確率でサーバーが落ちてしまい、ストレスが半端ではなかったのでnanoだかminiだかの、無料枠のスケールから二つほどスケールアップしたやつを使ってました。
Linuxによるサーバー構築を０からコマンドラインによって行う事に興味があったため、Docker等のコンテナツールは一切利用せず、nginxやらgitやら全て手動でインストール・設定しました。
超面倒でした。個人開発では二度とやらないです。

## S3
レンタルストレージです。Itamasterには自分のアカウントのアイコンを設定できるため、S3を導入しました。
75,000リクエストまで無料（？）ですし、設定や構築も簡単なのでこの子とは今も仲良くできています。

## RDS
ＤＢサーバーです。
こちらもEC2と同様、何時間だかまで一番低いグレードでの無料枠があるのですが、毎月中旬を超えたあたりから課金が始まります。

# 旧インフラ構成での月費用
![hiyou.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1869061/40938d32-27c8-3c3e-1c0f-756e25de9673.png)
10月度のものです。
**82.88$**なので、毎月の費用は
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1869061/c3eca819-ed08-693d-85dd-7c2f76a2bd9a.png)

・・・今見ると、無駄遣いも甚だしく思います。

## お行儀が良すぎる
第一、特に特殊な要件の無いWebサービスにEC2は必要ないんじゃないかと思います。
ホスティングサービスやフルマネージドのレンタルサーバーを利用すると、EC2,ALB,Route53が既に不要になるわけです。
RDS、大規模だったりユーザーが多いわけではないなら、仮想環境やサーバー内でDBサーバーを立ち上げれば良い話ですね。
その考えのもと再構築を行った結果、AWSで利用するのはS3だけになりました。

# Netlify（フロントエンド）
静的サービスに特化したホスティングサービスです。
GitHubと連携させて、ビルド先のディレクトリを指定・ビルドコマンドを設定すると、masterブランチを更新する度に勝手にサイトをデプロイしてくれます。
色々便利なオプションはあるようですが、私は自動デプロイ・公開機能だけ使っています。
本当に超簡単です。しかも、タダで使えます。
タダでサイトが公開でき、タダで自動的に更新され、タダでhttps化してくれます。
カスタムドメインの設定も簡単で、Netlifyの導入には一時間もかかりません。

# Heroku（バックエンド）
フルマネージドのレンタルサーバーです。
元々はRuby on Railsのみが対象だったようですが、今はなんかいっぱい出来ます。JavaとかPHPはもちろん、なんかいっぱいありました。
私はサービスのAPIサーバーを立ち上げるためだけに最低限の機能しか使えていませんが、この人もとても優秀で、Netlifyと同じくコードを配置するだけでhttps化してドメイン取得して公開までもっていってくれます。
DBサーバーも設定しておけば自動的にlocalサーバー内に建ててくれます（無料プランではpostgresのみのはず......）。
Heroku CLIも情報が多く、とにかく簡単です。
こちらも公開には一時間もかかりませんでした。
同様、ほとんどの機能が時間無制限に無料です。

# 結果どうなったん
S3には無料で使える範疇のリクエストしか飛びませんし、
Netlifyが無料で使え、
Herokuが無料で使えている現在、かかっている費用は年間一円のドメイン代のみです。
**9460円（およそ一万円）**の月額費用が丸々消えてしまいました。

モダンなサービスやばすぎｗｗｗで記事を締めさせていただきます。
指摘事項等いただければ、記事は都度修正しようと思っています。
フロントエンドエンジニアといえど、インフラ・アーキテクチャについては今後も勉強していきたいと思っていますので、ご教授のほどよろしくお願いします。
お目汚し失礼いたしました！！！