金炳 企业级Node及Serverless实践

2020-03-01 196浏览

  • 1.2019 企业级Node及Serverless应⽤用实践 金炳 网易-严选事业部
  • 2.
  • 3.
  • 4.个⼈人介绍Name:⾦金金炳 Web developer @yanxuanGithub: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.参数校验
  • 44.
  • 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
  • 73.
  • 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
  • 96.
  • 97.
  • 98.Q&A