Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
企业级Node.js开发
Search
Jackson Tian
June 30, 2013
Programming
8
520
企业级Node.js开发
于QCon2013北京分享。关于在企业中进行Node实践中的一点经验。
Jackson Tian
June 30, 2013
Tweet
Share
More Decks by Jackson Tian
See All by Jackson Tian
Node简介
jacksontian
5
270
git-social-coding-system
jacksontian
6
110
Node的核心与红利
jacksontian
5
770
Other Decks in Programming
See All in Programming
LLM Çağında Backend Olmak: 10 Milyon Prompt'u Milisaniyede Sorgulamak
selcukusta
0
140
Navigating Dependency Injection with Metro
l2hyunwoo
1
200
從冷知識到漏洞,你不懂的 Web,駭客懂 - Huli @ WebConf Taiwan 2025
aszx87410
2
3.3k
Giselleで作るAI QAアシスタント 〜 Pull Requestレビューに継続的QAを
codenote
0
330
perlをWebAssembly上で動かすと何が嬉しいの??? / Where does Perl-on-Wasm actually make sense?
mackee
0
280
Navigation 3: 적응형 UI를 위한 앱 탐색
fornewid
1
510
Cap'n Webについて
yusukebe
0
160
AtCoder Conference 2025「LLM時代のAHC」
imjk
2
630
まだ間に合う!Claude Code元年をふりかえる
nogu66
5
920
AI時代を生き抜く 新卒エンジニアの生きる道
coconala_engineer
1
500
Kotlin Multiplatform Meetup - Compose Multiplatform 외부 의존성 아키텍처 설계부터 운영까지
wisemuji
0
150
Patterns of Patterns
denyspoltorak
0
410
Featured
See All Featured
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
420
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
1
880
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
35
Build The Right Thing And Hit Your Dates
maggiecrowley
38
3k
[RailsConf 2023] Rails as a piece of cake
palkan
58
6.2k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
140
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
120
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
58
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.2k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
A Tale of Four Properties
chriscoyier
162
23k
Transcript
企业级Node.js开发 阿⾥里巴巴数据产品中的Node.js实践 by @⽥田永强 1 13年4月22⽇日星期⼀一
⾃自我介绍 • ⽥田永强/@朴灵 • 阿⾥里巴巴/数据平台/数据产品部/⼯工程师 • CNode社区成员 2 13年4月22⽇日星期⼀一
演讲议程 • 数据产品 • 协作开发 • 质量保证 • 异构共存 3
13年4月22⽇日星期⼀一
数据产品 4 13年4月22⽇日星期⼀一
数据产品 4 13年4月22⽇日星期⼀一
数据产品 4 13年4月22⽇日星期⼀一
数据产品 4 13年4月22⽇日星期⼀一
数据产品 4 13年4月22⽇日星期⼀一
数据产品 4 13年4月22⽇日星期⼀一
数据产品 4 13年4月22⽇日星期⼀一
5 13年4月22⽇日星期⼀一
5 13年4月22⽇日星期⼀一
5 13年4月22⽇日星期⼀一
5 13年4月22⽇日星期⼀一
5 13年4月22⽇日星期⼀一
业务特点 6 13年4月22⽇日星期⼀一
业务特点 • 数据源(类型)多 6 13年4月22⽇日星期⼀一
业务特点 • 数据源(类型)多 • 数据量⼤大 6 13年4月22⽇日星期⼀一
业务特点 • 数据源(类型)多 • 数据量⼤大 • 分布式 6 13年4月22⽇日星期⼀一
Why Node? 7 13年4月22⽇日星期⼀一
Why Node? IO开销 花费CPU时钟周期 CPU Cache L1 3 CPU Cache
L2 14 RAM 250 Disk 41000000 Net 240000000 7 13年4月22⽇日星期⼀一
Why Node? 7 13年4月22⽇日星期⼀一
Why Node? 0 75000000.00 150000000.00 225000000.00 300000000.00 区域 1 数据访问耗时图
l1 l2 ram disk net 7 13年4月22⽇日星期⼀一
Coding style • 团队JavaScript⽔水平参差不⻬齐 8 13年4月22⽇日星期⼀一
Coding style 8 13年4月22⽇日星期⼀一
Coding style JSHint 8 13年4月22⽇日星期⼀一
Coding style JSHint Code review 8 13年4月22⽇日星期⼀一
Coding style JSHint Code review merge 8 13年4月22⽇日星期⼀一
代码复⽤用 9 13年4月22⽇日星期⼀一
代码复⽤用 Copy & Parse 9 13年4月22⽇日星期⼀一
代码复⽤用 Copy & Parse 9 13年4月22⽇日星期⼀一
代码复⽤用 Copy & Parse 9 13年4月22⽇日星期⼀一
代码复⽤用 9 13年4月22⽇日星期⼀一
代码复⽤用 9 13年4月22⽇日星期⼀一
代码复⽤用 项⺫⽬目1 9 13年4月22⽇日星期⼀一
代码复⽤用 项⺫⽬目1 项⺫⽬目2 9 13年4月22⽇日星期⼀一
代码复⽤用 项⺫⽬目1 项⺫⽬目2 项⺫⽬目3 9 13年4月22⽇日星期⼀一
包管理 10 13年4月22⽇日星期⼀一
包管理 { "name": "wechat", "version": "0.4.1", "description": "微信公共平台⾃自动回复接⼝口服务", "main": "index.js",
"scripts": { "test": "make test" }, "dependencies": { "xml2js": "0.2.6", "ejs": ">=0.8.3", "bufferhelper": ">=0.2.0" }, "devDependencies": { "supertest": "*", "mocha": "*", "should": "*", "connect": "*", "jscover": "*" }, "author": "Jackson Tian", "license": "MIT" } 10 13年4月22⽇日星期⼀一
包管理 10 13年4月22⽇日星期⼀一
包管理 10 13年4月22⽇日星期⼀一
社区模块问题 • 私有模块⽆无法应⽤用 • 模块质量良莠不⻬齐 • 版本控制存在⻛风险 • 模块安装速度⽆无法保障 11
13年4月22⽇日星期⼀一
企业NPM 12 13年4月22⽇日星期⼀一
企业NPM 12 13年4月22⽇日星期⼀一
企业NPM 12 13年4月22⽇日星期⼀一
企业NPM 12 13年4月22⽇日星期⼀一
享受开源 13 13年4月22⽇日星期⼀一
享受开源 13 13年4月22⽇日星期⼀一
享受开源 单向同步 13 13年4月22⽇日星期⼀一
享受开源 本地NPM 单向同步 13 13年4月22⽇日星期⼀一
享受开源 本地NPM 项⺫⽬目 单向同步 13 13年4月22⽇日星期⼀一
享受开源 本地NPM 项⺫⽬目 单向同步 私有模块 13 13年4月22⽇日星期⼀一
享受开源 本地NPM 项⺫⽬目 单向同步 私有模块 13 13年4月22⽇日星期⼀一
享受开源 本地NPM 项⺫⽬目 单向同步 私有模块 13 13年4月22⽇日星期⼀一
享受开源 本地NPM 项⺫⽬目 单向同步 私有模块 公有模块 13 13年4月22⽇日星期⼀一
享受开源 本地NPM 项⺫⽬目 单向同步 私有模块 公有模块 13 13年4月22⽇日星期⼀一
14 13年4月22⽇日星期⼀一
14 13年4月22⽇日星期⼀一
14 13年4月22⽇日星期⼀一
私有NPM 14 13年4月22⽇日星期⼀一
项⺫⽬目1 私有NPM 14 13年4月22⽇日星期⼀一
项⺫⽬目1 项⺫⽬目2 私有NPM 14 13年4月22⽇日星期⼀一
项⺫⽬目1 项⺫⽬目2 项⺫⽬目3 私有NPM 14 13年4月22⽇日星期⼀一
项⺫⽬目1 项⺫⽬目2 项⺫⽬目3 私有NPM 14 13年4月22⽇日星期⼀一
质量保证 15 13年4月22⽇日星期⼀一
质量保证 • 严格的单元测试 15 13年4月22⽇日星期⼀一
质量保证 • 严格的单元测试 15 13年4月22⽇日星期⼀一
质量保证 • 严格的单元测试 15 13年4月22⽇日星期⼀一
质量保证 • 严格的单元测试 • 只挑选有单元测试的三⽅方模块 15 13年4月22⽇日星期⼀一
质量保证 • 严格的单元测试 • 只挑选有单元测试的三⽅方模块 • 持续集成平台(Toast/Travis/jenkins) 15 13年4月22⽇日星期⼀一
发布流程 16 13年4月22⽇日星期⼀一
发布流程 merge 16 13年4月22⽇日星期⼀一
发布流程 test merge 16 13年4月22⽇日星期⼀一
发布流程 test merge deploy 16 13年4月22⽇日星期⼀一
异常处理 17 13年4月22⽇日星期⼀一
异常处理 test merge deploy JSHint Code review 17 13年4月22⽇日星期⼀一
异常处理 test merge deploy JSHint Code review exception 17 13年4月22⽇日星期⼀一
异常处理 test merge deploy JSHint Code review exception test case
17 13年4月22⽇日星期⼀一
异常处理 test merge deploy JSHint Code review exception test case
17 13年4月22⽇日星期⼀一
异构共存 18 13年4月22⽇日星期⼀一
异构共存 Tair 18 13年4月22⽇日星期⼀一
异构共存 Tair HSF 18 13年4月22⽇日星期⼀一
异构共存 Tair HSF OTS 18 13年4月22⽇日星期⼀一
异构共存 Tair HSF OTS TFS 18 13年4月22⽇日星期⼀一
异构共存 Tair HSF OTS TFS CDN 18 13年4月22⽇日星期⼀一
异构共存 Tair HSF OTS TFS CDN etc. 18 13年4月22⽇日星期⼀一
异构共存 Tair HSF Node OTS TFS CDN etc. 18 13年4月22⽇日星期⼀一
异构共存 Tair HSF Node HTTP RESTful OTS TFS CDN etc.
18 13年4月22⽇日星期⼀一
异构共存 Tair HSF Node HTTP RESTful RPC OTS TFS CDN
etc. 18 13年4月22⽇日星期⼀一
异构共存 Tair HSF Node HTTP RESTful RPC MySQL协议 OTS TFS
CDN etc. 18 13年4月22⽇日星期⼀一
异构共存 Tair HSF Node HTTP RESTful RPC MySQL协议 etc. OTS
TFS CDN etc. 18 13年4月22⽇日星期⼀一
异构共存 Tair HSF Node HTTP RESTful RPC MySQL协议 etc. OTS
TFS CDN etc. 18 13年4月22⽇日星期⼀一
总结 19 13年4月22⽇日星期⼀一
总结 • 严格⾃自律,让犯错变得困难 19 13年4月22⽇日星期⼀一
总结 • 严格⾃自律,让犯错变得困难 • 单元测试与异常⽇日志,并驾⻬齐驱保障应⽤用 质量 19 13年4月22⽇日星期⼀一
总结 • 严格⾃自律,让犯错变得困难 • 单元测试与异常⽇日志,并驾⻬齐驱保障应⽤用 质量 • 编码规范和代码审查,提升团队平均⽔水平 19 13年4月22⽇日星期⼀一
总结 • 严格⾃自律,让犯错变得困难 • 单元测试与异常⽇日志,并驾⻬齐驱保障应⽤用 质量 • 编码规范和代码审查,提升团队平均⽔水平 • 私有NPM去粗取精,拥抱开源社区,回馈
开源社区 19 13年4月22⽇日星期⼀一
总结 • 严格⾃自律,让犯错变得困难 • 单元测试与异常⽇日志,并驾⻬齐驱保障应⽤用 质量 • 编码规范和代码审查,提升团队平均⽔水平 • 私有NPM去粗取精,拥抱开源社区,回馈
开源社区 • 拥抱社区⽣生态,打造企业内开发⽣生态环境 19 13年4月22⽇日星期⼀一
Q& A 20 13年4月22⽇日星期⼀一
资料链接 • https://npmjs.org/ • http://wiki.commonjs.org/wiki/CommonJS • http://visionmedia.github.io/mocha/ • https://github.com/visionmedia/should.js •
https://travis-ci.org/ • https://david-dm.org/ • https://github.com/isaacs/npmjs.org • http://couchdb.apache.org/ • http://www.erlang.org/ • http://blog.nodejs.org/2013/03/11/node-v0-10-0-stable/ 21 13年4月22⽇日星期⼀一