【ITニュース解説】Heroku alternatives: how to choose and migrate safely
2026年09月23日に「Dev.to」が公開したITニュース「Heroku alternatives: how to choose and migrate safely」について初心者にもわかりやすく解説しています。
ITニュース概要
Herokuは終了せず方針転換。代替サービス検討時は、Webプロセス、ワーカー、DBなど現在のアプリ構成洗い出しが重要だ。Lizard、Railway、Render、Cloud Run、VPSなどが候補。費用や機能、運用モデルを比較し、テスト移行で検証が必要。Heroku継続も選択肢だ。
ITニュース解説
システムエンジニアを目指す皆さんにとって、クラウド上でアプリケーションを動かすサービスは非常に身近な存在である。その中でも「Heroku(ヘロク)」は長年人気を博してきたが、その運営方針が変わり、代替サービスへの移行を検討する動きが活発になっている。この解説では、Herokuの現状と、他のサービスへ安全に移行するための具体的な考え方や手順について学ぶ。
まず、Herokuの現状について理解を深める必要がある。2026年2月6日、Herokuは新しい機能の追加よりも「安定性、セキュリティ、信頼性、そしてサポート」に注力すると発表した。これは、Herokuがサービスを停止するという意味ではない。クレジットカードで料金を支払っている既存の顧客や新規の顧客は、引き続きHerokuを利用できると明確に示されている。つまり、すぐにアプリを別の場所に移動しなければならないという緊急性はない。
では、なぜ移行を検討するのだろうか。その理由は具体的であるべきだ。例えば、現在のHerokuの「コスト」が高すぎると感じる場合、あるいはHerokuでは提供されていない「必要な機能」がある場合、あるいは特定の「デプロイに関する制約」がある場合などが挙げられる。単に「サービスが終了する」という誤った情報に基づいて急ぐのではなく、自身のアプリにとって何が最適かを見極めることが重要だ。
移行を検討する際には、まず現在Herokuで動かしているアプリの状況を徹底的に把握することが最も重要である。これを怠ると、後でトラブルに見舞われる可能性がある。洗い出すべき項目は多岐にわたる。 一つ目は「Webプロセス」だ。これはHTTP通信を処理する部分で、新しいサービスがポートの設定、プロキシヘッダーの扱い、ヘルスチェック、タイムアウトなどを適切に扱えるか確認する必要がある。 二つ目は「Workerプロセス」だ。これはWebプロセスとは別にバックグラウンド処理を行う部分で、キューへのアクセス、リトライ処理、安全なシャットダウンが可能かを確認する。 三つ目は「リリースコマンド」だ。これはデプロイ時に実行される特別なステップで、いつ実行されるか、失敗した場合どうなるかを把握しておく。 四つ目は「Config Vars」だ。これはデータベースの接続情報やAPIキーなどの設定情報や秘密の値を管理する仕組みで、新しいサービスでの変数名、適用範囲、認証情報の更新方法を確認する。 五つ目は「Heroku Postgres」だ。Herokuが提供するPostgreSQLデータベースで、互換性のある代替データベースを見つけ、拡張機能、バージョン、ユーザーの役割、そしてデータ復元にかかる時間を確認する。 六つ目は「Redis」やその他の「アドオン」だ。Herokuには様々な追加サービスがあり、それらの互換性のある代替サービスを見つけ、データ形式、接続設定、所有権について把握する。 最後に「Review apps」や「パイプライン」といったデプロイやテストのワークフローも、新しいサービスでどのように実現するかを考える必要がある。
これらのインベントリを作成せず、単にWebインスタンスの価格だけでサービスを選ぶと失敗する可能性が高い。Workerやデータベース、各種アドオンの有無や料金体系が、現実的な選択肢を大きく左右するからだ。
具体的な代替サービスにはいくつかの選択肢がある。 「Lizard(リザード)」は、WebサービスとWorker向けに、月額やサービスごとのプラン料金がないことが特徴だ。購入したクレジットは期限切れにならないため、小規模なアプリや月ごとにワークロードが変動するアプリに適している。データベース(Managed Postgres、Managed Redis)はリソース使用量に応じた課金となり、LizardのCLIツールで操作する。 「Railway(レイルウェイ)」は、複数のアプリ部品をまとめて管理するプロジェクト・サービスワークフローが特徴だ。消費量に応じた従量課金モデルで、有料プランには利用クレジットが含まれる。Herokuのdynoのように固定料金ではない点に注意が必要だ。 「Render(レンダー)」は、WebおよびWorkerインスタンスに固定のプラン料金があるため、チームで予算を管理しやすい場合に検討する。データベースやワークスペースの料金も合わせて考慮する必要がある。 「Cloud Run(クラウドラン)」は、Google Cloudが提供するサービスで、それぞれのプロセスが「Service」「Job」「worker pool」のどれに該当するかを理解する必要がある。HerokuのProcfileをそのままコピーしても動かないため、Cloud Runのアーキテクチャに合わせて設計し直す必要がある。 「VPS(仮想プライベートサーバー)」にCoolifyなどのデプロイツールを組み合わせる方法もある。これは、サーバー環境を完全に自分でコントロールしたい場合に適している。しかし、パッチの適用、ストレージの耐久性、災害からの復旧といったサーバー運用に関する責任はすべて自分にあることを理解しておく必要がある。
代替サービスを比較する際には、最終的な「月額費用」を正確に算出することが欠かせない。Herokuの料金表に記載されているのは、Webプロセスを動かす最小単位(dyno)の価格であり、Webアプリ、Worker、データベースを合わせた全体の費用ではない。代替サービスでも同様に、すべてのプロセス、データベース、ストレージ、ネットワーク利用料、そして必要なプラン機能を合計して見積もるべきだ。従量課金の場合は実際の利用量を測定し、固定インスタンスの場合は稼働時間と台数を考慮に入れる。比較するワークロードは同じ条件で、新しいサービスで動かすとCPUやメモリの使用量が劇的に減ると安易に仮定しないことが重要だ。さらに、移行期間中に新旧システムを並行して運用する場合の費用も考慮に入れる必要がある。
安全に移行するためには、慎重な手順を踏むことが不可欠だ。 まず、現在の設定情報をエクスポートするが、秘密の情報(パスワードなど)は公開されないように注意する。また、プログラムの実行環境や依存関係のバージョンを固定する。 次に、新しいサービス上でWebプロセスとWorkerをそれぞれ個別のテストサービスとしてデプロイし、起動コマンドやシャットダウン時の挙動が正しく機能するかを確認する。 そして、データベースのバックアップをテスト環境のデータベースに復元し、PostgreSQLの拡張機能、データ件数、アプリケーションからの読み書きが正常に行えるかを検証する。 その後、ログイン、メール送信、ファイルのアップロード、支払い機能(テストモードで)、バックグラウンドジョブなど、アプリの主要な機能をテストする。コールバックURLやWebhookのURLも忘れずに確認する。 最も重要なステップの一つが、本番環境の切り替え時に発生するデータ書き込みの扱い方を決めることだ。一般的には、アプリを一時的に停止する「メンテナンスウィンドウ」を設けて移行する方が、両方のシステムで書き込みを同時に処理するよりもシンプルで安全である。 最終的なバックアップを取得するか、データベースのレプリケーションを完了させた後、アプリケーションの接続先を新しいデータベースに切り替える。そして、ユーザーからのトラフィックを新しいシステムへ誘導する。この間、エラー発生状況、ジョブの実行状況、データベースのアクティビティを注意深く監視する。 万が一の場合に備えて、「ロールバック計画」も必ず用意しておく。これは、もし新しいシステムに問題があった場合に元のHerokuに戻すための計画だ。新しいシステムへの切り替え後に発生したデータ書き込みも考慮に入れ、元のデータベースに戻したときにデータが失われないようにすることが重要である。
最後に、Herokuに「留まる」という選択も十分に合理的であると理解しておくべきだ。もし現在利用しているHerokuアプリが要件を満たしており、チームがその運用モデルを熟知していて、移行に費やす時間がもっと別の重要なタスクに使われるべきだと判断できるなら、無理に移行する必要はない。長年運用されてきた成熟したアプリは、明文化されていないアドオンの利用方法やリリース手順、社内の慣習など、機能比較表には現れない多くの要素に依存している場合があるからだ。 新しいホストに何を期待するのか、その変化を具体的に書き出し、試用期間中にそれが実現できることを確認できないのであれば、移行は費用に見合う価値がないと言えるだろう。
Herokuがシャットダウンするという情報については、繰り返しになるが、公式発表はそのような内容ではない。クレジットカードユーザー向けのサービスは継続される。したがって、契約内容と公式声明に基づいて判断し、シャットダウン期限と捉えないことが重要だ。HerokuのProcfileは、プロセスコマンドのリストとして有用だが、新しいホストでは自動検出される部分と、個別のサービスやジョブとして設定し直す部分があることを覚えておく。Heroku Postgresから他のPostgreSQLサービスへの移行は一般的に可能だが、バージョン、拡張機能、ロール、復元プロセスを必ずテストする必要がある。また、移行によるコスト削減は、包括的な見積もりと代表的な試用期間を通じてのみ確認できるものであり、データベース、ワーカー、ストレージ、トラフィック、そして移行期間中の両サービスの重複費用をすべて含めて計算する必要がある。