- Published on
Herokuの無料プランが終了するので代替サービスを考察する
- Authors
- Name
- Shou Arisaka / 有坂翔
Herokuの無料が終わることに伴い、代わりになる無料および有料のサービスについて考察、知見を共有したいと思います。 Github pages、VPS、AWS・PaaS、自宅サーバーについて触れます。
先刻Herokuから以下のようなメールが届いた:
Important Information About Heroku Free Products Thank you for being a Heroku user. Starting November 28, 2022, free Heroku Dynos, free Heroku Postgres, and free Heroku Data for Redis® will no longer be available ... Heroku’s Next Chapter | Heroku
Herokuユーザへ。22年11月末から無料ダイノ、postgresデータベース、Rediseなどが使えなくなります。
Herokuは長いこと使ってませんが、5年前くらいにRailsを書いてたときはHerokuに上げていました。 そうはいっても、いまでもアクセスのあるdynoがありますので、dynoの移行の必要性の問題はあります。
Github pages(無料)
最初の移行候補はGithub pagesです。GitHub Pagesは静的ファイルをGithub上のURLにホスティングできる、無料のサービスです。Githubアカウントがあれば使用できます。
RubyのJekyllライブラリによるSSG・静的ファイル生成のデプロイに対応しており、Rubyの環境構築やコマンドラインの操作に慣れていればすぐに利用を開始できるはずです。
Github pagesのメリットは:
- 無料
- ページが早い
- Githubアカウントがあればすぐに使える
一方、デメリットは:
- Rubyのインストールやコマンドライン操作を学ぶ必要がある
- Jekyllの構文やMarkdownを学ぶ必要がある
- 動的ファイルのホスティングはできない
- Herokuのように突然無料でなくなる可能性がある
Github pagesは、HTMLのみのホスティングだとか、PHPのような動的なページ生成が必要ないアプリであれば満点の候補です。 ただし、Herokuのような多種多様な形態のアプリケーションをホスティングするには向きません。
VPS(有料)
次点の候補はVPSです。VPSのメリットはやはり自由度の高さでしょう。
開発者であればパソコンの1台や2台は持っていると思います。そのパソコンでプログラミングの環境構築をしたりIDEを入れたりして開発を進めたりするわけですが、VPSは一言で言えばリモートにあるパソコンです。パソコンなので自分の好きなソフトウェアをインストールし、公序良俗と各利用規約に反しない限り基本なんでもできる自由度が魅力です。
例えばVPSにVSCodeエディタでリモートアクセスすることもできます。上記は僕の契約してるVPS上でVSCodeを立ち上げDjangoのPython開発を進めている様子です。
VPSは自由なので、CPUとメモリの許す限り下記のように様々な開発ソフトウェアのインストールや設定が可能です:
apacheにおける.htaccess設定ファイルやNginxにおけるnginx.conf設定ファイル、あるいはDockerやVNCのインストール、またはiptablesによるファイアウォール設定やAppArmorによるセキュリティ設定、pfsenseやWAFによるネットワーク構築や設定、snortなどIDS・IPS、侵入検知システムなどの導入、などなど…
まとめると、VPSのメリットは:
- 自由
- 自分のパソコンに環境構築するのと同じようにデプロイ先でも環境構築できる
- ネットで調べて問題解決がしやすい
- インストールの権限・パーミッションの問題がない
対してデメリットとしては:
- 月額費用がかかる
- 環境構築やインフラの知識が必要
先日、僕のブログで有料記事が書けるシステムを構築したという記事を書きました。 ここで使用しているペイメントシステムを使用したウェブアプリはまさに僕の契約しているConohaのVPS 上で動いています。
(なお、僕のブログ自体はレンタルサーバーのエックスサーバー 上で、WordPressとして動いています。)
最低限のインフラの知識が必要なのはネックでもありますが、学べる機会と捉えて挑戦してみるのもよいかもしれません。
AWS(有料)
Herokuはいわゆるプラットフォームとしてのサービス提供、「PaaS」です。マイクロソフトAzureとかGoogleのGCP、あるいはamazonのAWS・amazon web serviceなどと同じ部類になります。VPSとHerokuやAWSの違う点は、自由度という一点に尽きます。
サーバー設定やデータベース設定、環境構築、セキュリティやファイアウォールの設定など、いわゆるインフラストラクチャについて深く考えなくてよいメリットがあるのがPaaSといえます。
一方、そのメリットはむしろ、人と状況によっては逆効果である場合もあります。 上記のVPSのメリットで紹介したような自由なインストールや統合、環境構築ができないため、ストレスを感じることもあります。
あるいは、環境構築やインストールができないわけでなくても、環境構築をするためにプラグインやアドオンをインストールしたり、その設定のためにドキュメントを読んだりする必要が出てきます。
なので例えば、自分のパソコンにPythonをインストールした手順が、VPSにはそのまま適用可能ですが、PaaSであると別途で手順をGoogle検索したりスタックオーバーフローを参照したりする必要がでる、ということです。
これをフレームワークに則っていて簡単だ、と捉えるか、自由度がなくストレスだ、と捉えるかは分かれるところかもしれません。
AWSやPaaSのメリットは:
- VPSほどではないが自由度が高い
- 最低限のセキュリティやインフラが予め担保されている
- インストールや導入が通常複雑なソフトウェアも数クリックでインストールできる
デメリットとしては:
- 従量課金制
- それぞれのPaaSサービスについて学ぶ必要があり、ラーニングカーブがある
- ソフトウェアのインストールや設定に完全な自由度がない
なお、一応Azure、GCP、Herokuをそれなりに使いましたが、個人的にPaaSはあまり詳しくないため、抜けている点等あればご教示ください。
自宅サーバー(無料)
最後に紹介するのは自宅サーバーです。自宅サーバーでは基本的に、自分の家のパソコンをインターネットに公開し、誰でもアクセス、利用可能にすることを言います。
ウェブ開発者であれば、何らかのウェブサーバーを立てることはあると思います。適当に、例えば"localhost:8000"や"0.0.0.0:8000"でLANネットワーク上でアクセス可能にしているサーバーも、NATを通してWANから外部ネットワーク、つまり不特定多数のアクセス可能なインターネット上にポートフォワーディングし共有可能にすることができます。
このようなネットワークへのポートフォワーディングを行う方法として、僕の知る限りでは大きく3つ選択肢があります。
- ngrok
ngrokは上記のようなことが数ステップで可能なコマンドラインソフトウェアです。
なお、ngrokについては、インストール方法・使い方・セキュリティ対策についての記事を前に書いています。
- wifiルーター
もし自宅のインターネット回線が固定IPアドレスなら、wifiルーターのNAT設定などでそのグローバルIPアドレスに対してローカルのポートを割り当てることができます。
なお、僕のおすすめで使ってるwifiルータはTP link C1200です。
- frp
frpはngrokのオープンソース版のようなものです。ngrokより幅広い設定が可能で、ngrokに見られるセキュリティ不安や不透明性がありません。 ngrokは最近有料プランを出しましたが、frpはもちろん無料です。
ただし、設定が少し複雑で、wifiルータによるポートフォワーディングも並行して行う必要があります。
現状、僕が使ってるのもfrpになります。
なお、インターネットサービスプロバイダによっては自宅サーバーのような、外部にサービスを公開してトラフィック負荷を与えるような行為は利用規約で禁止されている場合があります。
僕は楽天ひかりを光回線に使っていますが、こちらも規約でそのような使用は控えるよう書かれていたと記憶しています。
そのため、僕の場合は自宅サーバーは構築してはいますが、あくまで自分のパソコンに外出先から直接ファイルや写真をアップロードするとか、パソコン上のテキストファイルを編集するとか、保存されている動画や音楽を閲覧するとか、といった個人利用に留めています。
まとめると、自宅サーバーのメリットは:
- 完全に自由
- ハイスペックなコンピュータも低コストで使える
そしてデメリットは:
- きちんとセットアップしないとハッキングされるリスクがある *1
- 堅牢な知識のある人向け
- インターネット回線費用がかかる
- そもそもISPで許可されていない場合が少なくない
*1 僕の場合、pfsenseというハードウェアファイアウォールをネットワーク上に置いています。そこでVLAN、DMZの設定もしています。