“即使云计算已经兴起,但是大家的工作仍然是围绕服务器,不过,这个不会持续太久,云应用正在朝着无服务器的方向发展。”
这是KenForm在年的一篇《WhyTheFutureofSoftwareandAppsisServerless》文章中提出的关于未来云计算的观点。
ServerlessFirst:从云厂商主张到客户主见
Serverless与身俱来的弹性能力和容错能力,很好的契合了企业在线业务的弹性和稳定性的双重诉求,成为企业云上架构演进的新方向。
时至今日,随着越来越多的大中型企业将传统后端领域对扩容有灵活需求的执行单元剥离出来,运行在Serverless架构上,以及更注重研发和交付效率的创业团队将业务全部Serverless化,ServerlessFirst的理念更加深入人心,使得越来越多的云上工作负载运行在无服务器上。
数字上的变化代表了技术的市场成熟度。
根据Datadog今年的一份报告,Datadog上一半的AWS客户使用了Lambda,80%的AWS容器客户使用了Lambda,而且这些用户每天调用函数的次数是两年前的3.5倍,运行时长达小时/天。再看看国内的市场,根据CNCF今年发布的《中国云原生调查报告》,31%的企业正在生产中使用Serverless技术,41%正在评估选型,12%计划在未来12个月内使用。
10月21日,云栖大会云原生峰会现场,阿里云Serverless重磅发布了一系列技术突破,集中解决了行业面临的难点和痛点。随之而来的是各大企业在Serverless上的大规模实践,例如网易云音乐使用Serverless技术构建离线音视频处理平台、南瓜电影7天全面Serverless化,并基于此,建立了业务的监控、发布和弹性系统。
从First到Faster,FC7大技术突破,跨越影响Serverless发展的绊脚石
Serverless的本质是通过屏蔽底层的计算资源,来实现业务层开发的专注度和自由度。但越是往上抽象,云厂商在底层的实现就越是复杂。函数计算将服务进一步拆分到函数的颗粒度,这势必会给开发、运维、交付等带来新的挑战,例如如何对函数进行端云联调、如何对函数进行可观测和调试、如何优化GB级别的镜像冷启动?这些以往在服务的颗粒度时,都不是问题的事情,成了Serverless大规模落地企业核心生产业务的绊脚石。
阿里云函数计算团队自去年进入Forrester领导者象限后,继续攻克业内的这些技术难题,并在此次云栖大会重磅发布了7大技术创新和突破。
ServerlessDevs2.0:业内首发Desktop,支持端云联调、多环境部署
开源近一年,Serverless开发者平台ServerlessDevs2.0版本正式发布。相比1.0,2.0在性能、使用体验实现全方位提升,业内首发桌面客户端ServerlessDesktop,对桌面客户端进行了精细设计兼具美感和实用主义,具备更强的企业级服务能力。
作为业内首个支持主流Serverless服务/框架的云原生全生命周期管理的平台,ServerlessDevs致力于为开发者打造Serverless应用开发一站式服务,ServerlessDevs2.0提出多模式调试方案,包括打通线上线下环境;本地对接线上环境并进行调试的端云联调方案、本地直接进行开发态调试的本地调试方案、以及云端运维态调试的在线调试/远程调试方案等。新版本增加多环境部署部署能力,ServerlessDevs2.0已支持一键部署框架30余种,包括Django,Express,Koa,Egg,Flask,Zblog,Wordpress等。
业内首发实例级别可观测和调试
实例是函数资源最小的可被调度的原子单位,类比容器的Pod。Serverless将异构基础资源高度抽象,因此“黑盒问题”是Serverless大规模普及的核心落地之痛。业内同类产品均没有透出“实例”概念,也从未在可观测功能中将CPU、内存等指标透出,但可观测就是开发者的眼睛,没有可观测,何谈高可用呢?
函数计算重磅发布实例级别可观测能力,对函数实例进行实时监控和性能数据采集,并进行可视化展示,为开发者提供函数实例端到端的监控排查路径。通过实例级别指标,您可以查看CPU和内存使用情况、实例网络情况和实例内请求数等核心指标信息,让“黑盒”不黑。同时,函数计算将通过开放部分实例登录权限,做到既能观测,还能调试。
业内首发固定数量、定时、水位自动伸缩的实例预留策略
函数计算冷启动受到多个因素影响:代码和镜像大小、启动容器、语言运行时初始化、进程初始化、执行逻辑等,这依赖用户和云厂商的双向优化。云厂商会自动为每个函数分配最合适的实例数量,并进行平台侧的冷启动优化。但对于某些在线业务时延非常敏感,云厂商无法代替用户进行更深层的业务优化,如对代码或依赖进行精简、编程语言的选择、进程的初始化、算法优化等。
业内同类产品普遍是采用预留固定实例数量的策略,即让用户配置N个并发值,除非手动调整,否则在分配了N个实例后不会再伸或者缩。这种方案只解决了部分业务高峰期的冷启动延时,但大大增加了运维成本和资源成本,对红包大促等带有不定期峰谷的业务,其实并不友好。
因此,函数计算率先将部分实例资源的调度权限授予用户,允许用户通过固定数量、定时伸缩、按水位伸缩、混合伸缩等多维度的实例预留策略,来预留适量函数实例,分别满足业务曲线相对平稳(如AI/ML场景)、峰谷时间段明确(如游戏互娱、在线教育、新零售等场景)、突发流量无法预估(如电商大促、广告等场景)、业务混杂(如Web后台、数据处理等场景)等不同场景的诉求,从而降低冷启动对时延敏感型业务的影响,真正实现弹性和性能兼顾的终极目标。
业内率先推出GPU实例
函数计算提供弹性实例和性能实例两种实例类型,弹性实例规格从MB到3GB,隔离粒度做到了整个云生态最细,能真正实现普适场景下资源利用率%;性能实例规格区间范围包含4GB、8GB、16GB和32GB。资源上限更高,主要适用于计算密集型场景,如音视频处理、AI建模和企业级Java应用等场景。
随着专用领域硬件加速的蓬勃发展,各GPU厂商均推出了视频编解码专用ASIC,比如:英伟达从Kepler架构集成视频编码专用电路、从Fermi架构集成视频解码专用电路。
函数计算正式推出了基于Turning架构的GPU实例,使得Serverless开发者可以将视频编解码的workload,下沉到GPU硬件加速,从而大大加快了视频生产、视频转码的效率。
最高可交付2w实例/分钟
所谓“无服务器”,并不是说软件应用不需要服务器就可以运行了,而是指用户无须关心软件应用运行时,涉及的底层服务器的状态、资源(比如CPU、内存、磁盘及网络)和数量。软件应用正常运行所需要的计算资源由云计算厂商动态提供,但实际上,用户还是会关心云厂商的资源交付能力,以及应对突发流量场景下资源不足导致的访问波动。
函数计算依托于阿里云强大的云基础设施服务能力,通过神龙裸金属资源池和ECS资源池双池互备,在业务高峰期,实现最大交付达2w实例/分钟,这近一步提升了函数计算在客户核心业务上的交付能力。
VPC网络建连优化:从10s优化至ms
当用户需要在函数中访问用户VPC中的资源,例如RDS/NAS时,需要打通VPC网络。业内FaaS产品普遍采用动态挂载ENI的方式来实现VPC打通,即在VPC创建一个ENI,挂载到VPC中执行函数的机器上。该方案让用户能非常简单地联动后端云服务,但ENI挂载的速度一般需要10秒以上,在延时敏感业务场景下带来极大的性能开销。
函数计算通过将VPC网关服务化,实现计算和网络解耦,计算节点的伸缩不再受限于ENI挂载的能力。该方案由网关服务负责ENI的挂载、网关节点的高可用和自动伸缩,而函数计算专注于计算节点的调度,最终实现VPC网络建连时,函数冷启动时间降至ms。
GB级别镜像启动:从分钟级优化至秒级
函数计算在年8月率先发布了容器镜像的函数部署方式,AWSLambda在年12月Re-Invent,国内友商在年6月也相继宣布了FaaS支持容器的重磅功能。冷启动一直都是FaaS的痛点,引入比代码压缩包大几十倍的容器镜像后,加重了冷启动过程带来的时延。
函数计算创新性的发明了ServerlessCaching,根据不同的存储服务特点,构建数据驱动、智能高效的缓存体系,实现软硬件协同优化,将CustomContainer体验进一步提升。到目前为止,函数计算已经将镜像加速优化到了较高的水准。我们在函数计算的公开用例(