Real world rails

1,691 views

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,691
On SlideShare
0
From Embeds
0
Number of Embeds
25
Actions
Shares
0
Downloads
11
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Real world rails

    1. 1. Real World RailsWithout tools he is nothing, with tools he is all. -Thomas Carlyle2012/3/30 yoyogi.rb
    2. 2. 自己紹介フリーエンジニアRails歴4年くらいtwitter:@nysalorblog: http://blog.larus.jp/
    3. 3. Real World?周辺ツールやノウハウなど開発編運用編
    4. 4. 開発編Development
    5. 5. Mac
    6. 6. Mac
    7. 7. Mac
    8. 8. MacRubyが最初から入っている
    9. 9. MacRubyが最初から入っている
    10. 10. MacRubyが最初から入っている
    11. 11. MacRubyが最初から入っているような気がしていたが別にそんなことはなかったぜ!
    12. 12. Mac
    13. 13. Mac
    14. 14. Mac 最初から入っているRubyは1.8.7(Lion)> /usr/bin/ruby -vruby 1.8.7 (2010-01-10 patchlevel 249) [universal-darwin11.0] 結局は入れ直し(homebrew,rvmなど) Railsも入ってるけど2.3.3とかそのへん
    15. 15. Mac
    16. 16. Mac
    17. 17. Macそれでもなお便利Xcodeで開発環境は一発UNIXコマンドが大抵使えるTimeMachine
    18. 18. rvm/rbenv
    19. 19. rvm/rbenvRVM http://beginrescueend.com/
    20. 20. rvm/rbenvRVM http://beginrescueend.com/rbenv https://github.com/sstephenson/rbenv
    21. 21. rvm/rbenvRVM http://beginrescueend.com/rbenv https://github.com/sstephenson/rbenv 複数バージョンのRubyを同居 「前のバージョン用のgemを使ってしまった」を防ぐ 開発・運用環境で同じRubyを使うメリット
    22. 22. rvm/rbenvRVM http://beginrescueend.com/rbenv https://github.com/sstephenson/rbenv
    23. 23. rvm/rbenvRVM http://beginrescueend.com/rbenv https://github.com/sstephenson/rbenv
    24. 24. rvm/rbenvRVM http://beginrescueend.com/rbenv https://github.com/sstephenson/rbenv RVMが主流→最近はrbenvが流行 RVMは多機能だけど何度かやらかした rbenvは実行ファイルにやや癖がある
    25. 25. screen/tmux
    26. 26. screen/tmux
    27. 27. screen/tmux
    28. 28. screen/tmux
    29. 29. screen/tmuxターミナルマルチプレクサirb,logなど複数のシェルを行き来するのに便利落ちても再起動するまでセッションが消えない設定がけっこう大変Terminal/iTermのタブでいいんじゃない?
    30. 30. git
    31. 31. git 分散リポジトリ 学習コストが高い? svnに慣れすぎていなければ平気 githubやherokuでどっちみち必要
    32. 32. sourcetree
    33. 33. sourcetreehttp://www.sourcetreeapp.com/
    34. 34. sourcetreehttp://www.sourcetreeapp.com/
    35. 35. sourcetreehttp://www.sourcetreeapp.com/ 見やすい 多機能(っぽいけどあまり使ってない) 登録必要だけど無料
    36. 36. gitx
    37. 37. gitx http://gitx.frim.nl/
    38. 38. gitx http://gitx.frim.nl/
    39. 39. gitx http://gitx.frim.nl/ 軽い 機能少ない diff見るだけなら十分
    40. 40. github
    41. 41. github http://github.com/
    42. 42. github http://github.com/
    43. 43. github http://github.com/ githubでいいんじゃね? プライベートリポジトリは有料 ネットがないと使えない
    44. 44. やっぱりCUI
    45. 45. やっぱりCUIGUIはdiff見たり検索するだけどっちみちCUIの操作は必要苦手な人は覚えましょう
    46. 46. エディタ
    47. 47. エディタ
    48. 48. エディタ
    49. 49. エディタ
    50. 50. エディタEmacsVimTextMate
    51. 51. Emacs
    52. 52. EmacsCocoa Emacs(自分でビルド)inline-patchfull screen
    53. 53. Emacs
    54. 54. Emacsruby-moderuby-electricrinarietagsauto-complete
    55. 55. Emacs
    56. 56. Emacs
    57. 57. Emacs
    58. 58. Emacs
    59. 59. Emacs設定をDropboxに置く起動したらずっとそのままexport EDITOR=emacsclient
    60. 60. Pow
    61. 61. Pow http://pow.cx/
    62. 62. Pow http://pow.cx/
    63. 63. Pow http://pow.cx/
    64. 64. Pow http://pow.cx/
    65. 65. Pow http://pow.cx/いちいちrails serverしなくてもいいhttp://xxxx.devでアクセスできる複数プロジェクトの同時開発に対応
    66. 66. Pow http://pow.cx/
    67. 67. Pow http://pow.cx/
    68. 68. Pow http://pow.cx/gem install powderpowder -rでサーバ再起動powder applog,powder linkなど
    69. 69. guard
    70. 70. guardhttps://github.com/guard/guard
    71. 71. guardhttps://github.com/guard/guardTDDファイルが更新されると自動実行いちいちrspecを実行するとサボりがちcoffee scriptの開発などにも使えるautospecというのもある
    72. 72. spork
    73. 73. sporkhttps://github.com/sporkrb/spork
    74. 74. sporkhttps://github.com/sporkrb/spork分散テスト同時に複数のテストが実行されるデータベースを初期化する仕組みが不可欠
    75. 75. capistrano
    76. 76. capistrano https://github.com/capistrano/capistrano
    77. 77. capistrano https://github.com/capistrano/capistranoデプロイツールサーバへのアップロードから再起動まで全て自動化環境ごとにデプロイ先やタスクを切り替えられる
    78. 78. capistrano https://github.com/capistrano/capistrano
    79. 79. capistrano https://github.com/capistrano/capistrano
    80. 80. capistrano https://github.com/capistrano/capistrano リポジトリからコードをダウンロード
    81. 81. capistrano https://github.com/capistrano/capistrano リポジトリからコードをダウンロード リビジョンごとのディレクトリに展開
    82. 82. capistrano https://github.com/capistrano/capistrano リポジトリからコードをダウンロード リビジョンごとのディレクトリに展開 ログ・静的ファイル等をリンク
    83. 83. capistrano https://github.com/capistrano/capistrano リポジトリからコードをダウンロード リビジョンごとのディレクトリに展開 ログ・静的ファイル等をリンク 必要なgem、rails自体のインストール
    84. 84. capistrano https://github.com/capistrano/capistrano リポジトリからコードをダウンロード リビジョンごとのディレクトリに展開 ログ・静的ファイル等をリンク 必要なgem、rails自体のインストール サービスを再起動
    85. 85. capistrano https://github.com/capistrano/capistrano
    86. 86. capistrano https://github.com/capistrano/capistranoサーバ側にcapistranoは不要rails含めgemは一切不要ただしrubyとbundlerだけは必要
    87. 87. 運用編Operation
    88. 88. rvm/rbenv
    89. 89. rvm/rbenvRVM http://beginrescueend.com/
    90. 90. rvm/rbenvRVM http://beginrescueend.com/rbenv https://github.com/sstephenson/rbenv
    91. 91. rvm/rbenvRVM http://beginrescueend.com/rbenv https://github.com/sstephenson/rbenv なるべくサーバ側にも入れておくべき gemの管理はbundlerがやってくれるので不要
    92. 92. サーバ構成
    93. 93. サーバ構成 WWWサーバ(フロントエンド)
    94. 94. サーバ構成 WWWサーバ(フロントエンド) バックエンドサーバ
    95. 95. サーバ構成 WWWサーバ(フロントエンド) バックエンドサーバ DBサーバ
    96. 96. サーバ構成 WWWサーバ(フロントエンド) バックエンドサーバ Rails本体 DBサーバ
    97. 97. サーバ構成 ロードバランサ WWWサーバ(フロントエンド) バックエンドサーバ Rails本体 DBサーバ
    98. 98. サーバ構成 ロードバランサ キャッシュサーバ WWWサーバ(フロントエンド) バックエンドサーバ Rails本体 DBサーバ
    99. 99. バックエンド
    100. 100. バックエンドUnicornthinRainbows!mongrelWebrickPassenger
    101. 101. バックエンド
    102. 102. バックエンド
    103. 103. バックエンド適当なポートで待ち受けるフロントエンドからリバースプロキシで接続
    104. 104. バックエンド
    105. 105. バックエンド
    106. 106. バックエンド フロントエンドを挟む理由
    107. 107. バックエンド フロントエンドを挟む理由静的コンテンツ(画像など)をいちいちRailsで処理するのは馬鹿げている
    108. 108. バックエンド
    109. 109. バックエンド
    110. 110. バックエンドWWWサーバ(フロントエンド)
    111. 111. バックエンドWWWサーバ(フロントエンド)
    112. 112. バックエンドWWWサーバ(フロントエンド) バックエンドサーバ
    113. 113. バックエンドWWWサーバ(フロントエンド) バックエンドサーバ
    114. 114. バックエンドWWWサーバ(フロントエンド) バックエンドサーバ
    115. 115. バックエンドWWWサーバ(フロントエンド) バックエンドサーバ
    116. 116. バックエンド 静的コンテンツはWWWサーバ(フロントエンド) フロントエンドが直接処理 バックエンドサーバ
    117. 117. Unicorn
    118. 118. Unicornhttp://unicorn.bogomips.org/
    119. 119. Unicornhttp://unicorn.bogomips.org/
    120. 120. Unicornhttp://unicorn.bogomips.org/定番高速ダウンタイムなしで再起動可能worker1つにつき1リクエスト
    121. 121. その他
    122. 122. その他 Thin
    123. 123. その他 Thin http://code.macournoyer.com/thin/
    124. 124. その他 Thin http://code.macournoyer.com/thin/ Rainbows!
    125. 125. その他 Thin http://code.macournoyer.com/thin/ Rainbows! http://rainbows.rubyforge.org/
    126. 126. その他 Thin http://code.macournoyer.com/thin/ Rainbows! http://rainbows.rubyforge.org/ よく知りません
    127. 127. あまり使わない
    128. 128. あまり使わないmongrelWebrick
    129. 129. あまり使わないmongrelWebrick 開発時のサーバとしては使う
    130. 130. Passenger
    131. 131. Passenger http://www.modrails.com/
    132. 132. Passenger http://www.modrails.com/“mod_rails”バックエンドプロセスが不要基本的にApacheのみ立ち上がりが遅いメモリひかえめ
    133. 133. フロントエンド
    134. 134. フロントエンド 基本的に何でもOK
    135. 135. フロントエンド 基本的に何でもOKApachenginxlighthttpd
    136. 136. nginx
    137. 137. nginx http://wiki.nginx.org/
    138. 138. nginx http://wiki.nginx.org/
    139. 139. nginx http://wiki.nginx.org/高速設定が楽Apacheのような細かいアクセス制御は不可能バックエンドに投げるだけなら最適
    140. 140. Apache
    141. 141. Apache
    142. 142. ApacheRailsだけ動かすには大きすぎる他のコンテンツと共存するなら必須の場合もApacheを使うならPassengerを検討する
    143. 143. データベース
    144. 144. データベースMySQLPgSQLSqlite3
    145. 145. データベース ActiveRecordが差を吸収するMySQLPgSQLSqlite3
    146. 146. データベース ActiveRecordが差を吸収するMySQLPgSQLSqlite3 NoSQL
    147. 147. memcached
    148. 148. memcached参照系がほとんどであれば効果は出る他の方法で解決できるならするべきページキャッシュだけならVarnishの方が楽
    149. 149. Varnish
    150. 150. Varnishhttps://www.varnish-cache.org/
    151. 151. Varnishhttps://www.varnish-cache.org/
    152. 152. Varnishhttps://www.varnish-cache.org/透過型httpキャッシュサーバzero configでも動くパラメータやcookieごとキャッシュする
    153. 153. Varnishhttps://www.varnish-cache.org/
    154. 154. Varnishhttps://www.varnish-cache.org/
    155. 155. Varnishhttps://www.varnish-cache.org/SSLを処理できないPOSTをGETに書き換えてしまうことがあるDSLがやや難解
    156. 156. 構成例
    157. 157. 構成例 nginx+unicorn+varnish
    158. 158. 構成例 nginx+unicorn+varnish SSLあり nginx varnish unicorn
    159. 159. 構成例 nginx+unicorn+varnish SSLあり nginx varnish unicorn SSLなし varnish nginx unicorn
    160. 160. 構成例
    161. 161. 構成例 apache+passenger
    162. 162. 構成例 apache+passenger apache passenger
    163. 163. 構成例 apache+passenger apache passenger apache+unicorn
    164. 164. 構成例 apache+passenger apache passenger apache+unicorn apache unicorn
    165. 165. 構成例
    166. 166. 構成例 apache+nginx+unicorn
    167. 167. 構成例 apache+nginx+unicorn apache nginx unicorn
    168. 168. 構成例 apache+nginx+unicorn apache nginx unicorn apache+varnish+unicorn
    169. 169. 構成例 apache+nginx+unicorn apache nginx unicorn apache+varnish+unicorn apache varnish unicorn
    170. 170. 質疑応答
    171. 171. 質疑応答if available?  Question.all.map(&:answer!)end
    172. 172. ご清聴ありがとうございました

    ×