Mike Roberts: 什么是无服务器架构?

本文涉及的产品
简介:

就像很多软件发展趋势一样,业界并没有对“无服务器”有一个明确的说法,即使它真的表示以下两个不同而又重叠的领域也不会对此有所帮助:

无服务器先用来描述那些显著或完全依赖于第三方应用或服务(“在云端”)的应用程序。这些应用程序依赖于第三方来管理服务器端逻辑和状态,它们都是典型“富客户端”的应用程序(你可以想象为单一页面的Web应用程序或移动应用),并采用云平台提供的生态系统,包括可访问的数据库(如Parse、Firebase)、认证服务(Auth0、AWS Cognito)等。这些类型的服务以前被描述为“(移动)后端即服务”。我在文中会用“BaaS”缩写来代替这样的服务。 无服务器还表示那些有服务器端逻辑的应用仍然需要由开发者来编写。不同于传统的架构,它运行在无状态计算的容器中,这些容器由事件触发的、是短暂的(也许仅仅只是一次调用)、并且完全由第三方管理。(感谢ThoughtWorks在他们最近的技术雷达的定义。)理解这个观点的另一种方式是“函数即服务(FaaS)”,其中AWS Lambda是目前最流行的FaaS实现之一。
Mike主要分析了第二个领域,并用FaaS作为文中“无服务器”的代言词。他认为第二个领域相对较新,并且它和我们平常如何考虑技术架构的方式有显著的区别,也推动了无服务概念周边很多的炒作。他也提到了其实这些概念是相互关联的,并在不断合并。文中他给出了UI驱动的应用和消息驱动的应用两个例子解释了无服务架构的设计以及不同。

通过解读AWS Lamda产品描述,Mike在文中分享了他对于FaaS的几个理解:

从根本上说,FaaS是关于无需管理自己的服务器系统或者服务器应用,就能够运行后端代码的。 FaaS不需要基于一个特定的框架或类库进行编码。 无服务器应用程序的运行部署与传统系统非常不同 - 我们将代码上传到FaaS服务提供商,它会帮我们做所有其他事情。 水平扩展是完全自动的、弹性的,并且由服务提供商进行管理。 FaaS中的函数是由服务提供商定义的事件类型触发的。 大多数服务提供商还允许函数被HTTP请求响应触发,通常在某种API网关里。
他同时也探讨了FaaS在状态、执行时长、启动延时、API网关、工具和开源等方面的表现。他提到了FaaS在本地状态的显著约束,并可以这样简单来理解:

对于任何的函数调用,你所创建的进程或者主机状态不会有一个对随后的调用可用,这包含了你写到内存和硬盘上的状态。换句话说,从部署单元角度来看,FaaS的函数是无状态的。这对应用架构产生了巨大的影响。

这通常意味着FaaS要么是纯粹无状态的,即提供输入的纯函数转换;要么是利用数据库、跨应用缓存(如Redis)或者网络文件存储(如S3)的方式来存储跨请求的状态或处理请求需要的进一步输入。

而对于执行时间而言,

FaaS函数的每次调用是有时间限制的。当前AWS Lamda函数不允许超过5分钟,超过就会被中断。这意味着长任务并不适合FaaS,除非重新设计架构。

另外,FaaS函数的响应时长取决于很多的因素,也许会从10毫秒到2分钟。Mike认为如果你编写一个低延迟交易应用,那么不管你使用什么语言实现,可能都无法使用FaaS系统。

那么Paas是无服务器吗?在文中Mike引用了Adrian Cockcroft的回答

如果您的PaaS能够高效地在20分钟内启动运行半秒的实例,那么你可以称它为无服务器。

Mike认为:

绝大多数PaaS应用并不是着眼于将整个应用的每个请求都来回切换,而FaaS平台做的正是这一点。FaaS和PaaS之间的主要操作差异在于扩展。对于大多数的PaaS来说,你仍然需要考虑规模,例如在Heroku你想运行多少Dynos。而如果是FaaS的应用,这完全是透明的。即使你将你的PaaS应用程序设置为自动扩展,你也不会对单个请求进行同样的配置(除非你有一个非常特殊的流量描述文件),所以当涉及到成本的时候,FaaS应用会更高效。

同时他也指出这并不意味着没有运维。这里要考虑两个重要的事情:

首先,“运维”不仅仅意味着服务器管理。它也意味着监控、部署、安全、网络,也意味着一定的产品问题诊断和系统规模扩展。这些问题在无服务器应用中仍然存在,你依旧需要应对的策略。 其次,即使仍然发生系统管理的工作,你也仅仅是将它们外包给无服务器平台而已。
最后Mike对存储过程即服务的另一话题也进行了探讨,他认为:

这可能来自于一个事实,即FaaS函数的许多例子(包括一些我在本文中使用的)都是少量访问数据库的代码。如果这就是我们可以使用FaaS的所有场景,那么我认为这个名字是有帮助的。然而它实际上只是FaaS能力的一个子集。如果仅仅因为这个原因就形成这样观点的话,那这限制是不合理的。

同时他也提到了值得去考虑FaaS是否也有存储过程的一些问题,包括Camille在tweet中提到的技术债,也值得在FaaS的上下文去探讨一下存储过程中已经得到的经验教训,并是否适用FaaS。
本文转自d1net(转载)

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
1天前
|
运维 Cloud Native 云计算
云原生架构的演进:从微服务到无服务器计算
【6月更文挑战第30天】 在数字化转型和技术创新的浪潮中,云原生技术以其灵活性、可扩展性和成本效益成为企业IT战略的核心。本文将探索云原生架构的关键概念,从早期的微服务架构到现代的无服务器计算模型,揭示这一演变如何推动企业更高效地开发、部署和管理应用程序。我们将深入讨论这些技术背后的原理,以及它们如何帮助企业实现敏捷性、弹性和自动化运维。
|
3天前
|
Cloud Native 安全 开发者
云原生架构的演进与实践:从微服务到无服务器计算
本文深入探讨了云原生技术的最新进展,特别关注微服务和无服务器计算模型。通过分析相关研究数据和行业案例,文章揭示了云原生架构如何推动现代应用开发,提升运维效率,并实现资源的最优化配置。文中详细讨论了云原生生态系统中的关键组成部分,包括容器化、自动化管理工具和服务网格,以及它们如何共同促进敏捷性和可扩展性。此外,文章还分析了云原生安全策略的重要性,以及如何在保障安全的同时,保持系统的灵活性和高效性。
|
4天前
|
网络协议 安全 分布式数据库
技术分享:分布式数据库DNS服务器的架构思路
技术分享:分布式数据库DNS服务器的架构思路
10 0
|
11天前
|
分布式计算 资源调度 Hadoop
分布式系统详解--架构(Hadoop-克隆服务器)
分布式系统详解--架构(Hadoop-克隆服务器)
19 1
|
12天前
|
存储 负载均衡 网络协议
杨老师课堂之JavaWeb项目架构之NFS文件服务器
杨老师课堂之JavaWeb项目架构之NFS文件服务器
19 0
|
1月前
|
Serverless 持续交付 测试技术
无服务器应用架构转型
【6月更文挑战第2天】Serverless架构虽新,但其软件生命周期仍遵循传统模式,需确保交付质量。
|
1月前
|
资源调度 运维 Cloud Native
云原生架构技术之无服务器技术
当这些BaaS云服务日趋完善时,无服务器技术(Serverless)因为屏蔽了服务器的各种运维复杂度,让开发人员可以将更多精力用于业务逻辑设计与实现,而逐渐成为云原生主流技术之一。
40 5
|
1天前
|
弹性计算 运维 安全
阿里云ecs使用体验
整了台服务器部署项目上线
|
2天前
|
弹性计算 缓存 安全
阿里云服务器ECS收费标准参考,2核4G配置ECS实例规格整理
阿里云提供多种2核4G ECS实例,如计算型c7、经济型e、u1等,价格不等,从68.0元/月到203.0元/月。ECS通用算力型u1实例采用高性能Intel处理器,网络收发包能力达30万PPS。经济型e实例基于Intel Xeon Platinum,适合入门级需求。2核4G服务器支持的并发访问人数依赖于软件效率、带宽、应用架构和用户行为等因素。更多信息请查看阿里云ECS产品页。
|
2天前
|
弹性计算
阿里云ECS的使用心得
本文主要讲述了我是如何了解到ECS,使用ECS的一些经验,以及自己的感悟心得