何时&如何部署Serverless

我们可以说:Serverless并不适用于所有IT基础设施。但随着Serverless日趋流行,很多企业正在错误地使用该平台。

“go serverless”的好处之一是由于第三方维护了实际的物理服务器,以至于该平台取消了很多与Serverless管理相关的繁琐任务。典型的即用即付模式,通常由FAAS平台上的临时容器组成,并带来了额外的好处–在提升由弹性价格模型所节约成本的同时,减少冗余服务器容量。

然而,不幸的是,人们认为Serverless可以解决许多部署和资源管理问题,但事实并非如此。

”对于大多数企业而言,Serverless平台相对较新,由于其可扩展和易于部署的特性,大多数开发人员使用它进行部署实施。但后来发现,由于冷启动时间及每个请求启动运行的成本,使得确保低延迟响应时间极其困难”, Clubhouse的工程副总裁Zach Ozer表示,“优化(如预热脚本和减小的包大小)可以提供帮助,当缓存是一种选择时,CDNs是很宝贵的。但是,开发人员在使用Serverless之前应该认真考虑他们的性能需求,因为标准的HTTP服务器可能更适合他们的需求”。

当然,Serverless可以提供如上所述的巨大优势。特别当您不构建或部署简单的代码或应用程序。对于从事试点项目的开发人员或小团队来说,没有什么比构建Web服务应用程序更容易了。然后,在一个Serverless平台上以较少的代码部署和存储应用程序,并且有许多可用的框架可以做到这一点。

Delphix的首席技术官EricSc hroc表示有了Serverless框架和FaaS提供的其他功能,许多与将应用程序和软件部署扩展到服务器相关的任务变得非常简单。“但在很大程度上,Serverless解决了这个问题,只需将复杂性推入云的连接组织或其他将这些功能连接在一起的东西”,Schrock说,“例如,谁负责管理这个分布式架构中的数据模式转换?它就像是《绿野仙踪》里的男主站在窗帘后面,当你往窗帘后面看时,你会发现它就像胶水一样,需要将它们粘在一起才能让它发挥作用”。

领先的科技公司已经成功地建立了Serverless,以及大规模的K8S和微服务平台- 并且一直对他们的成功大声疾呼。但对于大多数企业而言,将Serverless构建到大规模不一定代表是要遵循的业务案例。

“Netflix、谷歌和亚马逊都承受着来自媒体不成比例的压力。但实际情况是,他们的方法和架构实际上并不适合大多数公司,例如在公司内部开发应用程序,使用滚动升级的连续CI / CD Serverless部署,这些都是不必要的”,Schrock说,“但是,无论是作为云生态系统中的粘合剂,还是当您部署的东西超出了规模,Serverless都是有意义的,因为这样做的好处是值得的”。

了解您的需求

Serverless平台要成为主流平台,还有很长的路要走。同时,在此之前,企业的DevOps通常需要在整个行业范围内更深入地了解Serverless究竟是什么以及它如何才能帮助他们。

“在这一点上,我认为很多人仍在做出假设,而不是衡量有关Serverless如何帮助他们的实际业务要求”, MapR企业的架构副总裁Jim Scott说,“仍然没有足够多的人去做它或者要求他们有足够的理解说‘是的,这正是应该做的’”。

如果Serverless适合一个企业,那么DevOps的就应该知道他们到底是在寻找什么,无论他们是否第一次使用Serverless。“他们应该知道做得是否正确,也不用担心将代码封装在容器里,比如”,Scott 说,“软件被自动部署到一个容器中,就像存储一样,然后它被集成到一个更大的基础设施中”。

标准云API的案例

当Serverless适合企业时,明智的做法是避免被锁定在单个FaaS插件与/或API中,尤其是对于多云部署。

“当谈到Serverless时,我认为人们希望使用标准的API,这样他们可以自由移动,就像能够在多个云和内部环境之间运行相同的软件一样”,Scott说,“否则,如果他们想在serverless的两个地方运行相同的业务逻辑,他们就必须得重写”。

先用后付

HashiCorp的创始人兼联合首席技术官Armon Dadgar表示,开发商往往最先从Serverless直接获益的,但他们在敏捷性方面获得的优势可能会在公司的其他地方付出代价。“通常,这意味着开发人员直接提交容器或功能,而不遵循既定的过程”, Dadgar表示,“虽然一开始速度更快,但这可能会在操作上造成混乱”。

Dadgar表示,采用Serverless的企业不应该忘记所有标准的最佳实践,包括拥有适当的CI / CD管道,对代码进行版本控制,使用基础架构作为代码来定义应用程序的部署方式以及使用适当的机密管理。“否则,开发人员将迅速采取行动,制造出需要运维和安全团队清理的混乱局面”。

Niraj Tolia的联合创始人兼首席执行官Kasten说,考虑到目前生态系统还处于起步阶段,企业还应该研究一下Serverless平台如何全面地融入他们的基础设施产品。

“部署平台作为工具链的一部分通常会更有意义,” Tolia说。“此外,组织需要进行仔细的工作负载分析,以防止在成本和复杂性方面出现意外情况。”

当然,保持可观察性和监控能力也至关重要。

“人们在部署Serverless技术时经常将他们的思维局限于Serverless功能背后的一小段代码,将维护和理解代码的实际操作留在以后再考虑。在生产环境中,特别是在生产事故中,这可能会对根本原因分析和调试了带来很大困难”,LightStep的联合创始人兼CEO Ben Sigelman说,“通过将可观测性构建到Serverless软件中,它就可以作为大型分布式应用程序中一个可见,可维护的部分”。

K8S“方程”

尽管存在上述警告,但Serverless可以在敏捷性和成本节约方面提供潜在的巨大飞跃。但Serverless提供的功能不一定是与K8S或微服务平台兼容或独有的。最初,K8S用于协调多个容器以部署大型,可扩展和复杂的应用程序,InfluxData的物联网开发人员布道师David Simmons说,Serverless适用于为应用程序部署特定和小功能。

“所以,假设你有一个扩容而复杂的应用程序,它可以同时处理成千上万个交互”,Simmons说,“你可以将该应用程序的各个部分分成单独的服务,并将它们分布到一堆容器中,所有容器都由K8S协调,以便它们可以根据需要进行缩放”。

在单个数据库查找函数的例子里,它可以实现为Serverless组件或单个功能,例如在数据库中查找某人的名字,Simmons表示。它只有在有人直接调用该函数并且没有底层容器运行它时运行。“如果没有人调用这个函数,它就永远不会出现。现在,这个函数可以在一个由K8S管理的容器中运行的数据库中查找某人”。Simmons说,“它们不是互相排斥的”。

作者:B.Cameron Gain

来源:容器时代,ID:CaaSOne

K8S中文社区微信公众号

评论 抢沙发

登录后评论

立即登录