Railwayの紹介
フィヨルドブートキャンプ Part 2 Advent Calendar 2022 の8日目の記事です。(Part1はこちら)
昨日は、ham-capさんの「Vimが好きだ」でした。
目次
はじめに
Minoru MaedaさんがHeroku の代替 OSS を試した話を書かれておりますが、私もHerokuの代替として使用できそうなRailwayというホスティングサービスについて簡単に紹介をします。
プラン
プランは以下の3つあり、私が使ったStarter Plan
とDeveloper Plan
について説明します。
- Starter Plan
- Developer Plan
- Team Plan Offering
Starter Plan
メモリは512MB、最大1GBのディスク容量、メモリは共有型になってます。
価格は無料ですが、上限が決まっており、毎月5ドル分のリソースを使いきるか、500時間(約20日)使用することができます。
逆にいうと、5ドル分のリソースを使用するか500時間稼働させるとデプロイしているサービスが停止されます。
上記のため、毎月約10日くらいはサービスが停止することになります。
Developer Plan
メモリは8GB、最大100GBのディスク容量、メモリは8Coreになってます。
価格はStarter Planと一緒で5$まで無料で、5$を超えたリソースを使用すると課金されます。
しかし、5$まで無料であるので、それを超えるリソースを使用しない限り無料であり、サービスが月の途中で停止される心配はありません。
また、5$を超えない限りでリソースを使用しながら、スペックはStarter Planより大幅にアップデートされます。
そのため、私が自作したWebサービスFjordBootCamp Contiburotrsでは、Developer Planを使用しています。
デプロイ
Githubのリポジトリと連携させることで、mainブランチにマージされたタイミングで自動でデプロイをしてくれるようになります。
また、ブランチも選択できるので、mainではないブラントをデプロイしたい時は、設定から変更できます。
CLI
Railwayは、コマンドも使うことができ、ローカルのディレクトリをRailwayにデプロイすることができます。
詳細に知りたい方はこちら。
使うであろう代表的なコマンド以下に紹介します。
インストール
NPMをインストールします。
npm i -g @railway/cli
ログイン
railwayにコマンドでログインします。 以下を実行するとブラウザが立ち上がります。
railway login
ブラウザを立ち上げない場合は、以下のように--browserless
をつけます。
railway login --browserless
コマンド実行
railway run
を使うことで、Railwayの環境でコマンドを実行することができます。
私の場合、railsでバッチ処理を実行しており、以下の様にgithub actionsにてrailway runを使用しています。
name: run batch run: railway run bundle exec rails runner lib/batch/contributor_commit_collector.rb env: RAILWAY_TOKEN: ${{ secrets.RAILWAY_TOKEN }}
デプロイ
デプロイしたいプロジェクトディレクトリに移動し、以下のコマンドを実行します。
cd [プロジェクトディレクトリ] railway up
これだけで、ローカル環境をRailwayにデプロイできます。とても簡単ですね!
スケジューラ
Railwayではスケジューラはサービスとしてありません。
そのため、私はGithub Actionsを使い、Railway環境でバッチ処理を実装しております。
私のworkflowファイルはこちらです。
Github Actionsは時間通り動かないことがありますが、私の自作サービスの場合は、そこまできっちり時間通りにランキングを更新することは要件として重要ではないのでGithub Actionsで十分スケジューラとして機能しています。
おわりに
以上、Railwayというホスティングサービスについての紹介記事でした。
Railwayについては日本語記事が少なくあまり見かけることが少なかったのでここで紹介させていただきました。 詳しくRailwayについて知りたい方はこちらのDocumentを参考にしてください。
個人的にはシンプルで使いやすいという印象です。
想定外の事が起こり、日がずれちゃいましたが、なんとか記事を書かせてもらいました💦
明日はchocoさんが記事を書いてくださいます。