近日,微软宣布在其PaaS产品中增加Azure Functions服务。微软最初是在2016年3月以预览形式推出了这项服务。该服务为开发人员提供了一个事件驱动的无服务器计算平台,让组织只需要为他们消耗的计算资源付费。
\\由于Azure Functions是一项PaaS服务,所以客户不需要为峰值用量做准备或者为传统的维护操作担忧。Azure平台首席项目经理Yochay Kiriaty解释说:
\\\\\Azure Functions可以按需缩放,因此,你不需要针对最大规模的场景构建基础设施,也不需要为你不使用的资源付费。你还可以设定一个日最大支出上限,防止Function失控。用户也不必再担心升级和维护框架、操作系统或基础设施。Functions会为你处理底层的基础设施。
\
Azure Functions可以使用C#和Javascript编写,包括F#、PowerShell、PHP、Python、CMD、BAT和Bash等在内的其他语言还处于预览状态。起初,开发人员在Azure Portal上的一个Web浏览器中编写Azure Functions。但在其正式发布以后,微软为喜欢在IDE中构建Azure Functions的开发人员提供了另外的工具。该工具尚处于预览状态。现在,安装Visual Studio Tools for Azure Functions之后,开发人员可以在Visual Studio 2015中构建Azure Functions了。
\\ \\图片来源:https://blogs.msdn.microsoft.com/webdev/2016/12/01/visual-studio-tools-for-azure-functions/
\\开发人员可以在本地运行Azure Functions,并在Visual Studio中进行调试,然后通过Web Deploy——Publish特性将它们部署到Azure。在部署到Azure之后,开发人员仍然可以将调试器连接到云实例,并通过Visual Studio调式它们。
\\ \\图片来源:https://blogs.msdn.microsoft.com/webdev/2016/12/01/visual-studio-tools-for-azure-functions/
\\最近,InfoQ有机会和Azure Functions项目经理Chris Anderson取得了联系。下面是他向我们介绍的一些内容。
\\InfoQ:关于无服务器计算的讨论很热烈。您认为这一切是因为什么?
\\\\\Chris Anderson:我认为,围绕无服务器计算的讨论归根结底是因为,无服务器计算为开发人员提供了他们从未有过的体验,让它们可以更快速、更轻松地构建应用程序。可以更快地做事和构建东西让他们非常兴奋。此外,当使用托管服务及无服务器计算时,他们可以更轻松地操作和管理他们的应用程序,因为这些服务的设计已经尽可能地为你承担了那种职责。也就是说,当我们采用无服务器计算时,我们可以更快地创新,更轻松地管理和扩展我们正在构建的应用程序。我认为,还有一个原因是,围绕着无服务器计算的概念,已经形成了一个很棒的社区。这两个原因一起促成了这种热烈的讨论。
\
InfoQ:你们的客户使用Azure Functions做什么?您能向我们介绍一些比较有趣的案例吗?
\\\\\Chris Anderson:Plexure.io使用Azure Functions的方式就是一个有趣的案例。这是一个IoT驱动的CRM平台。该平台的其中一项功能是帮助客户消费与顾客互动相关的IoT信息,简化编排,并对该IoT数据作出回应。当他们了解了Azure Functions,他们觉得可以用它托管他们在工作流(基于Azure Logic Apps,微软的无服务器工作流集成服务,其中包含一个可视化设计器和超过80个开箱即用的连接器)中用到的部分动作。他们还希望让他们的客户可以在Plexure的在线门户上编写自定义的Function。这让他们的客户可以在他们的门户上做更多的事,而不必在某个地方搭建一个自定义的API服务用来响应WebHooks。Azure Functions已经成为做那件事的其中一种最好的方式,那样,他们就避免了中间环节。由于我们的门户UI是开源的,他们可以重用我们的Angular2组件,快速在自己的在线门户中获得这种体验。
\\另外一个有趣的案例是我们对Microsoft Bot Framework所做的事情。当Microsoft Bot Framework团队寻找一种最简单的方式部署和运行机器人程序时,他们将无服务器计算视为合理的解决方案。Azure Functions作为基本的计算层,托管集成在一起的Azure Bot Service,并提供一些其他的功能,如按需扩展,支持持续集成和交付。
\\不过,在我看来,最有趣的是,像小规模的数据转换或扩充这样的最普通、最基本的场景在规模很大并结合了其他托管服务的情况下是什么样子。我们看到许多客户使用Azure Logic Apps执行大量的集成工作负载,在这个过程中,他们可以轻松地为自定义的动作编写Functions。例如,可以非常快地构建一个应用程序,读取有关特定主题的所有推特,使用Logic Apps和Azure Functions对它们进行处理,辅以类似Cognitive Services这样的服务用于情感分析和人脸识别,并输出到PowerBI。对于IoT也是一样,当你将类似IoT Hub、Stream Analytics和Azure Functions这样的服务结合起来,IoT数据分析变得前所未有的简单。尽管Function并没有做什么特别有趣的事情,但事实是,它很容易配置和运行,就是说,我已经充分领略到类似IoT Hub和Steam Analytics这样的托管服务所带来的好处。
\
InfoQ:你见过你们的客户使用Azure Functions实现了什么规模的(事务处理)?
\\\\\Chris Anderson:大多数客户都是一天触发几个事件。他们使用Functions简单地扩展他们已有的服务,随着他们越来越多地采用无服务器模式,并构建越来越多的功能,他们对Functions的使用会逐渐增加。我们最大的用户每天要执行上亿次,每秒成千上万次。
\
InfoQ:你们最近发布了Visual Studio工具。为什么提供这种工具对你们的客户而言特别重要?
\\\\\Chris Anderson:从我们着手Azure Functions相关工作的第一天开始,我们就把提升开发人员的开发效率和敏捷性作为基本任务。我们希望开发人员可以构建东西,而且我们希望他们可以使用他们已经在使用的工具快速地完成构建。我们经常使用的一个口号是“5秒钟开始,5分钟见价值”。当然,只是使用一个文本编辑器也可以快速地构建,但根据我们的经验,许多人都希望有一个像Visual Studio这样功能更为强大的东西来提高他们的开发效率。另外,我们还投入资源研究通用的本地工具和VS Code集成,那样我们就可以在其他操作系统上为客户提供支持。本地调试就是那种不错的本地编辑体验的一部分,如今,我们已经支持在Visual Studio内进行在线调试。我已经逐渐对它形成了依赖,在构建演示程序或者帮助客户时,它可以帮助我捕捉一些我自己创建的、比较难以发现的Bug。
\
InfoQ:Azure Functions目前已经支持绑定到类似Azure Event Hubs、Azure Service Bus Queues and Topics和Azure Storage这样的服务。你们还会寻求在这项服务中增加其他一些事件触发器吗?
\\\\\Chris Anderson:我们提高开发效率的承诺不会变,我们已经提供并且将继续提供其他的绑定,让Functions可以更便捷地连接服务和数据。你将会看到,我们会在更多的触发器上投入资源,如像Document DB和Azure IoT Hub这样的Azure服务。另外,我们还会更紧密地集成那些也可以和我们通信的服务,如Azure Monitoring以及像Office 365和Dynamics 365这样的SaaS解决方案。我们还会研究特定于Functions的触发器,比如,当Function中有错误可以有一个触发;使用Azure Functions更好地管理Azure Functions。
\