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

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

第一次飞跃
20世纪70年代数据中心的主要进步是从单用户或每台机器上的单个应用程序跳到被称为分时的共享服务模型。不像今天每个用户的专用PC的成本相对较低,20世纪50 - 70年代的大型机是非常昂贵的机器,单是硬件就花费了数百万美元。更糟糕的是,通过穿孔卡或纸带输入单个程序需要大量的空闲计算时间,供单个用户使用。这些大型单用户/单应用程序机器的投资回报率很低。从而导致分时,多个用户可以通过计算资源的部分分配同时使用一台计算机,并且只按使用收费。2022世界杯阿根廷预选赛赛程

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

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

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

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

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