作者 | 太浪
继容器编排、AI 工程化之后,全球顶级云厂商都瞄准了这块无人区。
回顾云计算十几年的历史,或者也可以视其为一部“为开发者服务简史”。
没有应用程序的计算机,就像一台大型计算器。
自世界上第一台计算机诞生,它就离不开程序的驱动。
随着人类科技的不断发展,PC 和 Internet 陆续问世,进入全民拥抱信息化的时代。人们用计算机来办公和娱乐。于是,计算机程序开始变成了一门生意。程序还逐步演进为“软件”,变成了最赚钱的产品之一。
开发一款软件,需要购买和维护应用(application)、数据(data)、运行库(runtime)、中间件(middleware)、操作系统(OS)、虚拟化技术(virtualization)、服务器(servers)、存储(storage)、网络(networking)共计 9 种设备/技术。这要求开发人员既要懂软件开发,又要懂软件测试,还要懂软件运维。
而随着用户对软件功能要求的增多,要求开发人员不断对软件进行改动,使得软件变得越来越复杂,计算越来越繁琐,存储和处理的信息越来越多,以至于开发组织越来越难,最终引发“软件危机”,包括很多软件项目开发时间大大超期,软件开发难度越来越大。
人们开始研究、改变软件开发的技术手段和管理方法。
1968 年,北大西洋公约组织提出“软件工程”的概念。从 1970 年代起,软件产生进入了软件工程时代。每隔 5-10 年,软件工程就会获得一次突破性发展。
从最初的机器指令开始,发展到面向对象,再到云计算,目的都是让软件开发变得越来越简单,越来越能迎合用户的要求。
云计算厂商出现后,将其中某些层次整合起来(比如存储、服务器、操作系统)打包成一种服务对外出售。企业/开发者只需直接租用这些服务,像缴水电费一样即可。
在云计算发展的初期,云计算以满足企业增量 IT 需求为主。但随着云计算的逐步渗透,企业逐步实现全面上云,从基础设施上云、到平台系统上云、再到业务应用上云。相对应的,云计算厂商推出了 IaaS(基础设施即服务)、 CaaS(容器即服务)、PaaS(平台即服务)、SaaS(软件即服务)等服务形式。
十几年前,云计算技术诞生,掀起了物理主机托管的基础设施变革风潮。云计算实现了计算资源与物理硬件的解耦,虚拟化技术的发展运用,使得云主机 ECS 成为企业的基础设施。
随着容器技术普及,PaaS 平台逐渐兴起。PaaS 是构建在 IaaS 之上的一种平台服务,操作系统安装、监控和服务发现等功能。
云厂商提供了应用所依赖的服务、运行环境和底层所需的计算资源后,企业/用户只需部署自己的应用即可,使得应用的开发、部署和运维的整体效率再度提升。
但尽管 PaaS 平台已经广泛应用,但仍有优化空间,是否能有一种全新的架构,将业务与基础设施完全剥离?无服务器架构(Serverless )应运而生。
Serverless 的概念最早要追溯到 2012 年。Ken Fromm 在《软件和应用的未来是 Serverless》中率先提出了 Serverless 的概念,但却并未引起广泛关注。
所谓“无服务器”,并不是不需要服务器,而是把这摊子高技术含量的事儿“外包”给了更专业的人。企业/开发者自己担心的东西变少了,云厂商操心的事情增多了。
一般情况下,一个应用程序要上线,除了写出代码,还要关心应用部署服务器,以及对服务器进行维护操作,比如资源申请、环境搭建、负载均衡、扩缩容、监控、日志、告警、容灾、安全、权限等。
Serverless 架构的出现,把计算资源和系统环境与应用程序解耦,让开发者在构建应用的过程中,无需关注计算资源的获取和运维,只需专注于应用逻辑的开发。
这就好像专业相机与傻瓜相机/全自动相机的区别。使用专业相机,需要手动调节景深、光圈、快门速度、ISO 感光度、焦距、曝光度等各种参数,容易让人不知如何下手。而使用全自动相机/傻瓜相机,只要找好角度、将镜头对准被摄物,按下快门键,相机就会自动完成所有的步骤,操作十分简单。
在 Serverless 架构中,计算资源是作为服务而不是服务器的概念出现的。公有云厂商按照计算次数收费,业务代码仅在调用时才激活运行,当响应结束占用资源便会释放,真正做到了弹性伸缩与按使用付费。开发者只需要将代码包装成函数,上传到公有云平台,即可以弹性、可靠的方式运行代码,根据时间驱动执行计算。
既缩短了应用上线时间,也降低了运营成本,Serverless 架构因此受到广泛关注,并被认为是云计算未来的趋势。
即便如此,Serverless 依然没有统一的定义,各云厂商都在推广布道、抢占地盘。
广义的 Serverless 包含 FaaS(Functions as a Service,函数即服务)和 BaaS(Backend as a Service,后端即服务)两个方面。
FaaS 是 Compute as a Service(计算即服务)的一种形式,是一项基于事件驱动的函数托管计算服务。于 FaaS 而言,写出一个函数,就是一个功能。开发者要做的,只是写下函数,然后再用配置文件告诉服务器如何让它运行。
BaaS 可让开发人员访问各种各样的第三方服务和应用。常见的 BaaS 服务包括数据库管理、云存储、用户认证、推送通知、远程更新、消息队列,大多由云服务商提供,用户无需关心和运维底层基础资源。在 BaaS 中,Serverless 功能通常通过应用编程接口(API)调用。
因此,只有实现了 FaaS+BaaS,才能说真正实现了 Serverless。
2014 年,AWS 推出了首款函数计算产品 Lambda。Lambda 就是一款 FaaS,它彻底改变了对软件交付方式的看法。
Lambda 的设计理念很简单,因为云计算最终是面向应用提供服务,而应用由函数(functions,即业务逻辑的载体)+ 数据(data,即跟业务相关的输入与输出),以及这两者之间的交互——即事件(events,常见的事件如增加、变更、删除等)组成。
换言之,对于一个应用来说,除了 functions、data、events 这三个东西是根本之外,其他无论什么代码和框架,无非都是胶水或者UI罢了。
既然如此,理想的情况是用最少的时间写胶水,将更多的时间投入到应用的核心逻辑当中。
在 Lambda 上,用户无需预置或管理服务器即可运行代码,pay as you go。只要上传代码,Lambda 会处理运行和扩展高可用性代码所需的一切工作。
在亚马逊对 Serverless 探索了两年后,云计算巨头谷歌、微软等也陆续推出 Serverless 架构的函数服务。2017 年,国内的阿里云也推出首款 Serverless 产品——函数计算 Function Compute(简称 FC)。
在阿里云看来,Serverless 是一种面向未来的云计算技术,是一种“来了就用,功能齐全,用完即走”的全新计算提供方式。Serverless 只为实际产生的资源消耗付费,而无需为闲置的资源买单。省时省心省力省钱,帮助客户实现“用云自由”。
国内云厂商在创新上也不遗余力,阿里云函数计算可做到单实例启动仅需 200 毫秒,1 分钟可弹出 20000 实例,并针对客户需求,率先提供单实例多并发模式,和业界首个支持预留按量实例混合伸缩、NAS 文件系统挂载功能。
目前,阿里云函数计算日调用次数超过 120 亿次,不仅支撑了 双11 百万 QPS 洪峰,也是国内服务规模最大的 Serverless 厂商,国内市场份额第一,业务规模年同比增速超过 300%。
经过三年多时间的追赶,阿里云已经成从“跟随者”变为“领导者”,与 AWS 并驾齐驱。
权威咨询机构 Forrester 近期公布的 2021 年第一季度 FaaS 平台评测报告显示,在 19 个评估项目中,阿里云 Serverless 产品拿到了 8 项满分和 12 项最高分,综合产品能力位列全球第一、战略愿景全球第二。与亚马逊 AWS、微软 Azure 并列 Serverless“领导者象限”。这也是首次有国内科技公司进入 FaaS 领导者象限。
目前,阿里云 Serverless 产品已经大规模使用,可能在你不知道的时候,你已经用上了它。比如,抢优惠券、大促秒杀、微博吃瓜、网课直播。
在抢优惠券这个场景中,假设晚上 8 点钟下发优惠券,预估会有 5 万人来抢,但实际情况突然来了 8 万人,之前预备的资源没法承担 8 万人,导致另外 3 万人看到界面是 404,或者页面显示“等一等”。阿里云函数计算能做到毫秒级的扩容、伸缩。不用提前预估,来多少个人,都能兜住。企业只要接入阿里云提供的 API 接口,每个用户都能加载出抢券页面。
目前,已经有数万家企业客户成功运用阿里云 Serverless 实现降本增效,全面覆盖前端全栈,小程序、新零售、游戏互娱、在线教育等场景行业。
阿里云在 Serverless 上取得的成绩并非一蹴而就。
阿里云是国内最早布局 Serverless 的云厂商 ,但当时国内对 Serverless 的认知还是不足。
阿里云 Serverless 团队卯足了劲儿,要打造国内最好的 Serverless 产品。可当产品面向市场,已经过了新鲜期,结果不甚理想,“你发现做出来的东西不完全适用中国客户的要求,如果要改就是很大的改动,我们相当于从头重新来了一遍。”这让 Serverless 技术一号位杨皓然(花名:不瞋)不得不开始重新思考。
最困难的时候是 2019 年。那会儿,市场对 Serverless 接受度不高,研发人员也开始干销售的活儿,找工单、给客户打电话、写文档。到 2019 年 6 月份,所有研发人员都出去找市场机会,拜访客户,做布道,但转化效果都不高。
在将函数计算在阿里集团内推广,并与集团原有的 FaaS 产品进行整合后,事情迎来转机。这一步很关键,不瞋团队根据反馈对技术和产品进行了大幅改进,而来自兄弟团队的诉求也是很多企业客户的诉求。
2020 年 双11,阿里巴巴在淘宝、支付宝、钉钉、高德、飞猪等核心业务上实现 Serverless 规模化落地,成为国内 Serverless 首次大规模实践的里程碑。
使用函数计算 FC,实现了 双11 会场弹窗秒弹,也接住了 双12 的流量,助力飞猪火车票基础服务升级,保障了高德十一出行节。Serverless 不再仅仅是小程序的“专属名词”,还有更广泛的应用空间,如电商大促、音视频转码、AI 算法服务、游戏应用包分发、文件实时处理、物联网数据处理、微服务等场景。
这给还在观望的大企业们吃了颗定心丸。
如今,汽车厂商的车载系统、车联网应用也在用函数计算 FC 提供计算支持。
新冠疫情让远程办公、在线教育、在线游戏的应用需求短期内增加。业务规模的爆发式增长,对每一个需求的响应需要更加及时,这对应用架构的弹性,对底层计算的速度,对研发效率的提升等提出了更高的要求,驱动业务加速向新技术架构演进。
2020 年,阿里云神龙计算平台的性能升级为 FC 的产品能力带来了大幅提升。阿里云 Serverless 从原来的虚拟机架构演进到“神龙裸金属服务器+袋鼠安全容器架构”。新冠疫情期间,函数计算 FC 应用在数字抗疫中,助力 20 万+ 企业远程复工。
比如,教育场景中,老师对开课这件事是有时效性要求的,这就要求后台能够短时间内启动可能数千个实例进行响应,这也恰恰是函数计算 FC 的用武之地。
如今,阿里云 Serverless 的背后,是四大核心技术——神龙计算平台、袋鼠沙箱容器、盘古存储平台和洛神网络平台在提供支撑。为了良好的用户体验,阿里云 Serverless 团队还将按量计费的颗粒度缩小到毫秒。现在, Serverless 正在继续和容器、微服务等生态融合,降低开发者使用 Serverless 技术的门槛。
阿里云 Serverless 的目标是,帮助更广泛的客户实现向新技术架构的平滑迁移,让 Serverless 渗透到所有的云应用中。
为了这片星辰大海,不瞋和他的团队一直在路上。
参考:
1、《无服务器架构白皮书(2019年)》,云计算开源产业联盟OSCAR
2、《AWS Lambda》,孔令贤
3、《云计算对传统软件工程的影响》