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

什么是无服务器?

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

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

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

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

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

微服务

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

无状态函数

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

冷启动

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

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

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

无服务器架构的优点

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

无服务器架构的缺点

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

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

最佳实践

15 个最佳实践基准

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

结论

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

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

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

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