腾讯云高级工程师
无服务器化后台服务已成为后台服务转型一个炙手可热的方向,相对于传统后台架构有降低运维、资源成本等诸多优点,云函数就是目前应用较为成熟的无服务器架构方案。那么云函数自身后台架构是如何实现的呢?让我们一起来探究一下
本课程为腾讯云无服务器云函数Serverless 直播系列教程的第1期。
云函数 (Serverless Cloud Function,SCF )或称为函数即服务 (Function as a Service)。Serverless 是典型且完全的云原生的架构、产品或应用。云函数是现有计算资源的最小单位,具有完全自动、一键部署、高度可扩展等特点,是轻量级服务部署非常好的选择。
那么,什么是Serverless呢?Serverless是云计算发展的一个新阶段。在这个阶段开发者不再需要关注服务端(Serverless),正如小程序开发者不再需要关注客户端(clientless)一样,Serverless的开发者同样也不需要关注服务端架构是什么。
下面我们从时间线上介绍一下Serverless时代是怎样到来的。
在前云计算的时代,每个公司都需要自己购买独占的服务器。在这个年代里,所有的基础设施都要自建,成本非常的高。并且由于独占一整台物理服务器,资源的利用率也不高,业务上线也非常的慢,对于扩容反映也非常迟钝。比如大促来之前需要提前几个月购买一批服务器,大促完了以后,可能需要经过一年的业务发展才能将这批服务器给利用起来。除了开发人员以外,还需要雇佣大量的运维人员,人员花费也非常高。
IaaS的到来,代表着云计算时代的开启,公有云厂商开始通过虚拟机的形式售卖其计算资源。用户不再需要购买服务器和牵网线了,只需要在公有云提供的控制台上点一点按钮就有一台一台的虚拟服务器了,业务上线比原来快了一些。但是买的还是独占的计算资源,购买完了以后这一段时间内这个虚拟机就属于你,如果需要扩容还是需要再购买一台台的虚拟机。大公司一般都提前先买一大批虚拟机。为了防止有突发的热点和高可用还需要做冗余。资源浪费还是很严重。
到了CaaS的时代,只是部署,和运维变得简单了,一台台虚拟机还是需要自行提前购买,闲置资源浪费的问题,没有得到根本性解决。
FaaS的时代,云厂商终于不再交付一台台物理设备的使用权了。无论是物理机还是虚拟机还是容器,云厂商都不直接售卖,而是以一种能力的形式提供计算服务。比如用户将代码包提供过来,云厂商提供扩缩容和高可用的保证,至于底层是怎么运行的,用户不再需要关注。Serverless在这个阶段开始兴起。
FaaS是Serverless发展的重点时期。在前云计算的时代,用户需要先去买服务器,开通网络,安装操作系统,安装运行时,再运行应用代码包;IaaS的时代,需要先申请虚拟机,安装操作系统,安装运行时,再运行应用代码包;PaaS的时代,需要先申请虚拟机,关联PaaS系统,再运行应用代码包。而在FaaS的时代,用户直接提交代码包就可以运行了。就好像现在手机应用商店下载一个应用就可以使用,不需要像当年跑到应用的官网,按手机架构下载代码包,拷贝到手机上,再进行安装才可以运行。
云函数具有5大优势。
优势一:有了无服务器云函数之后,我们可以做到“零”运维,因为交付的单位不再是虚拟机或者容器了,应用服务器以下的东西用户就碰不到了,云厂商会把这一部分的运维做好。但是“零”是有条件的,因为有业务运维和运维开发云厂商没办法包办。在这样的情况下,用户的运维部门就可以做更精细化的运维专注于业务了。
优势二:毫秒级的部署,因为部署粒度变小了,而且云厂商会提前起计算单元,所以启动的时候只需要将一个函数可能就几十行代码加载到内存,所以部署速度自然快。
优势三:成本将会更低廉。大量的用户的代码都在同一个集群中运行,原来闲置的资源都被利用起来了。相当于共享服务器,所以同一个集群的资源利用率变高了,就相当于更多的用户和你一起均摊这一部分计算资源的成本。而且因为用户代码不运行时不收钱,所以对用户来说也变得更省钱了。
优势四:开发者可以更聚焦于业务逻辑。因为不需要关注操作系统和网络了,代码就只需要关注业务逻辑。
优势五:无穷弹性计算能力,云厂商会提前申请一个超大的集群,一般用户的业务扩容的时候不会存在资源不够的情况。
对于有非常明显波峰波谷的业务,使用云函数是非常划算的。如果使用虚拟机的话,用户可能需要2-3倍最高调用量的独占虚拟机,并且为之付费。但是如果使用云函数,云厂商可以根据请求量来调度出相应的计算资源量来支持业务。请求量下降以后,这些计算资源又会调度给其他用户使用。计费只收使用到的资源。
在 Serverless 技术趋势大热的今天,已经涌现出很多面向开发者的解决方案和工具。目前比较常见的开发工具中,主要分为 CLI 命令行工具以及 IDE 插件这两种形态。虽然展现方式不同,但本质上都是降低了本地开发 Serverless 项目的门槛,并在云平台提供的基础能力上,封装了更多组织和编排的方式。
腾讯云 Serverless 本地开发工具(SCF CLI)以开源项目的形式维护,目的在于让用户方便的实现函数打包、部署、本地调试,也可以方便的生成云函数的项目并基于 demo 项目进一步的开发。SCF CLI 通过一个函数模板配置文件,完成函数及相关周边资源的描述,并基于配置文件实现本地代码及配置部署到云端的过程。
在开发过程中,开发者会选取自己熟悉的 IDE 代码编辑器进行代码编写。为了便于更快速直观的进行本地开发和调试,腾讯云 VS Code 插件支持一键调试的能力。首先,可以打开刚创建函数的文件目录,在插件中自动识别这个函数。之后可以通过 F9 进行断点,F5 启动调试能力。函数调试过程中的输出会打印在 terminal 中,并且支持单步调试,查看变量和堆栈等信息。
除了上述两种工具以外,腾讯云还与Coding合作推出了云端的WebIDE,方便更直观的查看线上的代码。
课程最后展示了3个SCF应用实践的案例,欢迎大家观看完整视频课程!
Q:云开发和云函数的关系是什么?
A:云函数是一个计算的资源,云开发是在云函数的上层装上数据库、COS而推出的一套解决方案。云开发是利用了云函数的计算能力。
Q:无服务器云函数目前支持哪些语言?
A:支持多种语言,包括Python 2.7 & 3.6、Node.js 6.10 & Node.js 8.9、Java 8、Php 5 & Php 7,还有一些语言在陆续开发中。