简介:曾经看上去很美、一直被观望的 Serverless,现已逐渐进入落地的阶段。今年的"十一出行节",高德在核心业务规模化落地 Serverless,由 Serverless 支撑的业务在流量高峰期的表现十分优秀。传统应用也能带来同样的体验,那么 Serverless 的差异化价值又是什么呢?本文分享高德 Serverless 规模化落地背后的实践总结。

随着 Serverless 概念的进一步普及,开发者已经从观望状态进入尝试阶段,更多的落地场景也在不断解锁。“Serverless 只适合小场景吗?”、“只能被事件驱动吗?” 这些早期对 Serverless 的质疑正在逐渐消散,用户正在更多的核心场景中,开始采用 Serverless 技术达到提效、弹性、成本优化等目的。作为地图应用的领导者,高德为带给用户更好的出行体验,不断在新技术领域进行探索,在核心业务规模化落地 Serverless,现已取得显著成效。

2020 年的“十一出行节”期间,高德地图再创新记录,当日活跃用户数突破 1 亿的时间比 2019 年 10 月 1 日提前 3 个多小时。

期间,Serverless 作为其中一个核心技术场景,平稳扛住了流量高峰期的考验。值得一提的是,由 Serverless 支撑的业务在流量高峰期的表现十分优秀,每分钟函数调用量接近两百万次。这再次验证了 Serverless 基础技术的价值,进一步拓展了技术场景。

一 业务场景

自主出行是高德地图的核心业务,涉及到用户出行相关的功能诉求,承载了高德地图 APP 内最大的用户流量。下图为自主出行核心业务中应用 Node FaaS 的部分场景,从左至右依次为:主图场景页、路线规划页、导航结束页。

随着功能的进一步拓展,高德地图从导航工具升级为出行服务平台和生活信息服务入口,进一步拓展了出行相关的生活信息服务场景,带给用户更全面的用户体验。上图功能为场景推荐卡片,旨在根据用户出行意图推荐信息,提升用户出行体验。此功能需具备快速迭代,样式调整高灵活性的能力。因此,将卡片样式模版存放于云端,通过服务下发的形式渲染至客户端无疑为最优选择,可以满足业务快速灵活迭代的目的。

经过方案评估判断,此场景类型属于无状态服务,基于阿里云 Serverless 成熟的生态,高德最终选择接入 Node FaaS(阿里云函数计算)服务能力,出行前端搭建了场景推荐卡片服务。卡片的 UI 模版获取、数据请求聚合&逻辑处理、拼接生成 Schema 的能力均在 FaaS 层得到实现,客户端根据服务下发的 Schema 直接渲染展示,达到更加轻便灵活的目标。

那么,Serverless 场景在“十一出行节”峰值场景中的具体表现如何?

整体服务成功率均大于 99.99% ,总计 100W+ 次触发/分钟,QPS 2W+,各场景的服务平均响应时间均在 60ms 以下,服务稳定性超出预期。

二 业务价值

从对以上业务场景的支撑中,我们可以看出 Serverless 的表现非常优秀。当然你也会问,传统的应用也能带来同样的体验,那么 Serverless 的差异化价值又是什么呢?

简单提效

传统 BFF(Back-end For Front-end)层应用会随着时间推移以及业务需求的增加, 其BFF 层也会逐渐的变 “富”, 冗余的代码会逐渐变多,最后就会变成开发者的噩梦——“牵一发而动全身”。随着人员迭代变化,模块的开发者也会变化,BFF 层就会慢慢变成一个无人知晓,无人敢动的模块。

当 BFF 层转换成 SFF (Serverless For Front-end) 层之后,会有什么变化?SFF 的职责会变的单一、零运维、成本更低,这些是 Serverless 本身自带的能力,而这些能力可以帮助前端进一步释放生产潜能。开发者不再需要一个富 BFF 层,而只需一个接口或一个SFF就可以实现功能,天然解决了“牵一发而动全身”的问题。如果接口停服或者没有流量,那么所用的实例会自动缩零,也就很容易分辨出是哪一个接口函数,后期就可以删掉此接口的函数,有效提升资源利用率。

高德在 Serverless 应用上非常先进,实现了 FaaS 层与研发体系的完全对接,因此,应用从开发、测试、灰度、上线的全生命周期,到具备流控、弹性、容灾等标准化能力,所用的时间较以前缩短了 40%,大大提高了人效。

弹性以及成本

通过流量趋势数据,我们可以观察到地图场景流量特点——高峰与低峰的落差十分明显。按照传统应用的资源准备,我们需要根据最高峰的流量进行资源准备,所以到了流量低峰期,多准备的机器会有很多冗余,这就造成了成本的浪费。

针对以上情况,高德使用了阿里云函数计算,可以根据流量变化自动扩缩容。然而,提升扩缩容速度的复杂性较大,一直是大企业的专属,但函数计算可以通过毫秒级别的启动优势,将快上快下的扩缩容能力普及给用户,轻松帮助用户实现了计算资源的弹性利用,并且大大降低了成本。

可观测性

可观测性是应用上线诊断平台的必备属性,要让用户观察到 RT 变化、资源的使用率、系统应用的全链路调用,从而快速诊断出系统应用的瓶颈问题。阿里云函数计算率先与日志服务、云监控、tracing 平台以及函数工作流编排做了完美的融合,用户只需要配置一次,就可以完完整整的享受到以上这些功能,大大降低了用户的学习成本,实现了对应用程序的快速诊断。


Serverless 规模化落地的序幕已经拉开, 更多场景正在各行各业中解锁。Serverless 在高德的规模化落地,对于业务方来而言,业务迭代更快更灵活了,为业务创新创造了前提条件;对于前端开发者而言,进一步激活了开发者的生产潜能,提升了极大的能力自信。高德出行业务从 2020 年初的能力试点到“十一出行节”的自主出行核心场景,期间接入了阿里云函数计算,积累了非常宝贵的云原生落地经验,为未来业务整体上云打下了良好基础。

原文链接:https://developer.aliyun.com/article/778820?

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

高德最佳实践:Serverless规模化落地有哪些价值?相关推荐

  1. 高德最佳实践:Serverless 规模化落地有哪些价值?

    来源 | 阿里巴巴云原生公众号 作者 | 何以然(以燃) 导读:曾经看上去很美.一直被观望的 Serverless,现已逐渐进入落地的阶段.今年的"十一出行节",高德在核心业务规模 ...

  2. 最佳实践 | 如何提高落地页的转化率?这里有4个策略

    你的营销落地页转化率有多高? 落地页是潜在客户了解你的业务的第一个入口.这种第一印象会让你获得新客户或者错失机会. 没有完美的登陆页面,唯一途径是学习"最佳实践"并通过实验确定最适 ...

  3. 数人云牵手红帽Ansible:七大最佳实践解锁DevOps落地姿势

    2018年1月23日,红帽联合至顶网在上海举办了以"智能 自动 规范--迎接自动化运维新时代"为主题的"Ansible Automates"大会. 这是国内首届 ...

  4. 最佳途径 | 容器规模化落地如何四步走?

    随着云原生时代的发展,传统 IT 基础设施加速云化,云原生化成为云上的必然趋势.作为云原生代表技术之一,容器技术可帮助企业提升 IT 架构的敏捷性,加速应用创新,帮助企业更加灵活地应对商业发展中的不确 ...

  5. Serverless 如何在阿里巴巴实现规模化落地?

    作者 | 赵庆杰(卢令) 来源 | 阿里巴巴云原生公众号 一.Serverless 规模化落地集团的成果 2020 年,我们在 Serverless 底层基建上做了非常大的升级,比如计算升级到了第四代 ...

  6. Serverless 如何落地?揭秘阿里核心业务大规模落地实现

    来源|阿里巴巴云原生公众号 2020 年,新冠肺炎疫情催化数字化生活方式渐成常态.在企业积极进行数字化转型.全面提升效率的今天,几乎无人否认背负"降本增效"使命诞生的 Server ...

  7. 【深度干货】以最佳实践为石油石化数字化转型加油

    5月16日,众多石油石化行业大咖汇聚正在召开的"2019中国石油石化企业信息技术交流大会"上,深入探讨以人工智能.大数据为代表的新一代信息技术在智慧油田.智能工厂.智能管道.智慧加 ...

  8. 深度 | 容器规模化落地企业的最佳途径

    随着云原生时代的发展,传统 IT 基础设施加速云化,云原生化成为云上的必然趋势.作为云原生代表技术之一,容器技术可帮助企业提升 IT 架构的敏捷性,加速应用创新,帮助企业更加灵活地应对商业发展中的不确 ...

  9. 复旦大学肖仰华教授:知识图谱落地的基本原则与最佳实践

    肖仰华教授2.2万字长文为您深度剖析知识图谱落地的基本原则与最佳实践. 肖仰华博士,复旦大学计算机科学与技术学院教授,博士生导师,知识工场实验室负责人. 此文内容取自肖仰华教授在华为.CCF等场合所做 ...

最新文章

  1. android 百度导航滑动会异常,百度导航Android版问题集
  2. MyEclipse +Flex 整合
  3. 对实体类的所有String类型的成员变量值trim
  4. 基于ArcGIS JS API 的点击查询功能
  5. iview地区加载_LoadingBar 加载进度条
  6. 流媒体传输协议系列之--RTSP协议详解
  7. 二次开发_企业ERP系统二次开发问题的探讨分析
  8. Java 查找链表中的元素
  9. sql cte递归_准备好,开始吧– SQL Server如何处理递归CTE
  10. iOS swift语言生成条形码,可一次性生成多个!并带文字
  11. SUBSTRING_INDEX
  12. php编码怎么变西欧了403,你知道一个简单的PHP脚本在ip检查后抛出403吗?
  13. WINDOWS删除N天前的文件命令forfiles
  14. c语言实验11实验报告,c语言 实验报告11 12.doc
  15. PowerQuery 相对路径解决方案
  16. 计算机基础知识是一级吗,计算机二级和初级的区别 初级是一级吗
  17. stream流、数学类、String类的常用方法、date、密码等
  18. leetcode 1884-鸡蛋掉落-两枚鸡蛋
  19. c语言错误c2142,应数计算机程序设计(C语言)实验选编.docx
  20. 使用opencv时报错:C2065 “CV_COMP_CORREL”: 未声明的标识符

热门文章

  1. struts2 手动验证和框架验证
  2. CTO 太水!犯了低级错误,还删除代码隐藏证据!
  3. 混合运算lcd显示_各界巨头寄予厚望 MicroLED靠什么成为显示屏的未来
  4. 是栈还是队列c语言实验报告怎么写,队列和栈(C语言)
  5. linux stdin shell,关于shell:如何在Alpine Linux中修复“因为stdin不是终端而不会分配伪终端”?...
  6. mysql4.1加密_Java版Mysql4.1之前的old_password加密算法
  7. 【干货特供】dotNet core 应用部署至 centos(超详解附截图)
  8. View(视图)——ListView概述、Adapter分类
  9. UITableView UITableDataSource UITableViewDelegate的基本方法和属性
  10. 是否是工作日和节假日判定