简化开发人员的应用程序部署-从分时到无服务器的简短历史

我已经在IT行业工作了几十年,在不断追求使计算更容易、更便宜和更长的正常运行时间的过程中,我帮助发起了一波又一波的技术。这一切早在我进入IT行业之前就开始了,并将在我退休后继续下去。然而,了解我们已经走到哪里,看看我们已经走了多远,了解我们如何继续让它变得更好,总是好的。毕竟,计算只是手动任务的自动化,作为帮助组织更好地服务其客户或公民的一种方式。
为什么自动化很重要
计算机的最初应用是为了满足政府的需要,这并不奇怪。对这种自动化的需求很快扩展到企业,但要做到这一点,计算必须变得更便宜、更可用和更灵活。
在计算的早期,每个客户都必须拥有并管理自己的计算机系统。没有服务提供商。然后是大型机的分时共享,这为服务提供商提供了一个开展业务的切入点。后来出现了附加的分区/虚拟化技术,例如带有管理程序的虚拟机,容器然后是无服务器。本文的重点是概述这些“虚拟化”技术的进展,这些技术使计算更敏捷、更可用、更灵活、成本更低,以及为什么这对开发人员和运营商都很重要。我们的目标是进一步将我们从平凡的任务中解放出来,让我们去做真正的增值工作,比如创建和部署新的应用程序,这些应用程序为企业提供服务,从而更好地为终端客户服务。

第一次大跃进
20世纪70年代数据中心的主要进步是从单个用户或每台机器单个应用程序到称为分时共享的共享服务模型的飞跃。与今天每个用户的专用个人电脑不同,20世纪50年代至70年代的大型计算机非常昂贵,仅硬件就耗资数百万美元。通过打孔卡或纸带输入供单个用户使用的单个程序所花费的大量空闲计算时间使情况变得更糟。这些大型单用户/单应用程序机器的投资回报很低。这样就导致了分时,多个用户可以通过计算资源的分数分配同时使用一台计算机,并且只对这种使用收费。2022世界杯阿根廷预选赛赛程

来源:电脑记录
分时共享是我们今天所知的虚拟机、容器和无服务器计算的先驱。然而,分时是一种更粗糙的实现,所有可用资源在不同任务的用户之间快速切换。2022世界杯阿根廷预选赛赛程用户体验到足够快的响应时间,使他们相信自己是唯一的用户。然而,只要出现故障,分时系统就会影响所有用户。分时共享使开发人员能够访问稀缺的大型机资源,但总是会突破可接受延迟的界限。2022世界杯阿根廷预选赛赛程
虚拟机
虚拟机、容器和无服务器计算通过最小化系统故障对不同用户的影响来解决这种脆弱性。虚拟机是IBM为大型机发明的,后来由VMware在x86工业标准计算上推广开来。虚拟机提供单独的计算实例,每个实例都有自己的操作系统和应用程序堆栈,作为将资源分配给特定工作负载或用户的一种方式。2022世界杯阿根廷预选赛赛程这有助于开发人员避免他们开发的应用程序被分时延迟所困。

来源:普遍服务基金的探险家
容器
容器通过为应用程序提供单独的实例来更有效地分配关键资源,但2022世界杯阿根廷预选赛赛程允许所有实例共享操作系统的单个副本,从而最大限度地减少系统开销负担。容器的执行速度也比虚拟机快,并且可以更快地上下旋转,因为它们不需要管理程序。考虑到容器的小尺寸,可以在单个服务器上运行数百或数千个容器,而不是在单个服务器上运行几十个虚拟机。领先的容器产品有码头工人以及用于单节点的开放容器计划(OCI)和用于集群容器管理的Kubernetes。

来源:码头工人
容器为您提供了部署特定版本软件包的自由,包括操作系统、编程语言和运行时环境。当然,这种自由是有代价的——容器需要努力建立和维护它们。此外,当您将单片应用程序划分为更小的微服务时,每个微服务都需要自己的容器,这些容器随后需要某种类型的编排来协同工作。所有这些容器都需要自己的操作系统更新、安全补丁等。
| “虽然你可以配置容器编排平台来自动处理流量波动(也就是自我修复和自动扩展),但检测这些流量模式变化并上下旋转容器的过程不会是即时的。在没有容器相关基础设施运行的情况下(例如,在没有流量的情况下)完全关闭也是不可能的。总会有运行时成本。——Phillip Muns, Serverless Inc. |
Serverless
虚拟化的下一个发展方向是无服务器(有时称为功能即服务或FaaS)。Serverless功能小于容器microservices并且不需要配置系统依赖项,因此可以更快地部署它们。容器被配置为在任何x86工业标准机器上的任何当前Linux或Microsoft Windows Server操作系统的某些版本上运行,而无服务器通常部署在公共云服务上,并与该公共云的架构紧密相连。因此,尽管它们可能更灵活,但不同的无服务器实现可以被认为是专有的,并且不能跨不同的云供应商平台移植。
目前,在供应商支持和生态系统锁定方面存在一些限制。编程语言和运行时受限于提供程序支持的任何一种(尽管有一些变通方法(或“shims”)可用于克服这些限制)。事件源(触发所有功能)通常是特定云提供商提供的服务。

来源:XenonStack
尽管有这个名字,无服务器功能仍然在公共云提供商的服务器上运行。然而,该产品的重点是提供后端服务,以便在使用时启动和运行应用程序,但将开发人员的配置负担转移到任何特定硬件上——因此称为无服务器。无服务器产品的一个例子是Google Cloud Functions。无服务器的美妙之处在于,软件开发人员可以专注于业务逻辑,而不必担心基础设施,因为公共云供应商提供了基础设施。
| “在这种情况下,如果你需要自动检测和即时处理流量模式变化,无服务器是很好的选择。如果没有任何流量,应用程序甚至会完全关闭。对于无服务器应用程序,您只需为您使用的资源付费;2022世界杯阿根廷预选赛赛程无需使用,无需成本。——哈维尔·拉莫斯,ITNext |
无服务器不是容器的替代品。相反,两者都是具有不同目的的工具,在某些情况下可以组合使用。稍后会详细介绍。
无服务器关注于应用程序的无状态、短期实例,这些应用程序是作为小服务(或功能)套件实时构建的,这些小服务(或功能)经常被提供,然后在不再使用时退役。这些无服务器应用程序是围绕业务功能和它们的功能的激活可以由事件触发并且可以被完全自动化的部署机制独立部署。典型用例包括:
- 无状态HTTP应用程序
- Web和移动后端
- 实时或事件驱动的数据处理
无服务器功能的消费者根据这些功能的计算时间使用情况而不是租用的固定数量的资源(例如处理器内核数量或分配的网络带宽)计费。2022世界杯阿根廷预选赛赛程由于无服务器旨在自动向上和向下扩展,因此基于使用或消费的模型很有意义。没有钱浪费在未使用的、租用的固定计算容量上。为了自动伸缩资源,不需要遵守任何策略先决条件。2022世界杯阿根廷预选赛赛程因此,可以根据需要逐步扩展容量,从而加快进入市场部署新业务功能的时间。缺点是,当一段时间内没有调用无服务器功能时,云提供商将取消分配的资源,以避免过度供应,并释放资源供其他无服务器应用程序使用。2022世界杯阿根廷预选赛赛程然后,当您想要重新创建相同的无服务器功能集时,您将需要从头开始,这通常被称为“冷启动”。
如前所述,无服务器和容器不是彼此的技术继承者或替代品,而是针对不同的用途。在某些情况下,您实际上可以结合使用它们来帮助获得两者的好处。
以下是谷歌的Phil Beevers在JFrog的SwampUp 2021会议上的会议演示视频,该视频提供了无服务器的一个很好的概述。”无服务器的未来,为快节奏的世界开发应用程序.”
混合无服务器容器与谷歌云运行
其中一个例子是容器和无服务器已经结合起来了Google Cloud Run.在Google Cloud Run中,您可以通过HTTP请求调用容器的执行,而不是像在传统的无服务器中那样基于某些事件触发函数集合。通过在容器中部署应用程序,您可以选择维护持久性,而不是在不活跃使用时自动停用实例。此外,与传统的无服务器部署相比,使用Google Cloud Run,您可以更好地控制操作系统和运行时版本,以及分配的硬件类型和容量。
有关Google Cloud Run如何工作以及如何使您受益的更多信息,请参阅Google的Guillaume Laforge和Ayrat Khayretdinov的SwampUp 2021会议视频。”实现无服务器化,在云上运行Artifactory和container.”

来源:Rob Morgan)
对于开发人员来说,当您需要应用程序的持久性、分配硬件的灵活性或需要迁移遗留服务时,可以选择容器和容器编排。当您需要开发速度、自动扩展和显著降低运行时成本时,请选择无服务器。基于容器的混合无服务器产品(如Google Cloud Run)将使您能够在不活动的情况下维护实例,同时还可以根据消费计费自动扩展。
在虚拟化计算的每个阶段,从分时到虚拟机,从容器到无服务器,我们都解决了成本或应用程序易于部署的不同瓶颈,或者两者兼而有之。
- 使用分时技术的重点是降低分配给用户或应用程序的硬件成本,以允许更多的开发人员访问计算
- 使用虚拟机的目标是将软件从底层硬件中抽象出来,提高基础设施的利用率,并允许调整实例的大小和迁移
- 通过容器,我们获得了应用程序跨硬件的可移植性,甚至从传统平台到现代平台,以及启动数百甚至数千个实例的能力
- 有了无服务器,我们已经实现了事件触发功能自动组装到应用程序中的能力,并且以非常细粒度的方式只支付您所使用的费用
- 使用混合无服务器容器,您可以获得无服务器的灵活性,但同时具有容器的持久性
要了解更多关于无服务器创新的信息,以及它可能给开发人员或开发人员经理带来的好处,请下载名为“无服务器成功指南.”