无服务器的未来,为快节奏的世界开发应用程序

菲尔Beevers
工程主管

无服务器已经在市场上出现了10多年,但仍在迅速发展。

在无服务器市场,我们已经看到了应用程序开发人员和运营商的角色是如何合并的。

在本课程中,您将了解到DevOps和无服务器的世界是如何变化的,以及公司如何通过授权他们的开发人员采用无服务器和DevOps最佳实践来重塑自己。

视频记录

大家好!我是Philip Davis,我在谷歌Cloud领导无服务器工程团队。我很高兴欢迎大家参加这个关于无服务器未来的会议,在这里我们将讨论无服务器技术如何帮助您为当今快节奏的世界开发应用程序。在今天的会议中,我将讨论无服务器技术是如何发展的,它现在的位置以及它未来的发展方向。因此,在我加入谷歌的无服务器团队之前,我在我们的SRE团队中度过了6年半的时间。SRE作为一门学科被设计用来解决的经典问题之一是开发应用程序的开发人员和操作系统的人员之间的激励不一致。

当然,开发人员的重点是尽可能快地开发有用的功能。而作业者则希望提高可靠性,降低风险。现在这些事情都是很有意图的。你的开发人员想要走得更快,而你的操作人员通常想要走得更慢。现在的挑战比以往任何时候都更大,实际上是在不牺牲敏捷性或可靠性的情况下构建可靠、始终在线、高度可伸缩的应用程序。现在,碰巧的是,软件从来都不容易编写、运行,甚至管理。即使随着近年来向云端和集装箱化的转移,现实通过扩展、补丁、推出和升级,当然还有处理,管理基础设施和应用程序是否非常复杂这些不可避免的基础设施故障。

然而,在过去18个月的大流行中,我们看到了对灵活性的前所未有的需求,因为经济被迫迅速转向在线模式。此外,外包基础设施的愿望也越来越强烈。

我们也看到了对响应迅速的基础设施的强烈需求,这种基础设施可以在不需要几个小时的设置的情况下迅速扩大或缩小。因此,这些都是无服务器计算所特有的挑战类型。至关重要的是,无服务器抽象了基础设施,消除了许多有关供应和容量规划的传统问题,并自动化了对基础设施故障的响应。

无服务器确实降低了操作复杂性,并允许工程师真正专注于他们可以在应用程序中增加价值的地方。使用无服务器计算,您可以在完全自动化的环境中快速构建、开发和部署工作负载。

不需要提供、打补丁或管理服务器和集群,并且内置了安全、操作和DevOps最佳实践。因此,在无服务器的情况下,云不再只是租用别人的计算机,你可以在那里运行您的集群或虚拟机。

相反,云变成了一个真正的计算工具,一个运行的地方你的应用按需,没有麻烦,只支付你使用的。

更重要的是,无服务器抽象了基础设施的故障。因此,像机器故障、网络故障,甚至整个数据中心故障都以应用程序不可见的方式处理,并且对用户的影响最小。

当然,一切都是有代价的。传统上,摆脱基础设施限制所付出的代价是缺乏灵活性。

无服务器平台通常是非常受限的环境,适合特定类型的Greenfield应用程序开发。但是在谷歌,我们的无服务器容器策略旨在消除这些限制,允许越来越多的工作负载随着时间的推移而获得完全以无服务器方式运行的好处。

我们称之为下一代无服务器。

有三个关键功能使其成为下一代服务器,而不是其他地方的无服务器。第一个是将DevOps实践和SRA经验融入其中的想法。第二个是开发者中心。最后,这个平台上的多功能性是你在其他地方找不到的。

让我来详细地谈谈每一个。首先,让我谈谈平台内建的DevOps和SRA最佳实践。因此,我们对无服务器的愿景是云操作、安全工具和CI\CD的紧密集成,这将实现更快的软件交付。通过所有这些,我们的客户可以利用谷歌的SRA经验,消除运营开销,并允许您的团队专注于他们可以增加更多价值的领域。

例如,无服务器平台可以自动伸缩。这样,您的运营团队就不需要在负载增加和减少时计划和提供容量。因此,如果您的应用程序突然开始处理大量流量,可能是因为客户数量激增,或者是因为你推出了一项新服务。无服务器平台检测额外的负载,并启动更多的资源来处理它。2022世界杯阿根廷预选赛赛程不再有可怕的超时,不再有旋转的死亡之轮或计时杯,也许更重要的是,您的运维团队不会因为提供更多虚拟机而关闭页面。

同样,一旦需求下降,平台就会处理这些资源的退役。2022世界杯阿根廷预选赛赛程因此,您不必为不再需要的计算周期付费。

现在,我们都知道,变化往往是停机的原因。因此,能够以一种让你在影响很小的情况下发现问题的方式推出新软件,对可靠性非常关键。

在我们的云运行产品中,我们有一组流hth华体会最新官方网站量管理特性,允许您在现有版本的基础上并行推出应用程序的新版本,并将一小部分流量路由到新版本。这让你的开发者可以在几次点击中快速试验和测试想法,从而获得快速反馈和敏捷性,但不会有大规模停机的风险。我们还确保您的无服务器应用程序在每一层都内置了安全性,这些特性允许您确保您的CI\CD工作流是安全的,您的秘密在运行时是安全的。当然,当您使用云运行时,您将自动利用安全特性以及谷歌的数据中心和网络。

例如,我们刚刚推出了云运行与云秘密管理器的强大集成,它允许您安全地存储和检索应用程序运行所需的秘密。您还可以使用客户管理的加密密钥保护您的数据和代码,确保只有您可以访问所有构建构件。

我们在云运行上有一个很棒的新特性,叫做二进制授权。这允许您通过策略强制执行安全的软件交付管道,确保只有适当构建并签名的容器才能将其投入生产。作为其中的一部分,我们有一个自动化的容器分析服务,它也可以在我们部署它们之前检查这些容器的各种标准安全漏洞。我们还集成了云装甲与谷歌的身份识别代理。还有我们的出口控制人员。将这些组合在一起,您就可以实施安全边界,限制那些可以访问特定服务的人,以及在生产环境中运行的服务可以访问哪些资源。2022世界杯阿根廷预选赛赛程

接下来是开发者焦点。在这个行业里,我花了很多时间招聘工程师。我可以很自信地说,吸引和留住顶尖人才真的很难。一旦你有了这样的人才,你就会希望他专注于为你的企业创造价值,而不是处理基础设施问题。现在,除了抽象基础结构之外,拥有支持快速迭代的真正出色的开发人员体验也很重要。

如果我们希望每个人都能开发出智能的、真正具有高响应性的应用程序,我们就必须让它变得简单。在大型企业中,这一切都是为了让你的技术才能更接近你产生商业价值的地方。为了方便,我们为开发者提供了选择。

他们可以使用自己喜欢的框架和工具链开始构建容器,并提交到云上运行。或者,他们可以使用我们的构建包直接从源代码创建和部署应用程序。不需要真正了解Docker、容器或集群的任何内容。

开发人员可以快速将他们的代码部署到云运行中,用一个命令进行测试和迭代,或者只是在本地构建和运行他们的容器。现在,我们还看到编排产品中的功能是开发人员生产力的关键,因为这些产品被有意地设计为使其更容易hth华体会最新官方网站快速地将现有服务组合到新的管道或新的应用程序中。特别地,我们的事件,我们的产品,我们在今年早些时候推出的,提供了一个hth华体会最新官方网站架构来触发函数或容器,当特定的事件发生在其他地方,无论是在你的应用程序中还是在基础设施中。因此,有一组丰富的事件可以在GCP的其他地方生成,也可以由应用程序本身创建。事实上,在谷歌云平台中,事件弧集成了60多个不同的事件源。这给了你巨大的能量。

一个典型的用例可能是,一旦数据上传到存储桶或数据库,就会触发某种转换活动,或者BigQuery之类的。现在,我喜欢把这些产品功能和编排放在一起,有点像云的脚本语hth华体会最新官方网站言。就像脚本语言一样,它们允许您将现有的二进制文件或服务绑定在一起,而无需修改它们。

我们在新的工作流产品中更进一步,让您可以用最少的代码将这些应用程序构建块组合在一起。hth华体会最新官方网站

您可以使用工作流来集成在云运行和云函数上运行的现有代码,或者实际上是任何基于HTTP的API服务,其中当然包括大部分GCP的其余部分。

第三点是多功能性。现在,我们对无服务器的未来的设想是,您将能够在我们的无服务器计算产品上运行用任何编程语言编写的任何类型的工作负载。hth华体会最新官方网站

今天,我们在实现这一愿景的道路上还有很长的路要走,但在未来的几个月和几年里,您将看到我们为无服务器平台添加越来越多的计算功能,最终消除所有可能会转向的传统限制人们不再使用无服务器技术。我们做过的一个例子,这是对WebSockets和流gRPC的奇怪支持。

我们最近在云上发布了这些功能,这是一个很好的例子,说明我们正在增加平台上运行的工作负载的通用性和广度。有了这些新功能,您现在可以利用无服务器的优势在web上构建响应性强、高性能的流应用程序。我们还为云运行添加了所谓的最小实例,这减少了常数时间,并允许您在平台上运行更多对延迟敏感的应用程序。

我们为什么需要这个?好吧,无服务器平台的扩展非常快,但当然,没有什么是即时的。这种扩大需要一点时间。当您的应用程序没有接收流量时,cloud run将停止运行容器的实例,这将为您节省资金。但这意味着当流量到达时,我们需要启动容器的一个新实例。当然,在这一点上,我们需要运行任何所需的初始化代码,在我们的平台和容器。您可以通过使用最小实例特性来保持容器的实例数一直在运行,从而避免第一个请求的额外延迟。

现在我要把它交给我的同事Preston,他会给你们演示这一切是如何协同工作的。

让我们来看看这些开发人员的实际经验。我在控制台中选择云运行。我们看到还没有部署任何服务。因此,让我们继续创建一个服务。我们将其称为Hello无服务器。我们可以选择一个已经上传的容器。让我们快速地看一下其中的几个设置。首先我要把它作为一个特定的恒等式来运行。因此,我将选择Hello服务帐户,我可以设置不同数量的内存或CPU,设置请求可以响应的超时时间,一次处理的请求数量,是否保持空闲或备用容器可用,以及容器数量的上限,以便我们不会使下游数据库超载。

我可以很容易地设置环境变量。我们可以很容易地创建到数据库的连接。这里我们将连接到一个演示数据库,在这里我们还可以创建允许私有网络进入VPC的网络。我们可以这样做。

我们可以限制网络到达容器的方式,我们可以启用我们内置的身份验证和授权层,以及从平台中发生的其他事件触发该服务。然后我们可以展开它。这将自动创建一个完全扩展的部署。

这里我们可以看到我们选择的那些设置的摘要信息,我们可以看到变量,现有的连接,所有这些都在这里。这是第一次修订,它现在在这个公共URL上服务流量。这就是跑步。同样,我们可以选择部署额外的修订和管理流量以及做各种各样的事情。

我们在这里建立了度量标准。如果我们愿意,我们甚至可以在YAML中查看它。现在,如果我们切换到这个项目,你可以看到我们实际上可以选择通过容器在运行时中部署几乎任何语言,你可以想象。我们已经在云运行中部署了这些语言。我们在24个国家中各部署了一个云区域谷歌云支持。

所有这些不同的语言和所有这些地区都可以将他们的所有操作汇集到云操作套件中。这里我们看到了日志记录,我们可以很容易地查询欧洲的日志,并运行此查询。然后我们看到这些结果。我们还可以构建仪表板,显示所有这些不同服务的请求延迟等信息,以及查看内存使用情况。

这些都是内置的开箱即用的指标,无论您选择哪种语言和运行时。

综上所述,我们相信未来是服务器,随着时间的推移,越来越多的工作负载将自然地转移到无服务器平台。

这将使开发人员能够以前所未有的速度构建应用程序并交付业务价值。

与此同时,它将通过采用从头开始构建到平台中的DevOps最佳实践来提高可靠性和安全性。

要么快速释放,要么死亡