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
510
企业级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
100
Node的核心与红利
jacksontian
5
760
Other Decks in Programming
See All in Programming
20250708_JAWS_opscdk
takuyay0ne
2
130
商品比較サービス「マイベスト」における パーソナライズレコメンドの第一歩
ucchiii43
0
180
Deep Dive into ~/.claude/projects
hiragram
14
14k
AI駆動のマルチエージェントによる業務フロー自動化の設計と実践
h_okkah
0
230
GPUを計算資源として使おう!
primenumber
1
250
Rails Frontend Evolution: It Was a Setup All Along
skryukov
0
280
CDK引数設計道場100本ノック
badmintoncryer
2
480
可変変数との向き合い方 $$変数名が踊り出す$$ / php conference Variable variables
gunji
0
180
状態遷移図を書こう / Sequence Chart vs State Diagram
orgachem
PRO
2
210
NEWT Backend Evolution
xpromx
1
140
チームのテスト力を総合的に鍛えて品質、スピード、レジリエンスを共立させる/Testing approach that improves quality, speed, and resilience
goyoki
5
1.2k
Claude Code + Container Use と Cursor で作る ローカル並列開発環境のススメ / ccc local dev
kaelaela
12
7.1k
Featured
See All Featured
Automating Front-end Workflow
addyosmani
1370
200k
A Modern Web Designer's Workflow
chriscoyier
695
190k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.6k
Rails Girls Zürich Keynote
gr2m
95
14k
A better future with KSS
kneath
238
17k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
Documentation Writing (for coders)
carmenintech
72
4.9k
Statistics for Hackers
jakevdp
799
220k
Site-Speed That Sticks
csswizardry
10
700
A designer walks into a library…
pauljervisheath
207
24k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Visualization
eitanlees
146
16k
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⽇日星期⼀一