Serverless(无服务器)架构知识梳理

[亡魂溺海] 提交于 2021-01-03 07:42:57

前题:

大多数公司在开发应用程序并将其部署在服务器上的时候,无论是选择公有云还是私有的数据中心,都需要提前了解究竟需要多少台服务器、多大容量的存储和数据库的功能等。并需要部署运行应用程序和依赖的软件到基础设施之上。如果我们不想在这些细节上花费精力,是否有一种简单的架构模型能够满足我们这种想法?这个答案已经存在,这就是今天软件架构世界中新鲜但是很热门的一个话题——Serverless(无服务器)架构。

什么是Serverless

Serverless(无服务器)架构知识梳理

Serverless这个词第一次被使用大约是2012年由Ken Form所写的一篇名为《Why The Future of Software and Apps is Serverless》的文章。这篇文章谈到的内容是关于持续集成及源代码控制等内容,并不是我们今天所特指的这一种架构模式。目前还没有一个普遍公认的权威的定义。最新的一个定义是这样描述的:“无服务器架构是基于互联网的系统,其中应用开发不使用常规的服务进程。

涉及核心名词解释:

FaaS(Function as a Service)就是一些运行函数的平台,比如阿里云的函数计算、Lambda 等。
BaaS(Backend as a Service)则是一些后端云服务,比数据库、对象存储、消息队列等。利用 BaaS,可以极大简化我们的应用开发难度。

FaaS 函数既服务

什么是函数既服务? 当我们使用后端服务的时候,不用去关心,后端的IP地址是什么,也不需要关心域名到底是什么,我们只需要像调用一个普通的函数那样去调用就可以了。所以对于后端来说,后端的服务仅仅是一个函数,而函数就是前端代码的一部分。至于函数到底是前端实现的,还是后端实现的,不需要去关心。
在今天主流的微服务设计里,每一个领域或者子域都是一个服务。而在 Serverless 应用中,这些领域及子域因为他们的功能,又可能会进一步切分成一个又一个 Serverless 函数。

Serverless(无服务器)架构知识梳理

Serverless有什么用

企业中一些长尾应用(调用频率少或者资源使用轻量的的应用)虽然不常使用或在业务中位置较低,但却要占用一台服务器及SRE的精力来保证其可靠性,甚至还需要主备高可用,投入的人力物力和服务本身的价值不成正比,这时可以选用Serverless来解决上述问题极大的节约资源又可以保证其高可靠的提供服务。

带来的价值:

  1. 降低运营成本
  2. 降低运维需求
  3. 开发更为高效、快捷

从资源效能角度看

Serverless(无服务器)架构知识梳理

从业务开发效能角度看

Serverless(无服务器)架构知识梳理

Serverless 适用场景:

  1. 运算密集 — — 如图片压缩、数据分析
  2. 定时任务
  3. 瘦容器
  4. WebHook
  5. 轻量级 API
  6. Chat 机器人

缺点

  1. 生命周期短 — — 目前AWS一个 Lambda 最多只能跑 5 分钟;
  2. Linux only — — 想做一个 macOS 的 CI 服务目前是不可能的;
  3. 语言限制 — — 除了 NodeJS、Java、Python 以外,其它程序都只能通过 shim 来运行,调试相对麻烦;
  4. 部署操作繁多,搭建无服务底层框架还是挺复杂的。

如何知道Serverless是否适合你的公司

先看下图
Serverless(无服务器)架构知识梳理

Serverless 有不少平台底层是结合Docker 和 k8s 集群实现的,如果一个公司没有使用过任何没有任何Docker/Kubernetes的实施经历。那么他们就不该从Serverless开始。

来点干货

如果你对serverless 感兴趣,个人花了点时间简单更新整理了业界比较火的无服务平台信息,给大家参考,详细如下:

Serverless(无服务器)架构知识梳理
更新时间:2020-12-30

平台没有绝对的好与坏,可以结合公司实际情况、业务场景并且参考上面的数据进行选择,搞起!

原文转载地址:

IT思维

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!