Serverless for frontend
不用多说 , 当下前端最热的技术趋势就是:云端一体化研发模式 , 它实际上是以 Serverless 技术作为技术底座去构建的现代化应用研发模式;不仅降低了“全栈开发工程师” 的技术门槛 , 还大幅提高了研发效率 , 阿里内部多个大型 App 都已全量使用 , 比如淘宝 , 天猫 , 飞猪等等 。 经过严格的数据统计 , Serverless 在研发提效上能提高 38% , 这也是我们选择 Serverless 最重要的数据依据 。 除此以外 , 基于 Serverless 实现的 CSR/SSR 首屏提速技术方案 , 目前也已经非常的成熟 , 几乎覆盖了阿里内部的 App 应用 。
快速迭代
工程卓越一直是我们的追求目标 , 但是由于各大技术产品关注重点不同 , 所以对于“研发最后一公里”的相关事项并没有做太多关注 , 这就导致了技术产品的功能与用户体验出现割裂感 , 很多业务方放弃使用 。
Serverless 的目标就是让你尽可能多的专注自己的业务逻辑 , 能够少关注或者忽略非业务核心的运维工作;加速开发时间 , 降低线上资源的冗余成本 , 所以 Serverless 无疑是扛得起降本提效的大旗的 。
完全弹性
请求毫秒级的调度是 Serverless 的核心竞争力 , 相比传统的分钟级弹性扩容 , Serverless 技术存在巨大的成本优势 , 扩容所耗费的时间越少 , 预留的机器资源就会更低 , 如果到了毫秒级别 , 就无需预留任何资源 , 这样成本能够大大的降低 , 资源利用率可以达到 100% 。
低成本迁移利器 - Runtime/Container
做过程序员的同学都知道最痛苦的事情是“改别人的代码” , 因此 , 虽然 Serverless 技术十分诱人 , 但是对于存量的应用如何迁移到 Serverless 架构上 , 也一直困扰着我们 。
我们应如何以低代码的方式解决传统架构潮汐流量对资源使用不合理的问题 , 于是我们跟 Serverless 团队同和合作开发 Runtime 。 由于高德的服务均以 C++、Go、Rust 的语言设计 , 于是我们开发出 C++、Go、Rust 的 Runtime 。 Runtime 集成了集团内的中间件 , 使得 Serverless 架构可以满足我们之前服务的整个生命周期 。 让我们可以快速的切换服务到 Serverless 平台上 。
但是随着我们使用量变大 , 业务场景比较复杂 , 一些对外的服务是无法使用内部 Runtime 的 , 这个严重的问题一直掣肘着我们 , 使原有的架构由简单又变得复杂起来 。 直到阿里云 Serverless 团队的同学 , 推出了 Custom Runimte/Container 功能 , 彻底解决了我们后顾之忧 。 我们只需改几行启动命令 , 就可以轻松迁移存量的应用 。 Serverless 团队也针对镜像的快速分发做了大量的创新优化工作 , 如使用四级缓存 , P2P 技术 , 按需下载等方式 , 提供了秒级别下载 3G 大小镜像的能力 。
得益于 Serverless 技术加持 , 无人值守的目标也就很容易达成 , 所有的运维操作 , 都通过 Serverless 的强大调度能力去解决 , 比如峰值高峰期 , 系统会自动毫秒级别进行扩容 , 低峰期同样也会 Graceful 的进行缩容 , 不涉及任何人为操作运维 , 所以这也解决了我们在节日大促期间过多人现场值班的困境 。
Serverless 技术落地 架构设计
在系统设计上 , 我们引入了两层 FaaS (Function as a Serverles) , 端 FaaS 和业务 FaaS , 其中:
端 FaaS , 也就是 SFF ( Serverless for frontend) , 基于 Node.js , 实现了端云一体化开发 , 将原本客户端的逻辑移到 FaaS 服务端来 。 这里在传统的 Frontend 和 Backend 之间抽象出了 SFF, 用来实现数据和调用逻辑封装 , 快速开发、发布 。在后端 , 引入业务 FaaS , 基于 Java/Go 实现 用来封装推荐策略逻辑和数据转换代码 , 可以提高策略迭代效率 , 同时减少策略迭代对主工程的影响 。从整体上看 , 将函数计算和容器化微服务整合在一起 , 综合利用函数计算的高效和传统微服务的灵活 , 是一种实用高效的架构设计思路 。
快速迭代
作为核心的应用 , 需要一套完备的 CI/CD 流程去保障应用的质量 , 针对函数的质量 , 我们基于了 Serverless Devs 工具链同样实现了一套研发全流程方案: 。 不仅具备函数多环境 , 函数灰度切流 , 函数可观测等能力 , 而且通过这套 Serverless 研发体系 , 我们实现了 1 分钟开始进入开发 , 5 分钟完成上线的能力 , 同时默认具备异地多活的能力 。
限流降级 , 异地多活
对于大流量应用的稳定性 , 限流保护 , 降级预案 , 异地多活是三大必备功能 。 特别是大促的时候 , 非预期的流量都可能引起系统雪崩 , 在我们的 Serverless 研发平台上 , 集成了阿里云函数计算的并发度流控 , QPS 流控的能力 , 做到了函数粒度的流控 。
- CPU|百度地图和高德地图很快把腾讯地图踢出市场了
- Google|谷歌掐掉乌克兰地图导航,4400万民众躺枪!Google老矣,尚能饭否?
- 战略地图|破局智能制造的 9 个场景 | 参数
- 高德|本地风口再起变局,饿了么能否抓住机会弯道超车?
- 开发|《GTA6》正在开发中,专利暗示其地图将非常巨大
- 高德地图|格力大松G7降价,外观神似魅族18X,董明珠:我做手机太容易了!
- 中国移动|700M 5G让中国移动如虎添翼:领先商用VoNR优势细分析!
- 路由器|高德打车免佣联盟推出情人节元宵节早晚高峰免抽佣福利
- 小雷|高德、百度地图纯净版来了,谁才是最良心的地图工具
- 拍照手机|2022最具性价比的拍照手机推荐,首选这几款,让拍摄如虎添翼