第1页
企业级Rails架构
from startup to enterprise
第2页
About Me
·陈金洲 ThoughtWorks咨询师 ·金数据创始人 jinshuju.net ·从2001年开始编写商用软件 ·Java, .NET背景。2007年开始使用Rails ·@mechiland
第3页
企业级?
• 多个⼈人,多种技术,多种产品或服务 • ... is an ongoing business function that
helps an 'enterprise' figure out how to best execute the strategies that drive its development [wikipedia]
第4页
从个人开始……
第5页
……到团队
• 有规模的企业刚开始的时候也很⼩小 • ⼩小团队使⽤用Rails因为其犀利的⽣生产⼒力 • 技术栈随着团队和产品⼀一起成⻓长
第6页
“15分钟创建Blog” “24小时创建一个网站”
第7页
企业
服务
新功能
众多⽤用户 开发慢
客户
响应慢
技术
陈旧
第8页
Rails vs 企业级?
·高生产力与笨拙之争?
第9页
如何在架构层⾯面利⽤用
Rails的⾼高⽣生产⼒力,保 持技术上的竞争⼒力?
第10页
准备
第11页
团队
2-6开发⼈人员
产品经理/设计师 前端开发很重要
第12页
流程
·自动化测试,从第一天开始 ·将任务拆解到半天以内 ·晨会, Code Review ·Showcase ·其他能够增进沟通的手段
第13页
工具
for Mac
第14页
核心工具栈
·RVM/rbenv ·Omniauth ·TestUnit(minitest), RSpec, Jasmini,
Capybara
·Bootstrap, purecss ·Slim/haml ·MySQL/PostgreSQL/Mongodb
第15页
Rails架构? Rails项⺫⽬目有架构吗?
第16页
Rails
Model View Controller DB
去年
第17页
incoming http
nginx uunnicicoorrnn
DB
第18页
incoming http
nginx uunnicicoorrnn
DB
ssiiddeekkii qq
第19页
incoming http
ffaayyee nginx uunnicicoorrnn
DB
ssiiddeekkii qq
第20页
去年
resque
cronjob
第21页
Thanks Linux.
Linux/Rails社区已经打好了基础,⽆无状态、分层 良好的rails应⽤用在部署架构上⼏几乎没有挑战。
第22页
真正的挑战
·更为复杂的业务 ·不断增多的功能 ·更为先进的(开源)技术
第23页
服务
新功能
众多⽤用户 开发慢
客户
响应慢
技术
陈旧
第24页
去年
代码行阈值
第26页
一年不到5000行?
第27页
核⼼心应⽤用
jinshuju.net
去年
第28页
核⼼心应⽤用
jinshuju.net
核⼼心部分
jinshuju.net
数据统计
去年
第29页
核⼼心应⽤用
jinshuju.net
核⼼心部分
jinshuju.net
数据统计
去年
核⼼心部分
jinshuju.net API
数据统计
第30页
不必等待变得臃肿
差不多就做应用规划
第31页
常见规划策略
·按业务功能拆分 ·用户信息,照片,日志 ·应用1:管理界面,元数据维护,支持 ·应用2:系统状态,系统监控,部署 ·应用3:大数据分析,预测,模型
第32页
功能重用
• Copy & Paste • iframe, javascript重⽤用 • Gem重⽤用
第33页
Gem重用
• 通⽤用功能:发短信,⽀支付 • 业务独⽴立的算法
第34页
数据/服务重用
·Cookie ·共享数据库 ·jsonp ·CAS:单点登录 ·JSON API
第35页
挑战:有了新订单
·通知分析引擎进行分析 ·财务系统需要更新 ·需要通知发货系统
第36页
挑战:有了新订单
·通知分析引擎进行分析 ·财务系统需要更新 ·需要通知发货系统
谁来更新这些系统?
第37页
分布式消息系统
发布/订阅和点对点异步中间件 Amazon SQS
第38页
Amazon SQS
第39页
总结
·小团队,注重交流 ·限制系统的规模(代码行数) ·在恰当的时候对系统进行规划和拆分 ·通过Gem进行功能重用 ·通过API进行数据重用 ·通过消息服务进行系统间主动通信
第40页
谢谢大家!
@mechiland http://jinshuju.net