后端架构:Serverless 的诞生

​最近几年的技术圈,对于 Serverless 技术的讨论异常火热,在业内也有了很多成熟的案例。Serverless 在国外发展较早,比较有代表性的就是亚马逊和谷歌**。而在国内,腾讯和阿里两位巨头,都将 Serverless 定义为****集团战略型项目**,不遗余力地推广和研发自己的 Serverless 技术。

​最近几年的技术圈,对于 Serverless 技术的讨论异常火热,在业内也有了很多成熟的案例。Serverless 在国外发展较早,比较有代表性的就是亚马逊和谷歌**。而在国内,腾讯和阿里两位巨头,都将 Serverless 定义为****集团战略型项目**,不遗余力地推广和研发自己的 Serverless 技术。

那么,Serverless 到底是什么?

为什么说 Serverless 是云计算的下一个十年?

首先我们先来认识一下 Serverless。Serverless 是一种后端架构技术,更准确地说,它应该是一种后端架构的概念或者思维。

你可能会问,既然是后端架构的内容,那和我前端开发者有什么关系呢?没错,Serverless 本身和前端半毛钱关系都没有,但是它却是前端程序员最希望落地应用的技术。众多前端开发者,望穿秋水一般期待它的成熟落地,反而很多后端程序员,漠不关心甚至排斥。为什么会出现这种一方冷淡一方火热的奇怪现象?要搞清楚这一点,我们需要从后端架构的演进历史说起……

每一个 B/S 架构的互联网应用,都是由最基础的客户端和服务端构成的,客户端要呈现内容,就需要服务端提供服务。最初,搭建一个服务器是非常繁琐的,我们需要购买一台电脑主机,然后找一个机房对机器进行托管,要将外观拍照,将各项硬件参数提交到备案中心进行备案,链接电源和网线,安装好操作系统,然后搭建好代码的运行环境,部署程序代码后,再将申请的域名和静态IP做好解析,就算是上线部署完毕了,这个过程需要肉身行动,减肥效果非常不错。

这样的服务器架构是单机版的单体架构,数据库、应用代码、HTTP服务器等服务全都在一台你自己管理的服务器上运行,因为我们要接触物理机,所以,我们也把它称为物理机时代

在物理机时代不仅仅是上线部署非常繁琐的问题,在整个应用的运行中,还有各种各样的问题出现,比如磁道磨损的硬盘,机房的意外停电,老鼠咬断的网线等等。

随着技术的不断发展,我们终于摆脱了物理机时代,跨入虚拟机时代。其中一个重要节点之一就是 2001 年 VMWare 带来的针对 x86 服务器的虚拟化产品,通过虚拟化技术,可以把一台物理机分割成多台虚拟机提供给用户使用,充分利用硬件资源。而对于硬件设备的管理,统一由云厂商负责。对于开发者来说,就不用再买硬件了,直接在云平台买虚拟机,比如 AWS 的 EC2、阿里云 ECS、腾讯云 CVM等。

云服务器也真正的进入了大众的视野,开发者再也不用担心断电断网和硬件故障了。不过业务量不断增长,用户越来越多,数据库每天都有几千万条数据写入,数据库性能很快就会达到瓶颈。除此之外,每天也有上百万图片存到磁盘,磁盘也快要耗尽了。为了降低服务器负载,我们把数据库迁移到了云厂商提供的云数据库上,把图片存储迁移到对象存储:

云数据库有专门的服务器,并且还提供了备份容灾,比自己在服务器上安装数据库更稳性能更强。对象存储能无限扩容,不用担心磁盘不够了。

这样一来,服务器就只负责处理用户的请求,把计算和存储分离开来,既降低了系统负载,也提升了数据安全性。并且单机应用升级为了集群应用,通过负载均衡,会把用户流量均匀分配到每台服务器上。

不过在服务器扩容的过程中,你还是会遇到一些麻烦。比如购买服务器后,都需要在上面初始化软件环境和配置,还需要保证所有服务器运行环境一致,这是个非常复杂还容易出错的工作。这对运维工程师也是一个非常大的挑战。

总的来说,虚拟机可以让你不用关心底层硬件,但是我们依然要为服务器集群的管理工作付出高昂的成本。如果有一项技术,能够在每次的服务器扩容时,让服务器的运行环境保持一致,那就太好了。于是,容器技术应运而生。

**2013 年 Docker 的发布,代表着容器技术替代了虚拟化技术,云计算进入容器时代。**容器技术就是在虚拟化技术的基础上,把代码和运行环境打包在一起。这样,不论服务器的配置怎样,代码和运行环境均能保持一致性。有了容器技术,你在服务器上部署的就不再是应用了,而是容器。当容器多了的时候,如何管理就成了一个问题,于是出现了容器编排技术,比如 2014 年 Google 开源的 Kubernetes,就是俗称的 K8S 。

在目前的后端架构中,容器技术依然是主流的服务器架构技术,但是随着互联网应用的普及,我们需要面对各种各样的应用场景。

举个栗子,每当大型购物节来临,我们的在线商城会面临巨大的流量洪峰,而在平时,流量显然要小很多。为了迎接购物节的流量洪峰,我们需要大量扩充服务器,服务器的扩充和大量容器的编排工作,也是一个不小的难题。如果我们对流量的压力预估不到位,还会有服务器宕机的风险,而在平时,如此多的服务器运行显然是在浪费资源增加成本。

那么,有没有一种技术,让我们只关心业务代码的功能实现,脱离服务器的管理呢?让我们不再为运行环境劳心伤神,不再为服务器的扩缩容半夜惊醒,当流量洪峰来临时,自动调配更多的服务器资源支撑,当流量低谷时,自动释放服务器资源节约成本。这样美好的时代,正在向你走来,它叫 Serverless

简单总结一下,纵观后端架构的发展史,其实就是 Serverless 的兴起史。每一个时代,都是对前一个时代基础架构的抽象。

从物理机时代跨越到虚拟机时代,让我们不再关心硬件设备的管理,将一台真实的计算机抽象为相互隔离的多个虚拟机。从虚拟机时代到容器时代,让我们摆脱了运行环境和集群管理的繁杂工作,将虚拟机的运行环境抽象为容器。而 serverless 的到来,让我们不再关心运行环境和服务器资源的调配。


作者:勾崽
来源:掘金

  • 发表于 2021-03-31 11:06
  • 阅读 ( 37 )

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
z老师
z老师

131 篇文章

作家榜 »

  1. NX小编 1251 文章
  2. 58沈剑 325 文章
  3. 热爱技术的小仓鼠 230 文章
  4. 奈学教育 154 文章
  5. z老师 131 文章
  6. 五十三 58 文章
  7. 李希沅 | 奈学教育 52 文章
  8. 江帅帅 | 奈学教育 32 文章