前题:
大多数公司在开发应用程序并将其部署在服务器上的时候,无论是选择公有云还是私有的数据中心,都需要提前了解究竟需要多少台服务器、多大容量的存储和数据库的功能等。并需要部署运行应用程序和依赖的软件到基础设施之上。如果我们不想在这些细节上花费精力,是否有一种简单的架构模型能够满足我们这种想法?这个答案已经存在,这就是今天软件架构世界中新鲜但是很热门的一个话题——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有什么用
企业中一些长尾应用(调用频率少或者资源使用轻量的的应用)虽然不常使用或在业务中位置较低,但却要占用一台服务器及SRE的精力来保证其可靠性,甚至还需要主备高可用,投入的人力物力和服务本身的价值不成正比,这时可以选用Serverless来解决上述问题极大的节约资源又可以保证其高可靠的提供服务。
带来的价值:
- 降低运营成本
- 降低运维需求
- 开发更为高效、快捷
从资源效能角度看
从业务开发效能角度看
Serverless 适用场景:
- 运算密集 — — 如图片压缩、数据分析
- 定时任务
- 瘦容器
- WebHook
- 轻量级 API
- Chat 机器人
缺点
- 生命周期短 — — 目前AWS一个 Lambda 最多只能跑 5 分钟;
- Linux only — — 想做一个 macOS 的 CI 服务目前是不可能的;
- 语言限制 — — 除了 NodeJS、Java、Python 以外,其它程序都只能通过 shim 来运行,调试相对麻烦;
- 部署操作繁多,搭建无服务底层框架还是挺复杂的。
如何知道Serverless是否适合你的公司
先看下图
Serverless 有不少平台底层是结合Docker 和 k8s 集群实现的,如果一个公司没有使用过任何没有任何Docker/Kubernetes的实施经历。那么他们就不该从Serverless开始。
来点干货
如果你对serverless 感兴趣,个人花了点时间简单更新整理了业界比较火的无服务平台信息,给大家参考,详细如下:
更新时间:2020-12-30
平台没有绝对的好与坏,可以结合公司实际情况、业务场景并且参考上面的数据进行选择,搞起!
原文转载地址:
来源:oschina
链接:https://my.oschina.net/u/4259099/blog/4874040