什么是 Azure Functions?
你将跟随 Tailspin Space Game Web 团队,他们要讨论如何最好地满足由管理推动的新的市场需求。 团队需要将一些无服务器技术(尤其是 Azure Functions)集成到其 DevOps 进程中。
让我们与团队讨论一下。
新要求
Irwin:感谢大家参加这次紧急会议。 事态正在升温,市场营销团队已做出一些承诺,这可能会使我们所有人的工作变得复杂。 他们确实喜欢我们的网站。 他们觉得在我们为最终发布和后续事项努力时,可通过排行榜来推广游戏。 他们想进行扩展,超出我们最初的计划。
Mara:这非常棒,不是吗? 我们在使用 Azure,所以可根据需要尽可能地扩展服务。
Irwin:他们只是想让所有人都能将排行榜数据集成到其自己的应用程序中。 他们觉得,如果在我们的网站上、在游戏内、在游戏评论网站上,甚至在外部博客和个人网站上都拥有同样的排行榜选项,那真的非常酷。 我们的难题是,游戏引擎团队目前拥有生产数据库,我们要从中拉取排行榜数据。 他们觉得应继续由他们来生成和拥有 API。
Andy:Mara,你有什么看法?
Mara:我相信我们能想出一些办法。 下面是我记录的:
- 我们需要快速交付,所以必须找到一种可使用自己的代码和技能的解决方案。
- 我们需要将一小部分功能重构成独立的服务。
- 我们需要将生产中的管理开销降至最低。
- 我们需要具有大规模,但不作大量承诺。
团队成员点头表示同意。
它正在我的计算机上运行
会议结束。 第二天早上,Andy 激动地跑进 Mara 的办公室和她聊天。
Andy:我想到了! 我找到了一个可满足我们对排行榜 API 的所有需求的解决方案。 就是称作 Azure Functions 的无服务器产品。
Mara:太好了! 要多长时间我们才能准备好一些可演示的内容?
Andy:我已经准备好了。我对我们的 GitHub 存储库设置了分支,并将排行榜代码重构成了一个新的 Azure Functions 项目。 它通过一个简单的 HTTP GET 请求公开排行榜数据。 我还更新了网站,它请求排行榜时使用该终结点,而且其他任何人都可这样做。
Mara:这听起来正是我们需要的。 我可帮忙扩展现有的 CI/CD 管道来支持对其进行构建和部署,就像我们对主网站项目所做的那样。
备注
在本模块中,重点不是如何将应用连接到 Azure Functions。 如果你感兴趣,可查看源代码。 此代码使用 C# 的 Azure Functions 运行时从 Azure Functions 读取排行榜数据。
什么是 Azure Functions?
Azure Functions 是更广泛的 Azure 无服务器计算技术范围中的特定产品。 它让开发人员能够轻松地生成存在于无状态无服务器环境中的简单函数。 这些函数可由各种方法触发,例如 HTTP 请求、更改存储中的数据、接收来自队列的消息等等。 如需详细了解触发器绑定,可查看 Azure Functions 触发器和绑定概念。
Tailspin 团队选择了对此方案使用 Azure Functions,原因它满足他们的全部需求:
- 我们需要快速交付,所以必须找到一种可使用自己的代码和技能的解决方案。
- 我们可应用现有的代码将解决方案快速构建成为 ASP.NET Core 应用程序。
- 我们需要将一小部分功能重构成独立的服务。
- 我们可提供独立的函数,无需担心其他应用程序外围应用。
- 我们需要将生产中的管理开销降至最低。
- 通过 Azure Functions,无需担心托管环境。
- 我们需要具有大规模,但不作大量承诺。
- 无服务器技术的规模几乎没有限制,可比虚拟机或应用服务以更快的速度自动增加或减少。
Azure Functions 和其他无服务器技术并非总是适合每个解决方案。 稍后,我们将讨论可在哪里找到可帮助你为作业选择适当技术的资源。