railsアプリをawsを使ってリリースした話
はじめに
お久しぶりです。
最近railsで作ったアプリケーションをawsを使ってリリースしたので、それについて書いていきます。
github: https://github.com/dionomusuko URL: https://www.asakara.work/
なぜリリースしたのか?
いつかは自分の制作したアプリケーションをデプロイしたいな〜と考えていたのですが、なかなか手を出せておらず企業の方や友人にアプリのFBをもらった時に、「リリースしたら?」とよく言われていたので強い気持ちをもって始めました。
機能
アプリケーション
朝などの時間を使って同じ目的を持った人と集まり進捗を共有・確認するアプリ
- ユーザ機能
- ユーザー登録・ログイン機能(devise)
- ルーム機能
- ルームの CRUD
- チャット機能
- チャット機能(websocket)
機能としてはまだまだですが…
aws関係
本番環境は、dockerを使って作成しました。
流れとしては
- dockerの設定(Rails, nginx)
- VPC、ゲートウェイ、サブネット、セキュリティグループの設定
- EC2 の設定
- RDS(Mysql)の設定
- ALBの設定
- ドメインの取得
- route53の設定
- http => https化
こんな感じです。
1週間で実装しました(ドヤ顔)。
辛かったところ
docker
dockerのイメージにDBを加えると動作が重くなるし、本番環境ではRDSを使うので必要なくね😎と思ったので、DBがついてないパターンのdockerfileを探したのですがあまり見つけられなかった(涙)。自作したのですが、動作確認時に毎回bundle installを5分くらいして辛かったです。
参考サイトのdocker versionが2だった(今回はversion3を使用)ので、volumes_fromがなくなったためエラーの連発した点
=>バージョン3のdocker-compose.ymlでvolumes_fromを使うを参考にエラーを回避しました。
nginx
nginx.confの書き方がよくわからず、http通信をhttpsにリダイレクトさせたところ
aws
参考サイトの説明が若干古かったり、dockerを使ってないパターンだったりと自分の必要な情報を選択するのが難しかったです。(目的に応じてのロードマップとか作りたい)
railsの本番環境
今まではherokuとかで本番環境にしていたのであまり問題はないだろうと思ってたのですが、masterkeyやcredentials.yml.encの設定を知らなかったので沼でした。
参考サイト
今後の展望
- アプリケーションの機能改善(チャット機能等)
- CI/CDの設定(ECSとcircleCIの追加予定)
- UIの変更
最後に
railsをawsにデプロイする系の記事はかなり読んでいたので割と自信があったのですが、案外わかってない点が多かったです。(アウトプット大事)
今回リリースを1週間でやるという目標を持ち共有した上で開発をしたので、自分でも信じられないくらいにスピード感を持って実装できました。
エラーでかなり苦しいことが多かったですが、別のアプローチをしてみたり、全く別のこと(サウナ・筋トレ)をしてみたりと考え直す機会を設けるとかなり解決できたのでおすすめです。(サウナ最高)