あー今年の始めくらいから個人開発で使っている Railway、ここ数ヶ月の進化のスピード速くて最高 of 最高になっている。素晴らしい。一瞬 fly.io 乗り換えがチラついたけどこのまま行こう > https://twitter.com/Meijin_garden/status/1520386026480746496
というツイートを見かけて、railway.app というサービスを知った。
いわゆる PaaS というかんじで、ぽちぽち設定していけば
- 計算資源の確保
- ログやヘルスチェックなどの面倒を見る
- メトリクス
- CD
- secrets の管理
- 開発環境との統合
- preview url の発行
などなどをいいかんじにやってくれるというもの。
実際 tutorial 的なものを触ってみたけど、便利。 典型的なユースケースは GitHub の repository を連携するだけで 0 configurations でデプロイまでやってくれる。 たとえば、「これは Next.js のプロジェクトです」ということをわざわざ明示する必要は基本的にない。 同様に、root directory に Dockerfile があったら、それをつかってデプロイするんだな、と解釈してよしなにしてくれる。
あとなんか railway.app が公式に提供しているスターターテンプレートみたいなものもあって、それもわりと種類が豊富でおもしろい。 https://railway.app/starters
cli ツールも提供していて、 railway run npm run foo
などとやると Railway 上の環境変数をもってきた状態で npm run foo
を実行する、みたいなこともできる。
環境の分離もうまくできていて、Project ごとに複数の環境をもてるようになっている。 Project には複数のサービスが含まれるので、それらのサービスごとまるっと複製した別環境をつくる、みたいなことが簡単にできる。
あんまり最近の Heroku をつかっていないので、ぶっちゃけ Heroku となにがちがうんだっけ…?というところはよくわかっていないのだけど、ちょっと試しにつかってみた感じ便利だったので、なんかしら hosting してみようかなという気になっている。
このブログはいまは Cloudflare Pages で静的ファイル配信だけやっているけど、railway.app ならもうちょっと動的なものも扱えるので、なんかネタがあったらやってみてもいいかもしれない。
余談
Cloudflare Pages をさわったときにも同じことを思ったけど、最近の PaaS などの進化はすごくて、ぱっとサービスなりページなりを公開するときの体験のよさに毎度驚いてしまう。
典型的なユースケースではほぼ設定不要で git push
したらデプロイしてくれるようになっている。さらにその「典型的なユースケース」の中に Dockerfile が含まれていると、もうだいたいなんでもあり、みたいな状態になって、自前でデプロイスクリプトとか書かない世界になっているんだなぁと改めておもった。
Cloud Run みたいな Docker ベースのやつでも相当楽な世界になった気がしていたけど、それでも Cloud Build + GCR + Cloud Run、をがちゃがちゃつなぐ、みたいなのは必要なわけで、Dockerfile だけ書けばいいよ、というのとは入り安さの観点だけみると一線あるよなーと思う。