dionomusuko tech blog

大学生エンジニアの日常

railsアプリをawsを使ってリリースした話

はじめに

お久しぶりです。

最近railsで作ったアプリケーションをawsを使ってリリースしたので、それについて書いていきます。

github: https://github.com/dionomusuko URL: https://www.asakara.work/

なぜリリースしたのか?

いつかは自分の制作したアプリケーションをデプロイしたいな〜と考えていたのですが、なかなか手を出せておらず企業の方や友人にアプリのFBをもらった時に、「リリースしたら?」とよく言われていたので強い気持ちをもって始めました。

機能

アプリケーション

朝などの時間を使って同じ目的を持った人と集まり進捗を共有・確認するアプリ

  • ユーザ機能
    • ユーザー登録・ログイン機能(devise)
  • ルーム機能
  • チャット機能
    • チャット機能(websocket)

機能としてはまだまだですが…

aws関係

本番環境は、dockerを使って作成しました。

流れとしては

こんな感じです。

f:id:ringokun4:20200222172436p:plain
モック

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の変更

最後に

railsawsにデプロイする系の記事はかなり読んでいたので割と自信があったのですが、案外わかってない点が多かったです。(アウトプット大事)

今回リリースを1週間でやるという目標を持ち共有した上で開発をしたので、自分でも信じられないくらいにスピード感を持って実装できました。

エラーでかなり苦しいことが多かったですが、別のアプローチをしてみたり、全く別のこと(サウナ・筋トレ)をしてみたりと考え直す機会を設けるとかなり解決できたのでおすすめです。(サウナ最高)