AirJD 焦点
AirJD

没有录音文件
00:00/00:00
加收藏

企业级Rails架构

发布者 airjd   简介 Ruby技术大会相关演讲
发布于 1427246567509  浏览 6100 关键词 Ruby 
分享到

第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



支持文件格式:*.pdf
上传最后阶段需要进行在线转换,可能需要1~2分钟,请耐心等待。