Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

陈金洲 @mechiland Picture taken by Michael Chen

Slide 3

Slide 3 text

部署 监控 架构演进

Slide 4

Slide 4 text

gem install rails

Slide 5

Slide 5 text

RVM

Slide 6

Slide 6 text

rails g scaffold

Slide 7

Slide 7 text

GET PUT POST DELETE show update create destroy SELECT UPDATE INSERT DELETE Programming Model

Slide 8

Slide 8 text

rails server

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

1. 部署

Slide 14

Slide 14 text

jinshuju.net

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

Browser Web Server App Server Database

Slide 17

Slide 17 text

Browser Web Server App Server Database ? ? ? ?

Slide 18

Slide 18 text

注册域名

Slide 19

Slide 19 text

‣ www.domain.com ‣ *.domain.com ‣ MX 记录 ‣ TXT 记录 域名

Slide 20

Slide 20 text

主机

Slide 21

Slide 21 text

备案

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

cannot find this picture source

Slide 25

Slide 25 text

Web, App, DB

Slide 26

Slide 26 text

硬件准备完毕…… jinshuju.net

Slide 27

Slide 27 text

Git master dev feature 1 feature 2

Slide 28

Slide 28 text

部署 cap deploy

Slide 29

Slide 29 text

除了CRUD resque + god cronjob + whenever

Slide 30

Slide 30 text

持续部署 DEV UAT PROD

Slide 31

Slide 31 text

2. 监控

Slide 32

Slide 32 text

[h]top

Slide 33

Slide 33 text

vmstat w uptime ps free iostat sar mpstat pmap netstat ss iptraf tcpdump strace /proc

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

监控什么?

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

硬盘 www/db服务状态 Google Analytics CPU ⻚页⾯面响应时间 微博@ 内存 4xx/5xx⻚页⾯面 ⽤用户⾏行为数据 带宽 邮件队列 可⽤用性影响逐渐减少 实际花费时间逐渐增加

Slide 39

Slide 39 text

3. 架构演进 http://www.flickr.com/photos/declicjardin/309583331

Slide 40

Slide 40 text

No content

Slide 41

Slide 41 text

No content

Slide 42

Slide 42 text

初始 Model View Controller DB

Slide 43

Slide 43 text

进行中 Model View Controller DB Model View Controller DB Model View Controller DB

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

JavaEE/.NET

Slide 46

Slide 46 text

Rails/Linux的方式 resque cronjob

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

代码行阈值 3000

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

核⼼心应⽤用 domain.com

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

核⼼心应⽤用 domain.com 核⼼心部分 domain.com ⽀支付 payments.domain.com 核⼼心部分 domain.com ⽀支付 payments.domain.com ⽤用户管理 my.domain.com

Slide 53

Slide 53 text

‣ 将架构演进视作正常行为 ‣ 警惕代码行数 ‣ 随时准备剥离,进行进程分离 ‣ 为引入新技术做好准备

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

B2B Go B2b, B2C

Slide 56

Slide 56 text

rubygems.org

Slide 57

Slide 57 text

not just What It’s about How and Why

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

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