railsの運用について
TRANSCRIPT
![Page 1: Railsの運用について](https://reader033.vdocuments.pub/reader033/viewer/2022060110/55615182d8b42adb6b8b52b2/html5/thumbnails/1.jpg)
http://www.sonicgarden.jp/
TIS株式会社
社内ベンチャーカンパニー
「SonicGarden」
並河 祐貴
Railsの運用について
![Page 2: Railsの運用について](https://reader033.vdocuments.pub/reader033/viewer/2022060110/55615182d8b42adb6b8b52b2/html5/thumbnails/2.jpg)
1 http://www.sonicgarden.jp/
Railsアプリのシステム構成
� よくあるWeb3階層
�リバースプロキシ/ロードバランサ
�HTTPリクエストの受付、バックエンドの適切なWeb/APサーバへHTTPリクエストを委譲、静的コンテンツはリバースプロキシ自身が
レスポンスを返すこともある
�Web/APサーバ
�フロントから渡されたHTTPリクエストを処理
�動的コンテンツの部分(リクエスト)は、CGIなど何かしらのアダプタ
を介して、アプリケーション処理を実行
�DBサーバ
![Page 3: Railsの運用について](https://reader033.vdocuments.pub/reader033/viewer/2022060110/55615182d8b42adb6b8b52b2/html5/thumbnails/3.jpg)
2 http://www.sonicgarden.jp/
Web/APサーバでの振舞い
� 1. HTTPリクエストを受付
� 2. アダプタを介して、Rubyプログラムがアプリケーション処理を実行(1プロセス)
� 3. HTTPレスポンスを返す
HTTPアダプタ(CGI等)
Ruby
� 1リクエストが1Rubyプロセスに割り当てられる
� 規模が大きくなったら、複数のRubyプロセスで待ち受ける運用
![Page 4: Railsの運用について](https://reader033.vdocuments.pub/reader033/viewer/2022060110/55615182d8b42adb6b8b52b2/html5/thumbnails/4.jpg)
3 http://www.sonicgarden.jp/
スタンダードなWeb/APサーバ
� (Apache or lighttpd or nginx) + FastCGI
�CGIプロセスを常駐させることができる、FastCGI
�導入がそれほど容易ではなく、エラー出力が弱い
� mongrel, Apache + mongrel_cluster
�Ruby + C(拡張ライブラリ)で実装されたサーバで、導入が容易
� 2007~2008年頃のデファクトスタンダード
� メモリリーク、メモリの効率利用に課題
� Apache + Passenger
� PassengerはApacheモジュールとして振舞うため、導入が容易
�最近のデファクトスタンダード
![Page 5: Railsの運用について](https://reader033.vdocuments.pub/reader033/viewer/2022060110/55615182d8b42adb6b8b52b2/html5/thumbnails/5.jpg)
4 http://www.sonicgarden.jp/
Passenger(APサーバ)のアーキテクチャ
� Spawn ServerはRails F/W
とアプリのコードをキャッシュ
� 初回のプロセス起動は遅いが、2
回目以降はメモリキャッシュを利用し、高速に起動できる
� メモリの効率利用
![Page 6: Railsの運用について](https://reader033.vdocuments.pub/reader033/viewer/2022060110/55615182d8b42adb6b8b52b2/html5/thumbnails/6.jpg)
5 http://www.sonicgarden.jp/
よくある負荷分散構成(スケールアウト)
Web/AP
サーバ
Web/AP
サーバ
Storage
ロードバランサ
Web/AP
サーバ
DBサーバDBサーバ Replication
Backup
User
・・・
・・・
� Web/APサーバは並列に
� セッション情報は、Railsのcookie store
� DB(MySQL)は、Master-Slave構成に
� Read、Writeで接続先を
切り替え
![Page 7: Railsの運用について](https://reader033.vdocuments.pub/reader033/viewer/2022060110/55615182d8b42adb6b8b52b2/html5/thumbnails/7.jpg)
6 http://www.sonicgarden.jp/
その他
� デプロイ
�ツールを利用した効率的なソースコードの配置
�プロセスの再起動が必要
�監視
�HTTPレスポンス監視
�プロセス監視