金炳 企业级Node及Serverless实践

前端狗

2019/07/09 发布于 编程 分类

GMTC2019 

文字内容
1. 2019 企业级Node及Serverless应⽤用实践 金炳 网易-严选事业部
4. 个⼈人介绍 Name: ⾦金金炳 Web developer @yanxuan Github: stone-jin 知乎:⾦金金炳 Doing ⽬目前致⼒力力于Node应⽤用框架开发及⽣生态建设, 实践Node应⽤用在Serverless、FaaS场景下的迁移和落地, 探索service mesh在Node应⽤用中的价值。
5. ⽬目录 ⼀一、业务场景 ⼆二、Node作⽤用 三、Node保障 四、Serverless与Knative 五、Service Mesh的价值
6. ⼀一、业务场景 ⽹网易易严选 ⽹网易易旗下原创⽣生活类⾃自营电商品牌
7. 电商前台业务 APP/H5商城 线下店 ⼩小程序/PC 渠道平台 …. ⽀支撑 产品架构(简化版) 电商后台业务 商品中⼼心 订单中⼼心 库存中⼼心 会员中⼼心 促销中⼼心 CRM系统 评价中⼼心 采购中⼼心 WMS 物流中⼼心 ⻛风控中⼼心 客服系统 财务管理理 营销中⼼心 数据中⼼心 ⽀支付中⼼心
8. 物流信息展示 ⽤用户端 订单中⼼心 关联性强 客服中⼼心 ….
9. 权限模块、反馈模块 库存中⼼心 运营中⼼心 关联性强 评价中⼼心 ….
10. 如何处理理跨系统 关联性强 的业务场景??
11. 前端 Node 基础组件
12. 前端 Node 基础组件 业务组件
13. 业务组件-举个例例⼦子 多系统通⽤用,与业务紧密关联的组件
14. ⼆二、Node应⽤用 前端 Node 基础组件 业务组件 业务组件Node
15. 前端业务组件: Node承载数据服务:
16. 数据服务承载层
17. 接⼝口承载⽅方
18. 模块的复⽤用?
19. 业务模块-举个例例⼦子
20. 业务模块:包含多个业务功能的集合。
21. 前端 Node 基础组件 业务组件 业务组件Node 业务模块 业务模块Node
22. 业务模块-使⽤用 前端 Node数据承载层:
23. 数据服务承载层
24. 数据服务承载层 ⼦子模块
25. 接⼝口集
26. 业务模块建设 多功能模块的集合 多⻚页⾯面的聚合 路路由的集成
27. 业务模块建设 多功能模块的集合 多⻚页⾯面的聚合 业务组件与业务模块的区别 点-⾯面 路路由的集成
28. ⼯工作台?
29. 前端
30. Node
31. 系统A1 ⼯工作台A 业务模块 对接后端微服务 ⼯工作台B
32. Node的使⽤用 点 ⾯面 业务组件 业务模块 ⽴立体 ⼯工作台
33. Node使⽤用-⻆角⾊色转变
34. Node使⽤用-⻆角⾊色转变 业务组件、业务模块 接⼝口的使⽤用⽅方 接⼝口的提供⽅方 如何⾼高效调试我们的接⼝口?curl、 postman、swagger?
35. 引⼊入swagger ⾼高效调试接⼝口
36. swagger中间件开发 传统swagger⽅方式 解析ast ⽣生成swagger.json UI
37. Node使⽤用-开发调试流程 修改代码后 nodemon重启应⽤用 中间件AST解析 调试 更更新swagger界⾯面 ⽣生成swagger.json
38. Node使⽤用-反哺前端 swagger.json 接⼝口管理理平台 ⽣生成前端sdk 加速业务组件、业务模块、业务的前端开发
39. 前端SDK -typescript
40. 如何进⾏行行权限拦截、参数校验?
41. 权限校验
42. 前端 Node
43. 参数校验
45. 单元测试?依赖注⼊入?
46. IOC注⼊入
47. 三、Node保障 稳定性?性能?监控?
48. 基建保障
49. 1、⽇日志平台 • • ⽇日志聚合 ⽇日志查询
50. 2、分布式链路路跟踪 • • • 链路路串串联 错误链路路排查 慢链路路排查
51. 3、监控中⼼心 • • • 内存、CPU等监控 流量量等监控 服务状态等监控
52. 4、配置中⼼心 • 动态配置
53. 5、分布式事务调度 • • 事务 回滚
54. 6、CI/CD • 加速上线流程
55. 四、Serverless与Knative
56. 服务部署?服务器器资源?流量量扩缩容?
57. 什什么是Serverless?
58. Serverless = FaaS + BaaS ⽆无服务器器的思想,研发⽆无需关⼼心服务器器,关注业务本身
59. 云上的Serverless模式 FaaS:函数计算,⾃自动缩放容 BaaS:云服务,⾃自动缩放容 云服务提供了了统⼀一的SDK, 写函数即可,使⽤用云计算服务 起⻜飞 Serverless
60. 我们的Serverless怎么搞 都要⽤用FaaS吗? Serverless 我们的BaaS在哪⼉儿? 我们的BaaS层不不是云服务 Serverless + 微服务 先跑起来 前端
61. 适合我们的框架-Knative ⼯工作负载 和标准化的FaaS不不同, Knative期望能够运⾏行行所有的⼯工作负载: • Function • Microservice • Traditional Application • Container 平台⽀支撑 Knative建⽴立在K8S和istio之上 K8S容器器管理理能⼒力力 Istio⽹网络管理理功能
62. knative对严选的价值 ✓⽀支持 传统应⽤用+微服务+函数计算服务,混合模式 ✓多云战略略,不不会被某个云提供商锁定,可在不不同云平台之间 移植
63. Knative是云原⽣生中三个领域的最佳实践的结合 knative是⼀一个Serverless平台,包含三⼤大组件
64. Knative原理理
65. 从使⽤用Serving组件开始
66. 镜像 服务
67. image 服务+路路由 Kubectl根据knative配置 K8S Istio
68. 依赖于K8s的动态scale 利利⽤用Istio的服务治理理功能
69. 使⽤用Build组件
70. 源码 镜像
71. 源码 Buildtemplate 镜像
72. 开发Buildtemplate
74. steps 拉代码 构建 ⽣生成镜像 推送到仓库
75. 使⽤用Event组件
76. 事件源 事件响应
77. 构建严选的Serverless Framework
78. 产品化 UI 开发者⼯工具 CLI WEB IDE 基础设施层,serverless runtime
79. 应⽤用级别 knative 模块级别 FaaS
80. 前途不不可限量量 ✓Knative的优势 • • 不不拘泥泥于FaaS,⽀支持BaaS和传统应⽤用,适⽤用性更更⼴广泛 平台化,标准化,不不锁定于某⼀一个云提供商 ✓存在的问题 • • 项⽬目发展不不久,当前V0.6版本 ⽂文档这块较为⽋欠缺
81. knative.dev
82. 五、Service Mesh的价值
83. 服务治理理
84. 传统的微服务治理理 项⽬目级别 library
85. service mesh构想的微服务治理理 语⾔言层⾯面 语⾔言⽆无关
86. service mesh的微服务治理理 服务 基础设施层 下沉为通讯层、并利利⽤用底层基础设施
87. 中⽂文:”服务⽹网格” 基础设施层 处理理服务间通信 轻量量级⽹网络代理理
88. 举个例例⼦子-流量量管理理 90% 服务B(v1) 10% 服务B(v2) 服务A
89. 举个例例⼦子-流量量管理理 控制⾯面 数据⾯面
90. 前途不不可限量量 • • • • • 路路由能⼒力力 安全:认证,加密,限流,熔断 请求转发 链路路跟踪 ….
91. 是不不是万能的?
92. 不不是万能的 • • • • 链路路跟踪这类细粒度 性能消耗,对于业务的影响 应⽤用架构决定 ….
93. 总结
94. 业务 前端架构
95. THANKS! THANKS! THANKS
98. Q&A