4月26日,腾讯云宣布,正式开放国内首款FaaS(Function as a Service,函数即服务) 产品——无服务器云函数(SCF,Serverless Cloud Function)。用户只需要上传代码即可以最简捷的方式使用腾讯云高效稳定的全球基础设施,并可实现毫秒级的弹性伸缩,同时该服务兼具成本低廉的特点,代码按需运行,空闲时不收费。经测试,按调用次数和运行时间付费,在每个月请求不足百万时,使用无服务器云函数比使用多台云主机搭建集群的成本减少约70%.
(图:腾讯云官网已开放无服务器云函数的使用申请)
无服务器云函数(SCF,Serverless Cloud Function)是腾讯云提供的无服务器(serverless)执行环境,帮助用户在没有购买和管理服务器时仍能运行代码。用户只需要使用云平台支持的语言编写核心代码及设置代码运行的条件,代码即可在腾讯云基础设施上弹性、安全地运行,并可完全管理底层计算资源,包括服务器CPU、内存、网络、代码部署、弹性伸缩、负载均衡等服务。使用无服务器云函数将可免除所有运维性操作,企业和开发者可以更加专注于核心业务的开发,实现快速上线和迭代,把握业务发展的节奏。
相比云主机,在微服务架构场景下无服务器云函数展现了更为明显的弹性轻便的优势,为中小型开发者和大型服务的部分模块设计提供了新的思路和技术支持。同时在互联网、金融、电商等领域,在移动及Web服务后端、视频图像处理、数据分析等场景下,如果用户需要更易用、弹性、低价的服务,选择无服务器云函数的体验更佳。
腾讯云专家工程师刘颖认为,无服务器云函数从底层开始变革计算资源的形态,为软件架构与应用服务部署带来新的设计思路,极大降低云计算的使用成本,推动全行业的业务创新步伐。他表示,腾讯云无服务器云函数在QQ、微信等腾讯海量业务中运行已久,具备深厚的技术积累和应用实践,希望通过这项技术的开放,让大中小型企业及全体开发者均可享受这项技术。
Serverless:云端新革命
从行业趋势看,Serverless是云计算必经的一场革命。
云计算把传统的物理服务器拆解成了更加弹性易用的虚拟机(VM)和容器(container),虚拟化的对象从硬件设备到运行环境,用户越来越不需要关心底层基础设施。然而,开发者仍然避免不了花费大量精力处理与服务器相关的、无差异化的运维操作。
过去在设计一个服务时,开发者需要预估使用多少公有云的或私有云的服务器,用什么形式的持久存储,网络带宽需要多大,如何在服务请求波动时进行服务伸缩。处理这些复杂的问题对业务本身并没有决定性的助力。有研究称,开发团队真正花在开发业务代码的时间只有39%,其他时间都被处理部署变更、突发事件等占用了。
在这样的背景下,新的服务形态–函数即服务(FaaS)于2012年应运而生。用户只需要编写并上传最核心、最有竞争力的代码,无需配置或管理服务器即可运行,仅按实际运行收费。并且平台自动管理其他的工作如高可用部署、流量分发、弹性伸缩等。
无服务器云函数在移动及Web服务后端、视频图像处理、数据分析等场景下,其易用、高效、弹性、按需、低价等优势都能很好地满足多样化的需要。例如,证券公司分析每12小时的交易内容,找出交易量top 5并根据用户进行个性化推荐。使用无服务器云函数进行周期性的统计任务,并响应用户点击流,即可轻松实现随用随启、任务完成后立即释放的弹性模块。
轻量易用:解决上云第一步问题
云函数轻量易用的特点使没有接触过云计算的开发者也能轻易上手使用。用户只需要简单地改造在本地环境运行正常的代码,并打包上传至腾讯云平台,即可以极低的价格(根据运算时间不同价格不定,一般调用费用在4元/百万次左右)在腾讯云遍布全球的基础设施上运行代码。
例如,使用Google的开源图片压缩算法Guetzli应用于生产系统中帮助压缩用户上传的图片,只需要完成:第一步,将代码及依赖打包上传至云函数平台;第二步,配置一个COS Bucket为触发器。完成上述两个简单的步骤后,即可在应用(如相册、头像应用、商品系统等)中完成用户上传图片后自动进行高保真度的压缩,对应用后台的存储空间和传输的带宽使用率上都有较大的优化。
微服务:无服务器云函数是好搭档
目前,开发者正在将目光投向了微服务(Microservice)这一模块化、灵活、动态的解决方案,腾讯云无服务器云函数是实现微服务的最佳方式。
随着业务的发展,代码常呈现出几何级别的增长速度。在传统的单体式服务(Monolithic)架构中,各个模块相互强依赖、代码间耦合度高。对于开发和运维人员来说,维护困难、部署耗时等弊端急需解决。
在这一背景下,尤其在业务快速变化时期,使用微服务来构建业务敏捷的IT系统是保持业务竞争力非常有效的手段。这样模块化的方式使得整个项目分散成为多个部分、使用不同语言、由不同业务部门的不同开发团队独立完成,帮助缩短项目的生命周期,加快项目开发效率。
通常情况下,应用逻辑层是无状态(stateless)的,缓存、日志、数据库等全部通过外部的独立资源来支持,这样才能保证在业务请求突增时,服务能迅速扩展。各个模块之间通过RPC(Remote Procedure Call,远程过程调用)调用或消息中间件互相通信,这样每个模块都是自治(self-managed)的。
因此,腾讯云无服务器云函数是实现微服务的好的方法之一,其与生俱来的事件驱动(event-driven)和无状态(stateless)属性正好满足微服务架构的要求。每个服务(即函数)都拥有几乎无限的处理能力,能跟随业务请求的波动自动完成扩容和缩容。如果采用云服务器构建服务模块,即使在使用量很低时(据测算,数据中心服务器的平均利用率仅在15%左右)仍要支付相应的小时费用。而云函数按实际使用量收费,运行完毕后立即结束计费,价格非常容易预测,没有请求就没有成本支出,价格优势明显。
整体而言,云函数可实现独立开发、简化测试和加速部署等一系列优点,可助力企业在关键时期快速上线和迭代,为初创期的产品提供了很好的解决方案。