Your SlideShare is downloading. ×
0
企业级Node.js开发
阿⾥里巴巴数据产品中的Node.js实践
by @⽥田永强
113年4月22⽇日星期⼀一
⾃自我介绍
• ⽥田永强/@朴灵
• 阿⾥里巴巴/数据平台/数据产品部/⼯工程师
• CNode社区成员
213年4月22⽇日星期⼀一
演讲议程
• 数据产品
• 协作开发
• 质量保证
• 异构共存
313年4月22⽇日星期⼀一
数据产品
413年4月22⽇日星期⼀一
数据产品
413年4月22⽇日星期⼀一
数据产品
413年4月22⽇日星期⼀一
数据产品
413年4月22⽇日星期⼀一
数据产品
413年4月22⽇日星期⼀一
数据产品
413年4月22⽇日星期⼀一
数据产品
413年4月22⽇日星期⼀一
513年4月22⽇日星期⼀一
513年4月22⽇日星期⼀一
513年4月22⽇日星期⼀一
513年4月22⽇日星期⼀一
513年4月22⽇日星期⼀一
业务特点
613年4月22⽇日星期⼀一
业务特点
• 数据源(类型)多
613年4月22⽇日星期⼀一
业务特点
• 数据源(类型)多
• 数据量⼤大
613年4月22⽇日星期⼀一
业务特点
• 数据源(类型)多
• 数据量⼤大
• 分布式
613年4月22⽇日星期⼀一
Why Node?
713年4月22⽇日星期⼀一
Why Node?
IO开销 花费CPU时钟周期
CPU Cache L1 3
CPU Cache L2 14
RAM 250
Disk 41000000
Net 240000000
713年4月22⽇日星期⼀一
Why Node?
713年4月22⽇日星期⼀一
Why Node?
0
75000000.00
150000000.00
225000000.00
300000000.00
区域 1
数据访问耗时图
l1 l2 ram
disk net
713年4月22⽇日星期⼀一
Coding style
• 团队JavaScript⽔水平参差不⻬齐
813年4月22⽇日星期⼀一
Coding style
813年4月22⽇日星期⼀一
Coding style
JSHint
813年4月22⽇日星期⼀一
Coding style
JSHint
Code
review
813年4月22⽇日星期⼀一
Coding style
JSHint
Code
review
merge
813年4月22⽇日星期⼀一
代码复⽤用
913年4月22⽇日星期⼀一
代码复⽤用
Copy &
Parse
913年4月22⽇日星期⼀一
代码复⽤用
Copy &
Parse
913年4月22⽇日星期⼀一
代码复⽤用
Copy &
Parse
913年4月22⽇日星期⼀一
代码复⽤用
913年4月22⽇日星期⼀一
代码复⽤用
913年4月22⽇日星期⼀一
代码复⽤用
项⺫⽬目1
913年4月22⽇日星期⼀一
代码复⽤用
项⺫⽬目1 项⺫⽬目2
913年4月22⽇日星期⼀一
代码复⽤用
项⺫⽬目1 项⺫⽬目2 项⺫⽬目3
913年4月22⽇日星期⼀一
包管理
1013年4月22⽇日星期⼀一
包管理
{
"name": "wechat",
"version": "0.4.1",
"description": "微信公共平台⾃自动回复接⼝口服务",
"main": "index.js",
"scripts": {
"test": "m...
包管理
1013年4月22⽇日星期⼀一
包管理
1013年4月22⽇日星期⼀一
社区模块问题
• 私有模块⽆无法应⽤用
• 模块质量良莠不⻬齐
• 版本控制存在⻛风险
• 模块安装速度⽆无法保障
1113年4月22⽇日星期⼀一
企业NPM
1213年4月22⽇日星期⼀一
企业NPM
1213年4月22⽇日星期⼀一
企业NPM
1213年4月22⽇日星期⼀一
企业NPM
1213年4月22⽇日星期⼀一
享受开源
1313年4月22⽇日星期⼀一
享受开源
1313年4月22⽇日星期⼀一
享受开源
单向同步
1313年4月22⽇日星期⼀一
享受开源
本地NPM
单向同步
1313年4月22⽇日星期⼀一
享受开源
本地NPM
项⺫⽬目
单向同步
1313年4月22⽇日星期⼀一
享受开源
本地NPM
项⺫⽬目
单向同步
私有模块
1313年4月22⽇日星期⼀一
享受开源
本地NPM
项⺫⽬目
单向同步
私有模块
1313年4月22⽇日星期⼀一
享受开源
本地NPM
项⺫⽬目
单向同步
私有模块
1313年4月22⽇日星期⼀一
享受开源
本地NPM
项⺫⽬目
单向同步
私有模块 公有模块
1313年4月22⽇日星期⼀一
享受开源
本地NPM
项⺫⽬目
单向同步
私有模块 公有模块
1313年4月22⽇日星期⼀一
1413年4月22⽇日星期⼀一
1413年4月22⽇日星期⼀一
1413年4月22⽇日星期⼀一
私有NPM
1413年4月22⽇日星期⼀一
项⺫⽬目1
私有NPM
1413年4月22⽇日星期⼀一
项⺫⽬目1 项⺫⽬目2
私有NPM
1413年4月22⽇日星期⼀一
项⺫⽬目1 项⺫⽬目2 项⺫⽬目3
私有NPM
1413年4月22⽇日星期⼀一
项⺫⽬目1 项⺫⽬目2 项⺫⽬目3
私有NPM
1413年4月22⽇日星期⼀一
质量保证
1513年4月22⽇日星期⼀一
质量保证
• 严格的单元测试
1513年4月22⽇日星期⼀一
质量保证
• 严格的单元测试
1513年4月22⽇日星期⼀一
质量保证
• 严格的单元测试
1513年4月22⽇日星期⼀一
质量保证
• 严格的单元测试
• 只挑选有单元测试的三⽅方模块
1513年4月22⽇日星期⼀一
质量保证
• 严格的单元测试
• 只挑选有单元测试的三⽅方模块
• 持续集成平台(Toast/Travis/jenkins)
1513年4月22⽇日星期⼀一
发布流程
1613年4月22⽇日星期⼀一
发布流程
merge
1613年4月22⽇日星期⼀一
发布流程
testmerge
1613年4月22⽇日星期⼀一
发布流程
testmerge deploy
1613年4月22⽇日星期⼀一
异常处理
1713年4月22⽇日星期⼀一
异常处理
testmerge deployJSHint
Code
review
1713年4月22⽇日星期⼀一
异常处理
testmerge deployJSHint
Code
review
exception
1713年4月22⽇日星期⼀一
异常处理
testmerge deployJSHint
Code
review
exceptiontest case
1713年4月22⽇日星期⼀一
异常处理
testmerge deployJSHint
Code
review
exceptiontest case
1713年4月22⽇日星期⼀一
异构共存
1813年4月22⽇日星期⼀一
异构共存
Tair
1813年4月22⽇日星期⼀一
异构共存
Tair HSF
1813年4月22⽇日星期⼀一
异构共存
Tair HSF OTS
1813年4月22⽇日星期⼀一
异构共存
Tair HSF OTS TFS
1813年4月22⽇日星期⼀一
异构共存
Tair HSF OTS TFS CDN
1813年4月22⽇日星期⼀一
异构共存
Tair HSF OTS TFS CDN etc.
1813年4月22⽇日星期⼀一
异构共存
Tair HSF
Node
OTS TFS CDN etc.
1813年4月22⽇日星期⼀一
异构共存
Tair HSF
Node
HTTP RESTful
OTS TFS CDN etc.
1813年4月22⽇日星期⼀一
异构共存
Tair HSF
Node
HTTP RESTful RPC
OTS TFS CDN etc.
1813年4月22⽇日星期⼀一
异构共存
Tair HSF
Node
HTTP RESTful RPC MySQL协议
OTS TFS CDN etc.
1813年4月22⽇日星期⼀一
异构共存
Tair HSF
Node
HTTP RESTful RPC MySQL协议 etc.
OTS TFS CDN etc.
1813年4月22⽇日星期⼀一
异构共存
Tair HSF
Node
HTTP RESTful RPC MySQL协议 etc.
OTS TFS CDN etc.
1813年4月22⽇日星期⼀一
总结
1913年4月22⽇日星期⼀一
总结
• 严格⾃自律,让犯错变得困难
1913年4月22⽇日星期⼀一
总结
• 严格⾃自律,让犯错变得困难
• 单元测试与异常⽇日志,并驾⻬齐驱保障应⽤用
质量
1913年4月22⽇日星期⼀一
总结
• 严格⾃自律,让犯错变得困难
• 单元测试与异常⽇日志,并驾⻬齐驱保障应⽤用
质量
• 编码规范和代码审查,提升团队平均⽔水平
1913年4月22⽇日星期⼀一
总结
• 严格⾃自律,让犯错变得困难
• 单元测试与异常⽇日志,并驾⻬齐驱保障应⽤用
质量
• 编码规范和代码审查,提升团队平均⽔水平
• 私有NPM去粗取精,拥抱开源社区,回馈
开源社区
1913年4月22⽇日星期⼀一
总结
• 严格⾃自律,让犯错变得困难
• 单元测试与异常⽇日志,并驾⻬齐驱保障应⽤用
质量
• 编码规范和代码审查,提升团队平均⽔水平
• 私有NPM去粗取精,拥抱开源社区,回馈
开源社区
• 拥抱社区⽣生态,打造企业内开发⽣生态环境
1913...
Q&A
2013年4月22⽇日星期⼀一
资料链接
• https://npmjs.org/
• http://wiki.commonjs.org/wiki/CommonJS
• http://visionmedia.github.io/mocha/
• https://github....
Upcoming SlideShare
Loading in...5
×

Qcon beijing-2013-04-27-tianyongqiang

624

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
624
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
10
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Qcon beijing-2013-04-27-tianyongqiang"

  1. 1. 企业级Node.js开发 阿⾥里巴巴数据产品中的Node.js实践 by @⽥田永强 113年4月22⽇日星期⼀一
  2. 2. ⾃自我介绍 • ⽥田永强/@朴灵 • 阿⾥里巴巴/数据平台/数据产品部/⼯工程师 • CNode社区成员 213年4月22⽇日星期⼀一
  3. 3. 演讲议程 • 数据产品 • 协作开发 • 质量保证 • 异构共存 313年4月22⽇日星期⼀一
  4. 4. 数据产品 413年4月22⽇日星期⼀一
  5. 5. 数据产品 413年4月22⽇日星期⼀一
  6. 6. 数据产品 413年4月22⽇日星期⼀一
  7. 7. 数据产品 413年4月22⽇日星期⼀一
  8. 8. 数据产品 413年4月22⽇日星期⼀一
  9. 9. 数据产品 413年4月22⽇日星期⼀一
  10. 10. 数据产品 413年4月22⽇日星期⼀一
  11. 11. 513年4月22⽇日星期⼀一
  12. 12. 513年4月22⽇日星期⼀一
  13. 13. 513年4月22⽇日星期⼀一
  14. 14. 513年4月22⽇日星期⼀一
  15. 15. 513年4月22⽇日星期⼀一
  16. 16. 业务特点 613年4月22⽇日星期⼀一
  17. 17. 业务特点 • 数据源(类型)多 613年4月22⽇日星期⼀一
  18. 18. 业务特点 • 数据源(类型)多 • 数据量⼤大 613年4月22⽇日星期⼀一
  19. 19. 业务特点 • 数据源(类型)多 • 数据量⼤大 • 分布式 613年4月22⽇日星期⼀一
  20. 20. Why Node? 713年4月22⽇日星期⼀一
  21. 21. Why Node? IO开销 花费CPU时钟周期 CPU Cache L1 3 CPU Cache L2 14 RAM 250 Disk 41000000 Net 240000000 713年4月22⽇日星期⼀一
  22. 22. Why Node? 713年4月22⽇日星期⼀一
  23. 23. Why Node? 0 75000000.00 150000000.00 225000000.00 300000000.00 区域 1 数据访问耗时图 l1 l2 ram disk net 713年4月22⽇日星期⼀一
  24. 24. Coding style • 团队JavaScript⽔水平参差不⻬齐 813年4月22⽇日星期⼀一
  25. 25. Coding style 813年4月22⽇日星期⼀一
  26. 26. Coding style JSHint 813年4月22⽇日星期⼀一
  27. 27. Coding style JSHint Code review 813年4月22⽇日星期⼀一
  28. 28. Coding style JSHint Code review merge 813年4月22⽇日星期⼀一
  29. 29. 代码复⽤用 913年4月22⽇日星期⼀一
  30. 30. 代码复⽤用 Copy & Parse 913年4月22⽇日星期⼀一
  31. 31. 代码复⽤用 Copy & Parse 913年4月22⽇日星期⼀一
  32. 32. 代码复⽤用 Copy & Parse 913年4月22⽇日星期⼀一
  33. 33. 代码复⽤用 913年4月22⽇日星期⼀一
  34. 34. 代码复⽤用 913年4月22⽇日星期⼀一
  35. 35. 代码复⽤用 项⺫⽬目1 913年4月22⽇日星期⼀一
  36. 36. 代码复⽤用 项⺫⽬目1 项⺫⽬目2 913年4月22⽇日星期⼀一
  37. 37. 代码复⽤用 项⺫⽬目1 项⺫⽬目2 项⺫⽬目3 913年4月22⽇日星期⼀一
  38. 38. 包管理 1013年4月22⽇日星期⼀一
  39. 39. 包管理 { "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" } 1013年4月22⽇日星期⼀一
  40. 40. 包管理 1013年4月22⽇日星期⼀一
  41. 41. 包管理 1013年4月22⽇日星期⼀一
  42. 42. 社区模块问题 • 私有模块⽆无法应⽤用 • 模块质量良莠不⻬齐 • 版本控制存在⻛风险 • 模块安装速度⽆无法保障 1113年4月22⽇日星期⼀一
  43. 43. 企业NPM 1213年4月22⽇日星期⼀一
  44. 44. 企业NPM 1213年4月22⽇日星期⼀一
  45. 45. 企业NPM 1213年4月22⽇日星期⼀一
  46. 46. 企业NPM 1213年4月22⽇日星期⼀一
  47. 47. 享受开源 1313年4月22⽇日星期⼀一
  48. 48. 享受开源 1313年4月22⽇日星期⼀一
  49. 49. 享受开源 单向同步 1313年4月22⽇日星期⼀一
  50. 50. 享受开源 本地NPM 单向同步 1313年4月22⽇日星期⼀一
  51. 51. 享受开源 本地NPM 项⺫⽬目 单向同步 1313年4月22⽇日星期⼀一
  52. 52. 享受开源 本地NPM 项⺫⽬目 单向同步 私有模块 1313年4月22⽇日星期⼀一
  53. 53. 享受开源 本地NPM 项⺫⽬目 单向同步 私有模块 1313年4月22⽇日星期⼀一
  54. 54. 享受开源 本地NPM 项⺫⽬目 单向同步 私有模块 1313年4月22⽇日星期⼀一
  55. 55. 享受开源 本地NPM 项⺫⽬目 单向同步 私有模块 公有模块 1313年4月22⽇日星期⼀一
  56. 56. 享受开源 本地NPM 项⺫⽬目 单向同步 私有模块 公有模块 1313年4月22⽇日星期⼀一
  57. 57. 1413年4月22⽇日星期⼀一
  58. 58. 1413年4月22⽇日星期⼀一
  59. 59. 1413年4月22⽇日星期⼀一
  60. 60. 私有NPM 1413年4月22⽇日星期⼀一
  61. 61. 项⺫⽬目1 私有NPM 1413年4月22⽇日星期⼀一
  62. 62. 项⺫⽬目1 项⺫⽬目2 私有NPM 1413年4月22⽇日星期⼀一
  63. 63. 项⺫⽬目1 项⺫⽬目2 项⺫⽬目3 私有NPM 1413年4月22⽇日星期⼀一
  64. 64. 项⺫⽬目1 项⺫⽬目2 项⺫⽬目3 私有NPM 1413年4月22⽇日星期⼀一
  65. 65. 质量保证 1513年4月22⽇日星期⼀一
  66. 66. 质量保证 • 严格的单元测试 1513年4月22⽇日星期⼀一
  67. 67. 质量保证 • 严格的单元测试 1513年4月22⽇日星期⼀一
  68. 68. 质量保证 • 严格的单元测试 1513年4月22⽇日星期⼀一
  69. 69. 质量保证 • 严格的单元测试 • 只挑选有单元测试的三⽅方模块 1513年4月22⽇日星期⼀一
  70. 70. 质量保证 • 严格的单元测试 • 只挑选有单元测试的三⽅方模块 • 持续集成平台(Toast/Travis/jenkins) 1513年4月22⽇日星期⼀一
  71. 71. 发布流程 1613年4月22⽇日星期⼀一
  72. 72. 发布流程 merge 1613年4月22⽇日星期⼀一
  73. 73. 发布流程 testmerge 1613年4月22⽇日星期⼀一
  74. 74. 发布流程 testmerge deploy 1613年4月22⽇日星期⼀一
  75. 75. 异常处理 1713年4月22⽇日星期⼀一
  76. 76. 异常处理 testmerge deployJSHint Code review 1713年4月22⽇日星期⼀一
  77. 77. 异常处理 testmerge deployJSHint Code review exception 1713年4月22⽇日星期⼀一
  78. 78. 异常处理 testmerge deployJSHint Code review exceptiontest case 1713年4月22⽇日星期⼀一
  79. 79. 异常处理 testmerge deployJSHint Code review exceptiontest case 1713年4月22⽇日星期⼀一
  80. 80. 异构共存 1813年4月22⽇日星期⼀一
  81. 81. 异构共存 Tair 1813年4月22⽇日星期⼀一
  82. 82. 异构共存 Tair HSF 1813年4月22⽇日星期⼀一
  83. 83. 异构共存 Tair HSF OTS 1813年4月22⽇日星期⼀一
  84. 84. 异构共存 Tair HSF OTS TFS 1813年4月22⽇日星期⼀一
  85. 85. 异构共存 Tair HSF OTS TFS CDN 1813年4月22⽇日星期⼀一
  86. 86. 异构共存 Tair HSF OTS TFS CDN etc. 1813年4月22⽇日星期⼀一
  87. 87. 异构共存 Tair HSF Node OTS TFS CDN etc. 1813年4月22⽇日星期⼀一
  88. 88. 异构共存 Tair HSF Node HTTP RESTful OTS TFS CDN etc. 1813年4月22⽇日星期⼀一
  89. 89. 异构共存 Tair HSF Node HTTP RESTful RPC OTS TFS CDN etc. 1813年4月22⽇日星期⼀一
  90. 90. 异构共存 Tair HSF Node HTTP RESTful RPC MySQL协议 OTS TFS CDN etc. 1813年4月22⽇日星期⼀一
  91. 91. 异构共存 Tair HSF Node HTTP RESTful RPC MySQL协议 etc. OTS TFS CDN etc. 1813年4月22⽇日星期⼀一
  92. 92. 异构共存 Tair HSF Node HTTP RESTful RPC MySQL协议 etc. OTS TFS CDN etc. 1813年4月22⽇日星期⼀一
  93. 93. 总结 1913年4月22⽇日星期⼀一
  94. 94. 总结 • 严格⾃自律,让犯错变得困难 1913年4月22⽇日星期⼀一
  95. 95. 总结 • 严格⾃自律,让犯错变得困难 • 单元测试与异常⽇日志,并驾⻬齐驱保障应⽤用 质量 1913年4月22⽇日星期⼀一
  96. 96. 总结 • 严格⾃自律,让犯错变得困难 • 单元测试与异常⽇日志,并驾⻬齐驱保障应⽤用 质量 • 编码规范和代码审查,提升团队平均⽔水平 1913年4月22⽇日星期⼀一
  97. 97. 总结 • 严格⾃自律,让犯错变得困难 • 单元测试与异常⽇日志,并驾⻬齐驱保障应⽤用 质量 • 编码规范和代码审查,提升团队平均⽔水平 • 私有NPM去粗取精,拥抱开源社区,回馈 开源社区 1913年4月22⽇日星期⼀一
  98. 98. 总结 • 严格⾃自律,让犯错变得困难 • 单元测试与异常⽇日志,并驾⻬齐驱保障应⽤用 质量 • 编码规范和代码审查,提升团队平均⽔水平 • 私有NPM去粗取精,拥抱开源社区,回馈 开源社区 • 拥抱社区⽣生态,打造企业内开发⽣生态环境 1913年4月22⽇日星期⼀一
  99. 99. Q&A 2013年4月22⽇日星期⼀一
  100. 100. 资料链接 • 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/ 2113年4月22⽇日星期⼀一
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×