Qcon beijing-2013-04-27-tianyongqiang

844 views

Published on

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

No Downloads
Views
Total views
844
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
11
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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⽇日星期⼀一

×