美团基于 Serverless 的前端研发体系建设和业务实践

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 美团基于 Serverless 的前端研发体系 建设和业务实践 张方成 美团·基础技术部·前端技术中心
2.
3. 个人简介 2016 年加入美团,曾负责美团私有云平台前端建设, 目前负责美团 Node.js 基建、Serverless 前端方向以 及静态网站托管服务建设,关注前端工程化、云化、 Serverless 架构等技术领域。
4. 目录 • 背景 • 美团 Serverless 前端建设 • 前端交付实践 • 未来规划
5. 背景:为什么做Serverless? 业务复杂度不断增加
6. 背景:为什么做Serverless? 技术架构演进 基础设施服务化 业 务 研 发 平台服务化 业 务 研 发 业务应用 业务逻辑托管服务化 业 务 研 发 业务应用 业务逻辑 2019上线 Serverless平台 业务应用底座 运行时、框架 平台软件 平台软件 存储、数据库、中间件 存储、数据库、中间件 基础设施 机房、网络、服务器 平 台 研 发 基础设施 机房、网络、服务器 平 台 研 发 Serverless 使业务开发者聚焦业务逻辑开发 平台软件 存储、数据库、中间件 基础设施 机房、网络、服务器 平 台 研 发
7. 背景:Serverless可以为前端解决什么问题? 业务特点与痛点 美团Node.js应用占比 业务特点 • B端产品:系统复杂,更关注效率 • C端产品:访问量大,更关注稳定性 B端 30% 工具 40% • 工具型产品:访问量极低,更关注机器费用 业务痛点 C端 30% • 研发效率低:资源申请、基础服务集成、发布耗时 • 运维成本高:集群扩缩容、机房容灾、节点隔离 • 机器费用高:冗余部署、资源利用率低
8. 背景:Serverless可以为前端解决什么问题? 使前端开发者聚焦业务逻辑开发 策略 Serverless 架构下 按需使用、集群扩缩容、机房容灾、节点隔离 基础设施 对象存储 日志 文件存储 机房 操作系统 数据库 内容加速 服务器 网络 安全 机器申请、维护 平台软件 监控 高并发 软件稳定性 高可用 高性能 统一接入SDK 框架 服务高可用、高性能、高并发 业务应用底座 运行时 集成基础组件SDK 函数粒度发布更快 业务逻辑
9. 美团Serverless前端全景 业务解决方案 中后台系统解决方案 前端服务编排平台 一站式SSR平台 小程序运营配置平台 …… • 提升业务开发效率 • 架构和稳定性保障 FaaS 平台 研发套件 研发框架 管理视图 触发源 HTTP MQ 应用网关 RPC 事件网关 适配器 路由 限流/降级 流量统计 发布工具 WeIDE 基础组件 沙箱 SDK加载器 存储 数据库 Node 函数运行时 实例 中间件 …… Java 函数运行时 运维
10. 目录 • 背景 • 美团 Serverless 前端建设 • 研发套件建设 • 基础组件建设 • FaaS平台建设 • 前端交付实践 • 未来规划
11. 美团Serverless 前端建设:研发套件建设 研发流程中的工具面临重构 开发 不适合、用不了了 调试 构建部署 线上运维 云函数调试 函数粒度的项目部署 运维工具 研发框架 Era Remo Nami 开箱即用的框架 Node-server Express Next.js Next.js Koa 公司常⻅研发框架有10+种
12. 美团Serverless 前端建设:研发套件建设 整体方案思路 开发 研发框架集成 沉淀业务实践 通过开放能力集成框架 云端开发体验探索 调试 构建部署 本地调试 部署组件 服务监控 弹性伸缩 远程调试 灰度部署 链路追踪 容灾建设 触发器调试 函数部署 性能诊断 限流降级 提供研发流程中必要工具 线上运维
13. 美团Serverless 前端建设:研发套件建设 通过开放能力集成框架 研发框架 Koa Express Era Nami …… • 合作共建 • 业务框架遵循规范 规范定义 研发套件 架构规范 部署规范 运维规范 目录规范 构建规范 监控规范 资源托管 发布规范 日志规范 降级规范 变更审批 压力测试 容灾规范 。。。 性能测试 开发 调试 构建部署 线上运行
14. 美团Serverless 前端建设:研发套件建设 云端开发体验 探索在线的开发协作模式 协作效率 在线开发 项目开发 项目调试 在线调试 开发效率 一键初始化 项目创建 提供一致的环境配置 灰度部署 项目部署 独立开发 共享开发环境 项目运维 监控大盘、数据分析 实现开发周期的闭环 实现高效的团队合作
15. 美团Serverless 前端建设:基础组件 存在的痛点 PaaS 图片服务 消息队列 配置管理 … 中间件 任务调度 数据库 存储 MySQL 对象存储 故障演练 传输平台 KV存储 性能诊断 分布式数据 文件存储 … … 学习和使用成本高,SDK很多、配置零散 运维 原有方式 监控 引入SDK 日志 配置 链路追踪 初始化 变更管理 调试 密钥管理
16. 美团Serverless 前端建设:基础组件 策略:简化组件的使用方法 触发源 消息服务、对象存储、应用网关、定时器 方式一:基于事件模型使用 • 配置启用组件,无需引入SDK 事件网关 函数实例 API方法 FaaS 管理端
17. 美团Serverless 前端建设:基础组件 基于运行时使用 函数实例 方式二:基于运行时使用 • 配置启用组件,无需引入SDK 函数运行时 Function Function Function 基础组件SDK加载器:加载基础组件 基础组件依赖 监控 日志 数据库 对象存储 配置管理 分布式缓存 运行时集成基础组件SDK 从上下文中读取基础组件实例
18. 美团Serverless 前端建设:FaaS平台 整体架构设计 运行态 • 如何应对高并发 触发源 • 如何降低机器费用 事件网关 HTTP 适配器 MQ 路由 管理系统 应用网关 限流/降级 RPC 流量统计 • 稳定性保障建设 函数管理 发布管理 场景管理 实例 业务函数 Function Function Function Function Function Function Function Function Function 函数沙箱 监控大盘 资源池管理 SDK集成 配置管理 监控 Kubernetes 日志 …
19. 美团Serverless 前端建设:FaaS平台 如何应对高并发 Nginx 网关 • 弹性伸缩 • 支持快速扩容 事件网关 支持快速扩容的关键就是减小冷启动时间 实例 实例 实例 实例 实例 实例 实例 实例 实例 实例 实例 实例 实例 实例 实例 实例 高并发下
20. 美团Serverless 前端建设:FaaS平台 冷启动时间优化 包含美团定制流程 请求触达 容器调度 镜像下载 业务代码 下载 容器启动 函数运行 时启动 代码加载 请求执行 业务代码初始化 20s+ 实例初始化 30s+ 消除实例初始化时间 减小业务代码体积 大应用拆分、 提供平台依赖、 删除不必要的代码以及 第三方库依赖 实例预热 请求触达 池化资源调度 500ms 业务代码 下载 代码加载 2.1s(2+0.1) 请求执行 请求完成 请求完成
21. 美团Serverless 前端建设:FaaS平台 如何降低机器费用? Nginx网关 • 单实例多并发 • 减小沙箱配置 事件网关 • 实例缩容为0 • 合并部署 实例 实例 函数沙箱 函数沙箱 函数沙箱 函数沙箱 0.25C0.25G 配置 * C* G配置
22. 美团Serverless 前端建设:FaaS平台 合并部署 实例 实例 沙箱 服务A 沙箱 服务A 实例 实例 沙箱 沙箱 服务A 实例 服务A 沙箱 沙箱 服务A 服务A 沙箱 沙箱 服务A 服务A 单实例内运行 1个沙箱演进到多沙箱 机器需求:2C4G * 4 机器需求:2C4G * 1
23. 美团Serverless 前端建设:FaaS平台 稳定性保障 稳定性建设下沉,使业务专注于解决自身的挑战
24. 美团Serverless 前端建设:FaaS平台 稳定性保障全景图 产品 使用规范 软件研发 软件开发和产品发布 容量规划 变更管控 预案与演练 最佳实践 项目管理 高可用架构 容量评估 弹性伸缩 单元测试 应急响应 可观测性 技术评审 研发流程规范 资源池保障 持续集成 链路容量 质量及运营 事后总结和根因分析 故障识别、⻛险规避 和故障处理 技术指导 服务压测 灰度发布 变更审批 故障复盘 预案建设 预案执行 监控 稳定性保障模型 故障演练 日志 响应机制 性能诊断 故障处理 告警
25. 美团Serverless 前端建设:FaaS平台 高可用架构 Nginx 网关 部署架构 事件网关 • 业务线隔离、地域隔离、多机房部署 通用集群 弹性伸缩 • 定时伸缩、预留实例、提前扩容 容灾降级 北京机房 金融集群 上海机房 北京机房 上海机房 • 业务降级、限流、熔断 上海 北京 函数实例 实例 实例 实例 实例 实例 实例 实例 实例
26. 美团Serverless 前端建设:FaaS平台 示例:SSR场景降级策略 FaaS平台 前端项目 构建产物 业务集群 客户端 请求 响应 Serverless事件网关 Nginx七层网关 主动感知 被动兜底 实例 实例 部署SSR服务 SSR服务 实例 实例 降级 降级 实例 对象存储 部署CSR⻚面 CSR⻚面
27. 美团Serverless 前端建设:FaaS平台 可观测性建设 定位 • 发现问题:服务监控 • 定位问题:服务日志与性能诊断 稳定性 发现 止损
28. 美团Serverless 前端建设:FaaS平台 可观测性:服务监控 系统监控 • CPU、内存、磁盘、网络等 应用监控 • 访问量、QPS、错误数、响应时间 进程监控 • CPU、内存、GC
29. 美团Serverless 前端建设:FaaS平台 可观测性:服务日志 用户端日志 • 全链路日志 函数平台日志 事件网关 App、Web和小程序 函数运行时 • 链路分析 前端日志SDK 服务端日志SDK 日志系统 日志分析 链路拓扑 前端日志系统 全链路日志 服务端日志系统 业务日志 业务函数执行
30. 美团Serverless 前端建设:FaaS平台 可观测性:性能诊断 告警 告警条件 监控平台提供 内存表现异常 性能诊断平台提供 定位性能问题
31. 美团Serverless 前端建设:FaaS平台 灰度发布 策略类型 Serverless事件网关 • 流量百分比 • 自定义条件 header、cookie、query 90% 10% 特性 • 平滑发布 • AB 测试 • 0 秒回滚 原分组 实例 实例 实例 新分组 实例 实例 实例 实例 实例
32. 美团Serverless 前端建设:美团Serverless前端全景 业务解决方案 中后台系统解决方案 助力Web前端服务上云 前端服务编排平台 落地效果 管理视图 • Node服务覆盖度:50% 发布工具 • 研发效率提升: 30%-40% • 运维成本:业务免运维 WeIDE • 资源利用率:40%以上 小程序运营配置平台 FaaS 平台 研发套件 研发框架 一站式SSR平台 基础组件 触发源 HTTP MQ 应用网关 RPC 事件网关 适配器 路由 限流/降级 流量统计 实例 函数运行时 中间件 存储 数据库 Function Function Function Function 运维 SDK集成 配置管理 监控 日志 …
33. 目录 • 背景 • 美团 Serverless 前端建设 • 前端交付实践 • • 案例一:流量波动较大的服务 • 案例二:低频访问SSR⻚面场景 未来规划
34. 前端交付实践:业务案例一 流量波动较大的服务 业务特点 • 平时流量小 • 高峰流量大,QPS 最高/最低差距达 30 倍 • 传统容器部署Node 痛点 • 服务器成本:流量上下波动剧烈,高低峰期间流量相差 大。现有的部署方式只能按最高业务峰值来进行申请,在 流量低谷,大部分机器资源是冗余的,资源利用率低 • 运维成本高:业务研发需要人工运维,机器替换申请等, 影响业务开发效率 • 应急响应不及时:线上出现问题时需要人工干预,处理成 本高、不及时 SSR/API 服务
35. 前端交付实践:业务案例一 低成本迁移 事件网关 事件网关 函数实例 服务器 应用 Web适配器 函数实例 函数实例 函数1 函数运行时 函数运行时 函数运行时 函数2 函数1 函数1 函数2 应用 函数2 传统架构 平滑过渡 过渡阶段 引导升级 Serverless架构
36. 前端交付实践:业务案例一 接入Serverless架构后 带来的改变 • 实例自动伸缩:自动扩容、定时扩容 • 全面的监控:系统、流量、性能数据监控的 一站式解决方案 收益 • 服务器成本降低:资源利用率由10%提升到 35%以上 • 运维成本降低:一站式监控,迁移后零运 维; • 应急响应:秒级发布、实例异常自动隔离。 系统层面的紧急情况由平台承担。 实例随着QPS增加自动扩容
37. 前端交付实践:业务案例二 低频访问SSR⻚面场景 业务特点 • ⻚面粒度部署 服务A-⻚面1 服务A-⻚面2 服务A-⻚面3 • 日常流量较小 • 流量有波峰波谷 服务A-⻚面4 服务A-⻚面5 函数沙箱 实例 1C1G 多⻚面-单沙箱-单实例 服务A-⻚面6 痛点 • ⻚面间隔离性差 • 发布回滚耦合、时间⻓
38. 前端交付实践:业务案例二 部署架构演进 收益 服务A-⻚面1 服务A-⻚面2 服务A-⻚面3 沙箱 沙箱 沙箱 实例 1C1G 实例 1C1G 实例 1C1G • ⻚面间隔离性提升 • 发布效率提升 痛点 服务A-⻚面4 服务A-⻚面5 服务A-⻚面6 沙箱 沙箱 沙箱 实例 1C1G 实例 1C1G 实例 1C1G 多⻚面-多沙箱(单实例) • 资源利用率低,~10%
39. 前端交付实践:业务案例二 部署架构演进 原来 服务A-⻚面1 服务A-⻚面2 服务A-⻚面3 沙箱 沙箱 沙箱 服务A-⻚面4 服务A-⻚面5 服务A-⻚面5 沙箱 沙箱 沙箱 实例 1C1G 多⻚面-多沙箱-单实例 • 发布/回滚时⻓:10分钟 • 隔离性:⻚面间耦合 现在 • 发布时⻓:5s,回滚时⻓:0s • 隔离性:⻚面间沙箱隔离
40. 前端交付实践:业务案例二 SSR运行时解决方案 • 函数运行时支持插件能力 Vue2 • 业务定制SSR运行时 Vue3 多框架支持 …… MRN React 沙箱 SSR 运行时 Node.js 函数运行时 • 支持多框架扩展 • 冷启动时间降低
41. 未来规划 65%+ 工具建设 组件集成 函数运维 提升资源利用率 提升研发效率 面对运维挑战
42.
43.

Accueil - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-15 22:59
浙ICP备14020137号-1 $Carte des visiteurs$