近日,微软宣布在其 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。
评论