Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
@jacoyutorius kamalでRailsアプリを Amazon Lightsailにデプロイするぞ! 2025/01/23 JAWS-UG浜松 x Media JAWS
Slide 2
Slide 2 text
小木悠斗 (@jacoyutorius) • JAWS-UG浜松&静岡 • Hamamatsu.rb • 空き家問題の解消をミッションとする株式会社クラッ ソーネというスタートアップでデベロッパーをやって います。 • 業務改善・チームマネージメント・SREなど様々。 • 最近アップライトベースを練習しています (まずは五 線譜読めるようになるところから…) ୭ʁ
Slide 3
Slide 3 text
要約 • kamalでRails8アプリをデプロイしてみたので、そのまとめです。
Slide 4
Slide 4 text
kamalとは? • Railsデベロッパーのパイセンこと、DHHが2023/10ごろ発表したデプロイ ツール。 • Railsだけでなく、Dockerで動くアプリケーションであればなんでもOK。
Slide 5
Slide 5 text
https://exploration.marinersmuseum.org/object/kamal/ kamalは、船乗りが北極星で緯度を測り針路を決めるために使用した 古代アラブの航海道具にちなんで名付けられました。
Slide 6
Slide 6 text
No content
Slide 7
Slide 7 text
Amazon Lightsailとは? • AWSの提供するVPS(Virtual Private Server) • セットアップが簡単 • 従量課金ではないため月額料金が明確 • ストレージやネットワーク設定などが1まとめに作成されるので小規模な アプリケーションの立ち上げに向いている
Slide 8
Slide 8 text
デプロイするアプリはDockerで動かすため、OSのインストールだけでOK。
Slide 9
Slide 9 text
メモリ512MBだとOut of Memoryが出たので 1GB以上が良さそうです。
Slide 10
Slide 10 text
Lightsail側の設定 sshで接続するユーザーをdockerグループに追加
Slide 11
Slide 11 text
kamalに期待・・・! • Railsアプリをお手軽にデプロイしたい! • でもECSとかにデプロイするのは面倒… • VPC作ってSecurityGroup, AZ, CodePipeline, etc, etc • ElasticBeanstalk?知りませんねそんな(ry
Slide 12
Slide 12 text
kamal init kamalの初期設定を行う(プロジェクトディレクトリに設定ファイルが生成 される)。 Rails8ではデフォルトでインストール済み
Slide 13
Slide 13 text
kamal setup 対象のサーバーにssh接続。 Dockerの有無を確認して、なければインストール
Slide 14
Slide 14 text
デプロイ用イメージのビルドとpush (いつか Github Actions等で自動化しよう)
Slide 15
Slide 15 text
kamal deploy デプロイする。
Slide 16
Slide 16 text
No content
Slide 17
Slide 17 text
No content
Slide 18
Slide 18 text
“kamal-proxy”というプロキシが動いていて、それが 新旧プロセスの切り替えをしたり、SSL証明書を発行したり、リクエストを ルーティングしたりしている。 https://github.com/basecamp/kamal-proxy 仕組み?
Slide 19
Slide 19 text
俺達が本当に欲しかったもの • CodePipelineでデプロイしなくてはいけないアプリが一体どれだけこの世 に必要か。 • アプリケーションは公開して使ってもらわなければ意味がない。 • その意味で、Railsアプリケーションを開発環境からシームレスに本番 デプロイできて、環境構築の手間も少なく、低コストでデプロイできる ようになったのはとてもアツい。
Slide 20
Slide 20 text
Rails側の進化もいいぞ • Raiils8からSQLiteが本番用DBとして利用できるようになった。 • 本番環境を作る時に、MySQLやPostgresを立てる必要がない! • Docker Volumeでproduction.sqliteが永続化されるので、デプロイしても DBが消えない。 • なので、I/0を気にしなければ本番でもsqliteをDBにしたRailsアプリが 運用できる👏
Slide 21
Slide 21 text
感想 • ドキュメントを読む限り、よくあるケースのRailsアプリの構成には対応 している様子 • 複数のAppサーバー • Redisによるキャッシュ機構 • ActiveJobによる非同期処理 •
Slide 22
Slide 22 text
おわり