通过听到无服务器计算这个词,我们大多数人可能会误解我们正在进入一个新的计算时代,我们不需要服务器来运行应用程序。尽管该术语用词不当,但无服务器计算描绘了云成熟的新阶段。此功能专为那些热衷于了解下一级别云计算的开发人员而设计。让我们深入研究以下部分。
- 无服务器计算
- FaaS模型
- 无服务器计算的优势和局限性
- AWS 无服务器平台
无服务器计算
无服务器计算是一种云计算执行模型,可以灵活地开发、部署和运行应用程序,而无需担心配置服务器。它帮助开发人员专注于他们的核心产品,而不是花费时间来配置、扩展和管理服务器。
这种云计算执行模型并没有消除对服务器的需求。但它提供了一个完整的基础设施,需要通过在云基础设施之上添加一个抽象层来运行您的应用程序。一些提供无服务器框架的云服务提供商包括 AWS、Microsoft Azure 和 Google Cloud Platform (GCP)。
无服务器计算的特点
- 无服务器计算允许您在不管理服务器的情况下运行代码,并且功能基于事件执行而不是一直运行。
- 无论使用何种语言或框架,您都可以运行任何类型的应用程序。
- 它有助于根据请求自动缩放函数。您无需进行任何进一步的配置。
- 这些功能可以由不同的事件类型以及使用 API 网关触发。
- FaaS模型
理解无服务器计算的最佳方式是解释 FaaS 模型。我们大多数人都熟悉术语 SaaS、IaaS 和 PaaS。在进入 FaaS 之前,让我们先看看这些术语。
软件即服务 (SaaS)是一种云计算服务,其中软件集中托管,该服务基于订阅通过互联网交付。 SaaS 的一些示例是 Google Apps、Dropbox、WebEx 等。
基础设施即服务 (IaaS)提供基础设施资源,并管理和扩展资源。在这里,您只需为使用的内容付费。 IaaS 的一些示例是 AWS EC2、Azure 虚拟机等。
平台即服务 (PaaS)提供应用程序开发所需的软件和基础设施。 AWS Beanstalk、Azur 应用程序服务就是其中的一些例子。
那么,让我们进入 FaaS 模型。它是一种函数即服务模型,允许开发人员开发、运行和管理应用程序,而无需担心应用程序基础设施。它基于称为函数的单一用途代码块的概念。在这里,模型使用事件驱动的架构来处理这些函数,其中每个函数通过触发事件来执行——例如 API 请求、数据库中的事件、计划事件等。并且,无服务器应用程序是通过组合多个功能(FaaS)。
与 FaaS 模型相关的另一点要考虑的是它是无状态的。由于 FaaS 模型中的函数在临时容器中运行,因此您将无法访问先前运行的状态。但是,您可以使用 Amazon S3 等外部源来存储和检索数据实例。这些数据可以在函数内共享。
如果不仔细看,你可能会觉得 PaaS 和 FaaS 几乎是相似的。但是详细的分析将帮助您区分 PaaS 和 FaaS。让我们花点时间了解一下它们之间的区别。
- 尽管 Paas 可以轻松部署和管理 Web 应用程序,但它并不能灵活地针对每个请求启动和关闭整个应用程序。另一方面,FaaS 提供了做同样事情的灵活性。
- 在 PaaS 基础设施中,您必须依赖其他基于 PaaS 的解决方案(例如 AWS Elastic Beanstalk)来处理应用程序扩展。但是这些解决方案不够灵活,无法处理单个请求,而 FaaS 基础架构提供了处理应用程序扩展的有效方法。
无服务器计算的优势和局限性
到目前为止,我们已经讨论了无服务器计算和 FaaS 模型。现在,让我们看看无服务器计算的优势和局限性。
无服务器计算的优势
无服务器计算提供了许多好处。让我们来看看其中的几个。
- 降低运营成本:在 FaaS 中,预定义的运行时(基础设施仅使用一段时间)和共享相同的运行时有助于显着降低运营成本。
- 快速开发:由于基础设施由云提供商管理,开发人员可以专注于核心功能。
- 扩展成本:它有助于自动水平扩展,并负责扩展和缩减基础设施。与 PaaS 产品相比,此产品显着降低了扩展成本。
- 更轻松的运营管理:FaaS 提供了最简单的应用程序部署和管理解决方案。最重要的是,您可以在短时间内将您的经营理念变为现实。
无服务器计算的局限性
尽管无服务器计算有很多好处,但也有一定的局限性。让我们来看看以下几点。
- 基础设施控制:由于无服务器架构由云提供商监控,因此您无法控制基础设施。
- 长时间运行的应用程序:由于其预定义的运行时功能,它不适用于长时间运行的批处理操作,其中大多数云提供商都有超时期限。
- 供应商锁定:主要限制之一是供应商锁定,您无法从现有云提供商切换到另一个云提供商。
- 冷启动:由于 FaaS 是事件驱动的架构,因此引发了对冷启动的关注。在一段时间不作为之后,响应事件可能需要更长的时间。
- 共享基础设施:由于无服务器应用程序使用共享基础设施,许多应用程序可以同时运行,而不管业务所有权如何。因此,您的代码可能会受到相邻应用程序的高负载生成函数的影响。但是这个问题不仅存在于无服务器产品中,也存在于许多其他共享服务产品中。
AWS 无服务器平台
AWS 提供了一个完全托管的无服务器平台来部署和运行您的应用程序。让我们来看看 AWS 无服务器平台提供的服务。
计算: AWS 提供诸如 AWS Lambda 之类的服务来运行代码而无需配置或管理服务器,Lambda@Edge 来响应 Amazon CloudFront 事件生成的事件,AWS Fargate 为容器提供无服务器计算引擎。
存储: AWS 提供 Amazon Simple Storage Service (Amazon S3) 来确保安全、持久、高度可扩展的对象存储,而 Amazon Elastic File System (Amazon EFS) 提供简单、可扩展、弹性的文件存储。
数据存储: Amazon DynamoDB 提供 NoSQL 数据库服务,Amazon Aurora Serverless(适用于 Amazon Aurora)允许自动启动、关闭数据库以及扩大或缩小容量。 AWS 还使用 Amazon RDS 代理提供数据库代理服务。
API 代理: Amazon API Gateway 服务可帮助开发人员创建、发布、维护和保护任何规模的 API。在这里,它允许您通过有效处理流量来处理数十万个并发 API 调用。
应用程序集成:它促进了诸如 Amazon SNS(发布或子消息传递服务)、Amazon SQS(消息队列服务)、AWS AppSync(以安全地访问、操作和组合数据)和 Amazon EventBridge(从不同源到您的 AWS 环境)。
编排: AWS Step Functions 编排分布式应用程序和微服务的组件。
分析: AWS 提供 Amazon Kinesis(用于 AWS 上的流式数据)和 Amazon Athena(用于分析数据的交互式查询服务)等服务来处理数据分析。
除了上述服务,它还为无服务器应用程序开发过程提供了广泛的工具。这些工具包括持续集成和测试工具、部署、监控和诊断工具、框架和 IDE 插件。
概括
无服务器计算提供了显着的优势,例如快速开发、无服务器部署、更低的运营成本和更轻松的运营管理。然而,这并不意味着没有操作。事实上,您不需要系统管理员来管理基础设施,但您应该监控某些操作以确保您的应用程序正在运行。不过不用担心,FaaS 本身提供监控数据服务,帮助您监控您的应用程序。最后要注意的一点是,这可能不是应对每项挑战的正确方法,因此请聪明地做出明智的选择。准备好利用无服务器技术,专注于编码过程而不是配置服务器。