Heroku の無料枠が廃止されるので、代替案をもう少しまとめてみた
こんにちは。地図パズル製作所の都島です。先週は Heroku が無料枠を廃止することが話題になりました。私も記事を書きましたが、とてもたくさんの人に見ていただけたようで、とても嬉しかったです。ありがとうございました!
先日の記事は私とアシスタントの霧島さんが知っている構成をざっとまとめただけになってしまったので、今回は Heroku で Web サイトをホスティングしている場合の代替案について、もう少しまとめてみたいと思います。もちろん、API サーバーを運用している場合も参考にしていただけると思います。
といかにも詳しそうに書いていますが、、私もあまり詳しくないので、間違っていたらコメントで教えてください!よろしくお願いします!!
まず Heroku から移行する場合には、自分のシステムが静的サイトなのか、動的サイトなのかを確認する必要があります。静的サイトとは、Express などをサーバーにしていつも決まった HTML を配信しているようなサイトで、動的サイトとは、サーバー側でユーザーのアクセスに応じてコンテンツを切り替えているサイトのことです。Ruby、Python、PHP などを動かしている場合は、たいてい動的サイトです。
静的サイトの場合
まず、静的サイトの場合について考えていきます。この場合、Github Pages、Firebase Hosting、Amplify Hosting、Cloudflare Pages、Netlify など、静的サイトを無料でホスティングできるサービスがいろいろありますので、そちらに移行するのがいいと思います。そうすると、Node.js や Express を自分で動かす必要もなくなり、今までより運用が楽になります。
動的サイト
次に動的サイトの場合です。まずは、メジャーなサービスを紹介していきます。私が利用したことがあるのはGCP の Cloud Run で、とても楽にデプロイできます。
言語も Node.js、Go、Java、Kotlin、Scale、Python、.Netに対応していて、Docker もサポートしています。でも、かなり安いとはいえ、いくらかお金がかかってしまうという難点があります。DB が必要な場合は、PlanetScale を使えば、無料で使えそうです。
ただ、PlanetScale は外部キーが使えなかったり、Heroku と違って MySQL 互換だったりするので、一部修正が必要になります。
また、Next.js、SvelteKit、Nuxt.js などで作られたサイトでしたら、Vercel がおすすめです。
ただ、Vercel は無料で利用できるのは Hobby プラン(個人的かつ非商用利用)のみのようです。仕事で利用される方は有料プランを利用する必要がありそうです。
こちらも DB が必要な場合は PlanetScale を使うのが良さそうです。
ですが、Cloud Run や Vercel だと、DB は別サービスを使うことになってしまいますので、やはり、Heroku のように一つのサービスで完結するものだといいなと思われる方も多いと思います。そうできるものとして、fly.io、Railway.app、render.com というものがあります。
どれも、今回調べていてはじめて知ったシステムですがいろいろな言語に対応しているようですし、Docker や Postgres にも対応しています。それに無料枠があるようです。特にrender.com は、Heroku からどうやって移行できるかもまとめられていました。
また、他にも glitch.com、Adaptable.io というのもあるようです。こちらは Node.js のみが利用できるサービスのようなので、Node.jsアプリを移行するのでしたら良さそうです。
今回はデータベース部分として、RDB が使えるもののみを紹介しましたが、NoSQL でもいいのでしたら、Firebase など他にもいろいろ使えるサービスがあります。時間があれば、それもまとめたいと思います。
最後に
今日は Heroku の移行先を少し詳しく調べてみました。間違っているところがありましたら、すみません!それと、Azure 系でも安く使えるサービスがあると霧島さんが教えてくれたので、それについては今度霧島さんにまとめてもらいたいと思います。
最後に地図パズル製作所の宣伝ですが、地図パズル製作所では無料で遊べる楽しい地図パズルをたくさん作っています。ぜひ一度見てみてください! こちらは Firebase で作っています。
参考
こちらの記事は以下のサイト、記事を参考にして書きました。
Discussion
参考になります。
ありがとうございます!励みになります!