Railsで作成されたアプリケーションを、AWS上のAppRunner/RDS/ECRを使った環境にデプロイできるようにしてみた時のメモです。
ついでに、Terraformを使ってインフラ周りもコードで管理できるようにしてみた感じです。
作ったもの
ほとんど素のRailsアプリをAppRunnerにデプロイできるようにしてみたものです。
現状ではGitHubActionsを使ったECRへのPushなどはできてませんが、そのうち対応したい……。
基本的に頑張ったところはTerraform周りで、以下のようにRDS上にDBが作成されたタイミングでDBへのマイグレーションを走らせたり
ECRの環境が作られたタイミングでコンテナをビルドしてpushしたり
その辺の最初にインフラ周りを構築する際の設定を頑張った感じですね。
経緯や背景など
- 住んでる街(浜田市)向けのサービスとかを作る際にできるだけ使い慣れたRailsを使って開発したかった。
- インフラとかを細かくメンテナンスしたくなかったので、AWS使って楽したい
- AppRunnerが最近、VPCに一部対応した
- AppRunnerでのコンテナ運用が依然試して楽だったので使いたい
などのモチベーションがあってこの構成にした感じですね。
実際にやってみて勉強になった感じ(主にTerraform周り)
今後
今回作ったものは実際に運用していく感じではないですが、これをもとにほかの言語(例えばコンテナとの相性がいいGoとか、シングルバイナリが作れるRustとか)でサービスを開発して運用していくのは良さそう。
あと前からチマチマ作ってる自分が使うようのWebフレームワークとかと合わせてみるのも面白そう
この辺はRubyでのシングルバイナリ生成とか詳細調べて対応したいかな……?