Serverless 和 Functions
无服务器 (Serverless) and 函数(Functions) 已经成了众多行业会议中的热门以及核心话题之一。为了满足这一市场需求,供应商们也纷纷推出新产品。那么,这个市场究竟是什么?如何将函数应用于您的企业?以及如何开始运用函数?本文的目的就是帮助您确定自己在这个领域中的前进方向。
我们先来看一些市场数据,这些数据体现了人们对无服务器技术的广泛关注。
- RightScale 2018年云服务现状报告显示,无服务器计算是增长最快的一类云服务,增长率达75%。这份报告还指出81%的企业采用了多云策略。
- Digital Ocean的Currents 2018报告调查了开发人员使用无服务器计算的情况。33%的开发人员表示他们已经在无服务器环境中部署了应用。然而有意思的是,半数受访者表示对无服务器不太了解。
- 在Cloud Foundry Foundation的“PaaS、容器和无服务器技术在多平台领域的地位”报告中,46%的受访企业表示采用了无服务器计算。39%的受访企业使用PaaS、容器和无服务器技术。
我们能从上面这些数据中得出什么结论呢?
- 无服务器技术确实很热门,但真正对它很了解的人很少。
- 在企业实现软件现代化的过程中,无服务器计算扮演着重要角色。
- 大部分大型企业都在使用多云服务。
到目前为止,您所了解的无服务器应用大多属于公有云中的使用场景---这是一种试用无服务器计算的好方法,几乎没有风险,可以尝试一下!但你知道为什么无服务器计算在企业数据中心也很重要吗?
没错,函数在防火墙背后起着重大作用。我们将介绍一些采用本地函数带来潜在帮助的新场景。
在数据中心,使用函数非常方便,因为许多最重要的应用都在运行在数据中心。此外,由于数据引力的缘故,您最重要的数据也存储在这里。如果您想通过函数改进这些应用,就需要一种在本地运行函数的方法。还有一个好处就是,您可以更智能地利用IaaS占用空间。
让我们通过一些示例场景来说明为什么函数在数据中心如此有用。
我所在的行业如何在数据中心运用函数?
电信行业
我们都听说过“按次付费”(PPV)电视,这是指有线服务提供商的用户购买通过私人电视广播观看某个节目的权限。广播公司同时向所有订购节目的人播放该节目。观众可以按照屏幕上的指南,通过Web、IVR或现场客服代表购买观看节目,通常是体育赛事、音乐会或电影的权限。
平时,几乎没有关于PPV节目的交易。但如果有大型赛事或拳击比赛,PPV订购系统上的负载就会激增。例如,2017年跨界世纪拳王梅威瑟与麦格雷戈跨界大战就是有史以来的第二大PPV节目:按次购买观看权限的交易额高达430万美元,总收入超过6亿美元!
过去,企业是如何应对这些“一次性事件”的呢?企业需要确保庞大的基础架构全天候运行,即使是平常交易较少时也一样。否则,运维团队就需要在事件前一周仓促行动,加强基础架构。他们需要为服务PPV订购系统的应用程序增加更多的实例。这种不定时负载会带来很大的资金开销。
对于这种弹性场景,非常适合采用无服务器计算。假设PPV订单是一个函数,平时可以缩减为0。这样就能减少数据中心的运维开销。当PPV订单很少时,分配给PPV函数的群集可以用于其他工作负载。如果订单数量大增,这个函数就会根据需要进行扩增,以应对来自不稳定且不可预测的客户数量的请求。
这类不时激增的流量模式无处不在,下面我们再来看看医疗保险行业。
保险行业
很多人每年都会收到来自医疗保险公司的投保电子邮件。这种模式与PPV场景类似。医疗保险公司的系统在投保期会十分繁忙,尤其是在工作时间。而在投保期之前和之后,系统的使用量很小。
银行
这种偶发高峰的负载模式同样适用于金融行业。我们再举一个例子,比如企业首次公开募股(IPO)期间的机构投资。 新产品上市时,银行就如同启动了“IPO引擎”。在购买狂热期,函数会进行扩增,而在其他时候,函数会缩减为0。或者想想股票交易平台,收盘后,交易函数会缩减为0。这时,其他后端/分析应用程序就可以开始使用基础架构。
金融服务行业有相当多的批处理作业。这些批量作业也适合采用无服务器计算。
每家银行都会运行处理夜间账目核对的批处理作业。这些任务实际上只在夜间运行几小时,但往往需要相当强的计算能力。因此,运行这些进程的硬件就无法得到充分利用。企业大多使用旧式调度系统来安排这些任务。
在这个场景中使用函数后,可以更智能地利用硬件,甚至可以免除传统软件许可证的成本。cron调度程序每晚可以调用该函数进行扩增,并启动账目核对进程。处理完成后,该函数将缩减为0。
这种计划作业的模式在许多行业都很普遍。
物联网
无服务器计算提供了一种非常有效的方法,让您可以调用函数来应对各种事件,并通过循环链将函数连接在一起。那么这与物联网(IoT)有什么关系呢?
IoT领域有着大量的事件驱动型使用场景。例如家庭自动化设备。您可以在这些设备上创建各种自定义规则。当运动传感器感知到运动时,它可以触发某个事件。该事件又可以调用一些函数:向用户发送通知、开灯、向实时监控代理发送警报,甚至启动警报器。所有这些函数都可以通过循环链连接到一个工作流中!
类似的还有制造工厂中的温度传感器。当机器达到温度阈值时,系统就会触发相应的事件,通过调用函数向厂务经理发送警报,并进一步调用其他函数来禁用受影响的机器。
最后,我们来了解一下Pivotal在函数领域所做的工作。
使用riff构建函数
Pivotal正在开展riff项目,并与Google合作推出了开源项目Knative。riff和Knative共同构成了即将推出的Pivotal Function Service (PFS)的基础。
PFS适用于任何云的无服务器编程。Pivotal希望为您提供一个适用于任何云、本地和公有云环境的函数抽象。PFS是一种多语言服务,支持在您所选的框架中编写函数。它通过向您的架构添加函数来节省时间。使用PFS处理各种操作,包括Web事件、基于事件的集成和大规模流数据。
将FaaS 的未来寄希望于Knative
一些riff组件迁移到了Knative,另外一些组件保持独立。
本文引用了一些市场统计数据,这些数据显示您的同行计划在未来几年更多地使用无服务器计算。我们还列举了一些使用场景来说明函数为何如此有用。最后,我们向您展示了在生产中使用riff、Knative和PKS运行代码是多么简单。
教程:如何在数据中心内运行函数
要使用riff和Knative构建函数,我们需要一种绝对可靠的Kubernetes便利服务。最适合的就是我们的Kubernetes产品Pivotal Container Service (PKS)。我们为平台运维人员和群集管理员展示了如何在PKS上创建具有正确Knative规范的群集。
- 安装PKS
- 创建Kubernetes群集
- 访问群集
- 确认kubectl上下文指向新创建的群集
- kubectl config current-context
- 为vSphere上的群集创建存储类规范
- 安装riff CLI
- riff version
- brew install watch
- 在单独的终端中监控单元
- watch -n 1 kubectl get pod --all-namespaces
- 安装Knative和无服务器riff系统
- riff system install --node-port
部署函数需要做四件事:
- 从GitHub存储库中提取函数的源代码
- 根据java函数调用器构建容器镜像
- 将生成的镜像推送到dockerhub存储库
- 安排容器并通过Knative ingress-gateway提供函数
关于作者
Mayuresh是Pivotal的高级平台架构师,拥有超过13年的工作经验,为电信、生命科学、制造和金融服务领域的企业构建和设计高度可扩展、恢复能力强的分布式系统。他在集成领域从事过大量与高性能消息传递、缓存、流处理和API相关的工作。工作之余,他喜欢玩Xbox游戏,和女儿一起在乡间小路上骑自行车,或者烹制辛辣美食。