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
770
Other Decks in Programming
See All in Programming
オープンソースソフトウェアへの解像度🔬
utam0k
17
3.1k
その面倒な作業、「Dart」にやらせませんか? Flutter開発者のための業務効率化
yordgenome03
1
140
One Enishi After Another
snoozer05
PRO
0
160
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
480
なんでRustの環境構築してないのにRust製のツールが動くの? / Why Do Rust-Based Tools Run Without a Rust Environment?
ssssota
14
46k
React Nativeならぬ"Vue Native"が実現するかも?_新世代マルチプラットフォーム開発フレームワークのLynxとLynxのVue.js対応を追ってみよう_Vue Lynx
yut0naga1_fa
2
940
CSC509 Lecture 07
javiergs
PRO
0
240
AI Agent 時代的開發者生存指南
eddie
4
2.1k
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
470
AI駆動で0→1をやって見えた光と伸びしろ
passion0102
1
840
釣り地図SNSにおける有料機能の実装
nokonoko1203
0
200
Leading Effective Engineering Teams in the AI Era
addyosmani
7
610
Featured
See All Featured
Optimising Largest Contentful Paint
csswizardry
37
3.5k
How to train your dragon (web standard)
notwaldorf
97
6.3k
Building Applications with DynamoDB
mza
96
6.7k
Optimizing for Happiness
mojombo
379
70k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
640
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
930
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.1k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Producing Creativity
orderedlist
PRO
347
40k
4 Signs Your Business is Dying
shpigford
185
22k
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⽇日星期⼀一