为什么我们转向无服务器计算来部署自定义构建
已发表: 2018-11-22作为我们致力于让绩效营销人员做到事半功倍、事半功倍、无忧的承诺的一部分,TUNE 的团队一直在寻找新的方式来服务我们的客户。 在这种情况下,我们的解决方案工程团队发现了一种技术,可以简化他们在我们平台上部署和支持自定义构建的方式。 因此,他们现在可以花更多的时间(和更少的钱)与更多的客户合作来构建他们需要的解决方案。
在 TUNE,我们以提供灵活、全面的绩效营销平台而自豪,该平台允许网络和广告商管理他们的数字营销活动、出版商关系、支出等——直接开箱即用,无需编写一行代码. 但有时,与其他完全托管的 SaaS 系统一样,我们的客户需要自定义配置、功能或集成,而这只能通过卷起袖子并启动旧代码编辑器来实现。 最近,我们转向了一种新技术,它改变了我们构建这些解决方案的方式:无服务器计算。
在这篇文章中,我将介绍我们在自定义开发中遇到的问题,我们为设置无服务器构建过程所采取的步骤,以及这种新方法如何解决成本和规模方面的挑战。
挑战:跟上定制解决方案的需求
当我们第一次在 TUNE 启动解决方案工程团队时,我们将每个自定义客户构建视为一个单独的构建。 这些构建中的大多数都有一个前端组件,通常部署为我们平台上的自定义页面,以及一个由服务器、数据库和保持服务器最新所需的任何其他基础设施组成的后端组件-日期和操作。
起初,这种方法对我们有用。 通过拥有一个包含一些复杂自定义构建的小型精益团队,我们为每个构建配置和配置不同服务器的方法对我们很有效。 它使我们能够为我们的客户创造惊人的体验。
但是随着构建数量的增加,我们开始遇到问题:
- 服务器太多了! 可以想象,每次构建至少配置两个盒子会导致我们拥有过多的服务器。 庞大的服务器数量以及随之而来的所有麻烦(例如安全更新和备份)让我们花费的时间比我们愿意承认的要多。
- 保持这些服务器正常运行。 由于每台服务器都是自己的实体,我们负责确保每台服务器始终正常运行。
- PHP 不适合我。 我们的大部分构建都是从一个基本的 Docker PHP 镜像中衍生出来的。 但是随着我们团队的壮大,我们知道强迫人们在他们还是 Python 向导的时候用 PHP 5.0 编写他们的客户构建是没有任何意义的。
- 这越来越贵了。 由于我们所有的服务器都部署在 ec2/RDS 上,我们开始看到每月的成本很高。
- 安全第一。 由于这些服务处理敏感的客户数据,我们必须为我们的公共 URL 提供一种身份验证方法,以确保该数据的安全性。
- Cron 很难。 许多后端服务由 cron 脚本组成,我们没有有效的方法来管理它们。
随着这些挑战的出现,我们知道我们必须找到一种更简单、更具成本效益的方法来为我们的客户构建提供后端功能。 但是经过多次辩论并且没有明确的解决方案领先者,我们开始没有想法了。 (此外,随着对新定制构建的需求疯狂增长,时间肯定不在我们这边。)
解决方案:拯救无服务器计算
如果您还没有听说过无服务器计算,您可能想知道我们第一次听说它时的情况。 如何在没有服务器的情况下执行代码? (别担心;您对编程的基本理解仍然是正确的,不,我们在写这篇文章之前并没有滥用欢乐时光特别节目。)
“无服务器”对于一项新技术来说是一个非常令人困惑的术语,因为——别傻了——肯定还有一个服务器在执行代码。 那么究竟什么是无服务器?
无服务器计算是一种云计算执行模型,其中云提供商充当服务器,动态管理机器资源的分配。 –维基百科
无服务器云解决方案允许您构建和运行应用程序和服务,而无需考虑与服务器相关的麻烦。 从本质上讲,无服务器计算允许您做自己最擅长的事情:编写代码。
无服务器设置过程
为了向您展示无服务器技术如何工作的要点,我将介绍我们用于设置此功能的步骤。
注意:有许多具有无服务器功能的云提供商。 在此示例中,我们使用AWS Lambda 。
- 首先,创建一个新的 Lambda 函数并选择“ Blueprints ”。 然后,在关键字字段中输入“ http ”,然后选择 Python 或 Node microservice-http-endpoint。 (蓝图是预先制作的代码块,旨在加快开发速度。这有多棒?)一旦你做出选择,点击“配置”。
- 添加函数名称和角色。 然后选择一个带有安全选项“ Open with API Key ”的API Gateway触发器。 此 API 网关将提供一个公共 URL,该 URL 将触发您的 Lambda 函数。 添加 API 密钥提供了一种身份验证方法,强烈推荐。
- 创建函数后,您现在可以对代码进行配置。 如您所见,蓝图已经为您提供了一个很酷的入口点挂钩,允许您与Dynamo 表进行交互(如果您正在寻找添加数据库)。 加载公共 URL 时,将执行lambda_handler下的任何内容。 由于我们还添加了一个数据库,让我们去 Dynamo 并创建一个。
- 创建 Dynamo 表后,让我们从公共 URL 调用此 Lambda 函数。 返回您的函数并单击顶部的“ API Gateway ”图标。 您应该看到已经为您创建了端点和 API 密钥。
- 现在打开终端并在“ x-api-key”标题下添加 API 密钥,然后在TableName查询字符串参数下添加您创建的表名。
而已! 您现在有一个连接到数据库的工作、安全的后端。 只需要五个简单的步骤。
无服务器计算如何应对我们的挑战
现在我们已经向您展示了如何设置无服务器构建,让我们来看看这个基于云的模型如何与我们的问题清单相匹配。
- 服务器太多了! 无服务器……意味着不再有服务器,对吧?
- 保持这些服务器正常运行。 由于无服务器计算由云提供商管理,因此您可以从这些提供商(以及他们久经考验、久经考验的方法)监控您的服务器中获益。 对于那些想玩福尔摩斯的人,您还可以在Cloudwatch上查看您的函数输出的所有服务器日志。
- PHP 不适合我。 无服务器模型允许您使用 C#、Python、NodeJS、Go 甚至 Java 进行编写。
- 这越来越贵了。 使用无服务器解决方案,成本是根据执行时间(每 100 毫秒)和传输的数据量来计量的。 与每月付费(包括服务器闲置时间)不同,您只需为使用的内容付费。 每 100 毫秒执行的成本低至 0.000000208 美元,无服务器计算可以为您节省大量现金。
- 安全第一。 无服务器安全吗? 借助内置的 API 密钥身份验证系统,您敢打赌。
- Cron 很难。 使用原生构建在 Cloudwatch 上的 cron 管理系统,只需设置一个时间窗口,然后忘记它。 Cloudwatch 处理所有日志记录和执行。
最后的想法
对于 TUNE 的解决方案工程团队来说,转向无服务器计算已经改变了游戏规则。 它的易用性、成本节约和敏捷友好的特性改变了我们处理所有新客户构建的方式。 基于云的无服务器解决方案将改变服务器端计算的世界。 我不了解您,但可以肯定的是:TUNE 解决方案工程团队已准备就绪。
要了解有关TUNE 平台和我们提供的定制开发服务的更多信息,请访问我们的专业服务页面。