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
550
8
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
企业级Node.js开发
于QCon2013北京分享。关于在企业中进行Node实践中的一点经验。
Jackson Tian
June 30, 2013
More Decks by Jackson Tian
See All by Jackson Tian
Node简介
jacksontian
5
300
git-social-coding-system
jacksontian
6
130
Node的核心与红利
jacksontian
5
790
Other Decks in Programming
See All in Programming
Detecting Compromised CI with eBPF and Cilium Tetragon
lizrice
0
170
【SRE NEXT 2026 Lunch Session】一人目専任SREの立ち上げを加速する ― AIと進めたオンボーディングで2分を0.04秒にした話
pkshadeck
PRO
0
3.6k
琵琶湖の水は止められてもNet--HTTPのリトライは止められない / You might be able to stop the water flow of Lake Biwa but you can't stop Net::HTTP retries
luccafort
PRO
0
620
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
3
480
VibeCodingからAgenticWorkflowへ
starfish719
0
340
php-fpmのプロセスが枯渇した日-調査・対処・そして本当にやるべきだったこと-
shibuchaaaan
0
250
変わらないものが、変わるものを決める — 意図駆動開発 × イベントソーシング × イミュータブル | What Doesn't Change Decides What Can — IDD × Event Sourcing × Immutability
tomohisa
0
1.4k
仕様駆動開発へのトライを機に チームに適合する手法を模索し続けている話
freee
PRO
0
460
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
12
18k
継続モナドとリアクティブプログラミング
yukikurage
3
700
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
1
670
ルールを書いて終わらせないハーネスエンジニアリング
yug1224
4
1.9k
Featured
See All Featured
sira's awesome portfolio website redesign presentation
elsirapls
0
320
My Coaching Mixtape
mlcsv
0
210
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.1k
The browser strikes back
jonoalderson
0
1.5k
Design in an AI World
tapps
1
280
Practical Orchestrator
shlominoach
191
12k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
240
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
400
HDC tutorial
michielstock
2
790
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Speed Design
sergeychernyshev
33
2k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
310
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⽇日星期⼀一