什么是无服务器? 初学者指南

什么是无服务器?

无服务器计算(或简称无服务器)是一种执行模型,其中云提供商无需基础设施即可动态管理和分配资源。 资源分配基于您的应用程序或网站的实时使用情况。 运行此类托管时,您只需为我们的代码使用的资源量付费。

从无服务器平台“提供”的所有内容都由事件触发的无状态计算容器提供。 这些触发事件与在普通服务器上运行的事件相同; HTTP 请求、数据库事件、监控警报、cronjobs 等等。

在大多数情况下,发送给云提供商执行的代码通常采用函数的形式。 因此,无服务器通常被称为“功能即服务”或“FaaS”。 这也是您最有可能读到的一个术语。 如果我们考虑过渡到无服务器环境,有几个想法需要注意。

在本文中,我们将介绍无服务器计算的一些基础知识。 什么是无服务器,它的用途是什么,它的优缺点是什么。

过渡到无服务器的注意事项

微服务

您的应用程序应该以函数的形式构建。 大多数开发人员将他们的应用程序部署为单个 Rails 应用程序,但在无服务器中,我们会将代码调整为微服务架构。 您可以将整个应用程序作为一组单独的函数运行,但不建议这样做。

无状态函数

如前所述,函数在无状态容器内运行。 请注意,您的函数很可能每次都在新容器中被调用,因为我们无法在事件完成后运行代码。

冷启动

因为我们的函数在无状态容器中运行,所以函数会在事件触发时做出响应。 每次发生这种情况时,都会发生少量延迟,这就是将其称为“冷启动”的原因。

当一个函数完成时,我们的容器将在返回无状态模式之前保持活动状态一小段时间。 如果在容器仍在运行时触发了另一个事件,容器将响应更快。 这称为“暖启动”。 冷启动将持续多久完全取决于用于编写函数的云提供商和编程语言。

现在我们知道了无服务器的工作原理,让我们回顾一下无服务器架构的一些优缺点。

无服务器架构的优点

  • 降低成本 – 无服务器架构的主要优势在于,我们无需为硬件付费,也无需在我们的服务未被使用时付费。
  • 最少的修补和更新 – 更新 LAMP 堆栈和应用安全补丁已成为过去。 使用无服务器架构,这完全掌握在您的云提供商手中。
  • 更快的修订 – 无服务器架构可以减少“上市”实施所需的时间范围。 开发人员可以在小阶段添加、修改或删除代码,而不是复杂的部署过程来滚动更改。
  • 简化代码 – 使用FaaS,开发者可以制作独立执行的简单功能,实现单一角色。
  • 可扩展性 – 您计划构建一个非常受欢迎的应用程序,经过营销活动,它爆炸了! 没有什么可担心的。 无服务器架构具有根据当前流量自动扩展的能力。

无服务器架构的缺点

  • 行动不便 – 更换云供应商可能是一项艰巨的任务。 由于其他云提供商的架构或服务可能与您的应用程序或功能不兼容,因此可能需要对应用程序进行全面检修。
  • 冷启动 – 如果您不经常调用您的函数,则可能会出现显着的性能下降。 这可以使用小的、精确的函数来避免,但这并不容易,因为低效率可能会蔓延。
  • 复杂 – 无服务器的学习曲线可能很陡峭。 由于这是一项相对较新的技术,开发人员需要时间来测试应用程序以确保功能按预期处理数据。 例如,某些提供商具有时间限制功能,将功能限制为 5 分钟。 如果您有一个函数需要超过该时间范围来运行,您将需要更小的函数,或者您将需要重写代码以适应此限制。
  • 记录和监控 – 目前,在许多无服务器环境中,日志记录和监控得到良好支持的程度充其量是有限的。 然而,这一领域的工作正在继续扩大。
  • 测试 – 一些无服务器平台使远程测试成为可能,但通常仅在组件(功能)级别,而不是在应用程序级别。 在最好的情况下测试复杂的应用程序而不必在提供商处设置单独的帐户可能很困难,因此测试不会影响生产。
  • 调试 – 由于其无状态方面,调试分布式无服务器应用程序通常很困难。 一种选择是使用允许逐行检查的运行时调试器。

现在我们已经回顾了无服务器的一些基础知识,并评估了几个优点和缺点,让我们来看看部署无服务器应用程序时的一些最佳实践方法。

最佳实践

15 个最佳实践基准

  • 可观察性 – 观察您的无服务器架构以分析系统在各种事件和功能期间的行为方式。
  • 最低权限 – 仅允许访问功能所需的内容。
  • 限制权限范围 – 仅启用所需的权限以实现所需的目标。
  • 限制代码修订 – 永远不要更改完整的代码。 观察函数的行为和资源使用情况,然后进行优化。
  • 限制功能参数 – 要提高性能,请减少代码必须执行的任务数。
  • 本地测试 – 不要将更改推送到实时环境。 在本地测试调整和更改。
  • 使用 API 安全性 – 通过将 API 网关用作反向代理,将 API 网关用作安全手段
  • 限制漏洞 – 清理输入事件以限制注入尝试
  • 监控 – 在规划阶段预先建立监测参数。
  • 日志记录 – 在规划阶段预先建立记录功能。
  • 强制执行代码完整性 – 遵守应用程序安全的标准编码约定。
  • 限制部署 – 将新代码部署限制在非工作时间,并且绝不会在周末之前。
  • 运输安全 – 使用已知方法来验证传输中的数据
  • 监禁和隔离 – 确保机密存储在安全的位置,并且只能由所需的功能访问
  • 细粒度部署 – 练习细粒度的变化。 限制批量部署功能,以防止在代码遭到破坏时滥用。

结论

我希望这篇文章有助于了解无服务器是什么以及它的传统工作方式。 由于它是一项较新的技术,才上市三年左右,对于大多数开发人员来说,无服务器架构仍然相当复杂,并且与其他任何事物一样,它也存在一些缺陷。 同样,我们确信无服务器将成为托管的主流。

因为我们以成为 Hosting™ 中最有帮助的人而自豪,我们的支持人员一年 365 天,每周 7 天,每天 24 小时随时为您提供帮助。

如果您是完全托管的 VPS 服务器, Cloud 专用,VMWare 私有 Cloud,私人父服务器或专用服务器所有者,并且您对实施上述任何想法感到不舒服,我们可以通过我们的票务系统 [email protected]、电话(800-580-4986)或通过 在线聊天 协助。

我们为您努力工作,以便您可以放松。