架构师们说的 Serverless 到底是什么?

无服务器(Serverless)计算是什么

架构师们说的 Serverless 到底是什么?_第1张图片

Serverless 领域分层

自下而上分别是资源层、DevOps 层和框架及运行时层。

架构师们说的 Serverless 到底是什么?_第2张图片

Serverless = FaaS + BaaS

架构师们说的 Serverless 到底是什么?_第3张图片

从技术上看 Serverless 就是 FaaS 和 BaaS 的结合。

简单来讲,FaaS(Function as a Service) 就是一些运行函数的平台,比如阿里云的函数计算、AWS 的 Lambda 等。

BaaS(Backend as a Service)则是一些后端云服务,比如云数据库、对象存储、消息队列等。利用 BaaS,可以极大简化我们的应用开发难度。

Serverless 运行在 FaaS 中,使用了 BaaS 的函数。

架构师们说的 Serverless 到底是什么?_第4张图片

Serverless 的主要特点

1、事件驱动

函数在 FaaS 平台中,需要通过一系列的事件来驱动函数执行。

2、无状态
因为每次函数执行,可能使用的都是不同的容器,无法进行内存或数据共享。如果要共享数据,则只能通过第三方服务,比如 Redis 等。

3、无运维

使用Serverless我们不需要关心服务器,也不需要关心运维,这也是serverles思想的核心;

4、低成本

使用 Serverless 成本很低,因为我们只需要为每次函数的运行付费。函数不运行,则不花钱,也不会浪费服务器资源过度

Serverless 开发流程

架构师们说的 Serverless 到底是什么?_第5张图片

Serverless 的优点和缺点

无服务器的业务逻辑实现是事件触发的代码,并且在无状态计算容器中执行。 这种架构通常称为功能即服务(FaaS)。

FaaS(Function as a service 函数作为一种服务) 本质上是一个小程序或函数,它执行由事件触发的小任务,而不像单个应用程序那样做很多事情。因此,在FaaS架构中,我们将应用程序分解为小型,自包含的程序或功能,而不是在PaaS上运行并执行多种功能的单一应用程序。例如,API中的每个端点都可以是一个单独的函数,我们可以按需运行这些函数,而不是全时运行应用程序。

常见的方法是在多层体系结构中编写API,类似于三层体系结构,其中代码分解为表​​示,业务和数据层。所有路由都将在业务层中触发相同的处理函数,并且数据将被处理并发送到数据层,数据层可以是数据库或文件。

在FaaS系统中,预计函数将在几毫秒内启动,以便处理各个请求。相比之下,在PaaS系统中,通常有一个应用程序线程可以长时间运行,并处理多个请求。 FaaS服务按功能的每个执行时间收费,而PaaS服务按服务器应用程序运行的线程的每个运行时间收费。

在微服务架构中,应用程序松散耦合,细粒度和轻量级。微服务诞生的原因是将整体应用程序分解为小型服务,以便可以独立开发,管理和扩展。但FaaS更进一步,将事情分解为甚至更小的称为功能的单位。趋势非常明确:工作单位越来越小。

无服务器架构的优点

为什么有人会使用无服务器架构(如AWS Lambda或OpenWhiz)构建应用程序?

主要原因是应用程序的执行效率,扩展速度,以及最重要的成本。让我们看一些重要的专业人士,然后继续前进。

1.更快的上市时间我们可以更快地将应用程序推向市场,因为OPS变得更加简单,并且将帮助开发人员专注于他们的开发。 OPS团队无需编写可以处理扩展或担心底层基础架构的代码。

此外,团队可以在第三方集成的帮助下更快地构建应用程序,例如OAuth,Twitter和Maps等API服务。

2.高度可扩展性每家公司都希望他们的应用程序能够更好地运行,零停机时间,并且随着流量的增加而快速,轻松地扩展,但是通过单一的应用程序开发,它可能变得非常困难。随着应用程序负载的增加,Ops团队必须在扩展底层基础架构时保持警惕。由于交通量的增加,停机时间浪费了大量的时间和金钱。

但无服务器计算具有高度可扩展性,可以在几秒钟内对应用程序进行缩放和缩放。

3.低成本在无服务器计算中,开发人员仅在功能运行时付费,与IaaS和PaaS不同,IaaS和PaaS为每台服务器24/7收费。这对于拥有庞大的应用程序,API或微服务设置的公司来说非常有用,这些应用程序,API或微服务目前全天候运行并且100%的时间使用资源,无论是否需要。但是对于无服务器,我们可以按需执行功能并共享资源,而不是全天候运行应用程序,因此我们可以大大减少空闲时间,并使应用程序运行得更快。

4.延迟和地理定位

改进应用程序的可扩展性取决于三个因素:用户数量,用户位置和网络延迟。在当今世界,应用程序拥有全球受众,这可能会增加延迟。但是无服务器平台可以大大减轻延迟的危险。使用无服务器时,实例化容器以在每个事件调用时运行函数,并且可以在用户的​​地理区域附近创建此容器,这将自动提高应用程序的性能。

无服务器架构的缺点

1.复杂性增加

我们使用应用程序越精细,它就越复杂。每个函数的代码可能会变得更简单,但整个应用程序将变得更加复杂。比如说,我们将应用程序分解为10个不同的微服务。我们必须管理10个不同的应用程序,而在单个应用程序中,它只是一个必须管理的应用程序。

2.缺乏工具支持

假设我们将单片应用程序分解为50种不同的功能。仍然有各种各样的流程和工具来管理,记录,监视和部署整体应用程序。由于无服务器是市场上的新产品,因此监控或记录运行几秒钟的应用程序是有限的并且具有挑战性,但是随着时间的推移,将会有许多有效的方法来实现这一点。

  1. 体系结构的复杂性

很难决定函数的粒度,并且评估,实现和测试以检查我们的首选项是耗时的。

  1. 管理太多功能会很麻烦,同时忽略粒度会导致我们设置迷你巨石。

5.实施中的缺点无服务器的最大挑战是集成测试难。

我们将为应用程序编写许多函数,但是如何将它们集成到应用程序中?当然,在此之前,我们如何测试它们如何有效地协同工作?

DevOps

无服务器DevOps的DevOps是另一个流行语很长一段时间。与无服务器一样,DevOps也是一个令人困惑的术语。很多人对DevOps有很多不同的看法。有人说DevOps只是工具,有些人认为DevOps包含一些流程, 甚至IaaS和PaaS也属于DevOps的范畴。

参考资料

https://blog.csdn.net/happyfreeangel/article/details/83713623
https://www.jianshu.com/p/92632d6c2269


Kotlin 开发者社区

1233356-4cc10b922a41aa80

国内第一Kotlin 开发者社区公众号,主要分享、交流 Kotlin 编程语言、Spring Boot、Android、React.js/Node.js、函数式编程、编程思想等相关主题。

越是喧嚣的世界,越需要宁静的思考。

你可能感兴趣的:(架构师们说的 Serverless 到底是什么?)