Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Beyond Rails Server

D0db70f9573a8a99a7b5378de0cf117b?s=47 Michael Chen
November 17, 2012

Beyond Rails Server

For RubyConf China 2012

D0db70f9573a8a99a7b5378de0cf117b?s=128

Michael Chen

November 17, 2012
Tweet

Transcript

  1. Beyond `rails server` Rails全栈技术指南

  2. 陈金洲 @mechiland Picture taken by Michael Chen

  3. 部署 监控 架构演进

  4. gem install rails

  5. RVM

  6. rails g scaffold

  7. GET PUT POST DELETE show update create destroy SELECT UPDATE

    INSERT DELETE Programming Model
  8. rails server

  9. None
  10. “15分钟创建Blog” “24小时创建一个网站”

  11. “15分钟创建Blog” “24小时创建一个网站”

  12. “15分钟创建Blog” “24小时创建一个网站”

  13. 1. 部署

  14. jinshuju.net

  15. None
  16. Browser Web Server App Server Database

  17. Browser Web Server App Server Database ? ? ? ?

  18. 注册域名

  19. ‣ www.domain.com ‣ *.domain.com ‣ MX 记录 ‣ TXT 记录

    域名
  20. 主机

  21. 备案

  22. None
  23. None
  24. cannot find this picture source

  25. Web, App, DB

  26. 硬件准备完毕…… jinshuju.net

  27. Git master dev feature 1 feature 2

  28. 部署 cap deploy

  29. 除了CRUD resque + god cronjob + whenever

  30. 持续部署 DEV UAT PROD

  31. 2. 监控

  32. [h]top

  33. vmstat w uptime ps free iostat sar mpstat pmap netstat

    ss iptraf tcpdump strace /proc
  34. None
  35. None
  36. 监控什么?

  37. 硬盘 www/db服务状态 Google Analytics CPU ⻚页⾯面响应时间 微博@ 内存 4xx/5xx⻚页⾯面 ⽤用户⾏行为数据

    带宽 邮件队列 ……
  38. 硬盘 www/db服务状态 Google Analytics CPU ⻚页⾯面响应时间 微博@ 内存 4xx/5xx⻚页⾯面 ⽤用户⾏行为数据

    带宽 邮件队列 可⽤用性影响逐渐减少 实际花费时间逐渐增加
  39. 3. 架构演进 http://www.flickr.com/photos/declicjardin/309583331

  40. None
  41. None
  42. 初始 Model View Controller DB

  43. 进行中 Model View Controller DB Model View Controller DB Model

    View Controller DB
  44. 真实情况 Model View Controller DB Model View Controller DB Model

    View Controller DB Model View Controller DB Model View Controller DB
  45. JavaEE/.NET

  46. Rails/Linux的方式 resque cronjob

  47. ‣ 前台进程、后台进程、cronjob ‣ 前台进程保证响应时间在可接受范 围之内(<200ms) ‣ 将耗时操作放入后台(delay_job, resque, sidekiq) ‣

    善用cronjob(whenever)
  48. 代码行阈值 3000

  49. 随时准备应用剥离 Picture taken by Michael Chen

  50. 核⼼心应⽤用 domain.com

  51. 核⼼心应⽤用 domain.com 核⼼心部分 domain.com ⽀支付 payments.domain.com

  52. 核⼼心应⽤用 domain.com 核⼼心部分 domain.com ⽀支付 payments.domain.com 核⼼心部分 domain.com ⽀支付 payments.domain.com

    ⽤用户管理 my.domain.com
  53. ‣ 将架构演进视作正常行为 ‣ 警惕代码行数 ‣ 随时准备剥离,进行进程分离 ‣ 为引入新技术做好准备

  54. X. 免费赠送 http://www.flickr.com/photos/rtv/2269548635

  55. B2B Go B2b, B2C

  56. rubygems.org

  57. not just What It’s about How and Why

  58. 部署 实现持续部署 监控 监控应用行为 架构演进 警惕规模变大 Beyond `rails server`

  59. 谢谢! @mechiland 陈金洲 http://michael.nona.name