koheitakahashiのブログ

2020.07.01にプログラマーとして生を受けた私が学んだことや、日常について徒然に書いていきます。

Railsアプリのデプロイ手順をおさらい ~『Railsデプロイ』を読みました ~

はじめに

FJORD BOOT CAMPのデプロイプラクティスは終わったのですが、参考書籍として紹介されている『Railsデプロイ』を読んでいなかったので、この度読みました。

オライリージャパン
発売日 : 2009-03-16

本書を読んで、学んだことをまとめていきます。

章立て

本書は以下のような章立てでした。

1章 実運用環境に適したアプリケーション

2章 共有ホスト

3章 仮想ホストと専用ホスト

4章 Capistrano

5章 Mongrelの管理

6章 スケールアウト

7章 Windows環境でのデプロイ

8章 パフォーマンス

9章 最先端のソフトウェア

学んだこと

基本的なデプロイの手順

本書では、デプロイの手順は基本的に以下の流れで行われることが書かれていました。

  • ドメイン名とDNSのセットアップ
  • サーバーの設定
    • ドキュメントルートとSSHの設定
  • データベースの作成
  • アプリケーションのインストール(デプロイ)
    • Capistranoを使う
  • Webサーバーの設定

FJOR BOOT CAMPでは、デプロイ課題としてCapistrano、CircleCIを利用しました。本書に書かれているツールなどは古いものでしたが、今と昔では、上記の流れにそこまで大きな差はないのかなーと思いました。

デプロイがうまくいかない時にやること

デプロイ時のトラブルシューティングとして、以下のようなことが挙げられていました。

  • Railsとサーバーのエラーログを見る
  • ファイルのアクセス権をチェック
  • パスが正しいかどうかをチェック
  • セッションデータが存在するかをチェック
  • 必要なファイルが全て存在するかをチェック
  • 環境変数が正しくセットされているかチェック
  • データベースが存在、正しく動いているかをチェック
  • 正しいバーションのマイグレーションんが行われているかをチェック

この部分は、自分で調べている中では中々体系化された記事などはなかったため、とても参考になりました。 都度都度戻って、チェックリストにチェックをつけていく感じで、活用していきたいと思います。

性能向上のプロセス

デプロイが成功した後の、アプリケーションの性能向上のためのプロセスが書かれていました。

まず、その一歩目は、目標となるベースラインを設定することです。そのために、現段階でどのくらいのリクエストを処理できているのかを確認する必要があります。そうして、目標を設定します。

次に、ボトルネックを把握することが必要です。よくあるボトルネックとしては、低速なヘルパメソッド。複雑なルーティング。データベースからの大量のデータの取得などがあるそうです。

そして、ボトルネックの削除を行っていきます。このサイクルを回していくことで、性能の向上を目指していくのですが、修正箇所はできるだけ小さい方が望ましいく、小さい修正を繰り返し行うという方が、長期的に見たときのメリットが大きいようです。

感想

自分でデプロイをやってみて感じたことは、「本番環境で動作させるだけでもとても大変」ということでした。ローカル環境でうまくいっていたことが、ここまで違うものなのだと戸惑いました。

それから、自分でエラーログなどをみていってなんとかデプロイに成功はしたのですが、デプロイ後のことまでは考えていませんでした。

本書では、デプロイしたその後のアプリケーションの性能向上に関することまで書かれていて、勉強になりました。

n+1問題を意識したコードを書いていくなど、コードを書いている時にもデプロイのこと、デプロイ後のことを意識していく必要があるのだと考えました(とても難しそうですが・・・💦)