1. 介绍
Serverless并不仅仅是一个概念,很多地方都已经有了它的影子和思想,本文将给大家介绍最近比较火的Serverless。
首先放出官方对Serverless的解释:
Serverless的全称是Serverless computing无服务器运算,又被称为函数即服务(Function-as-a-Service,缩写为 FaaS),是云计算的一种模型。以平台即服务(PaaS)为基础,无服务器运算提供一个微型的架构,终端客户不需要部署、配置或管理服务器服务,代码运行所需要的服务器服务皆由云端平台来提供。国内外比较出名的产品有阿里云Function Compute、AWS Lambda、Microsoft Azure Functions 等。
有人说它是云计算的未来,代表了一种技术趋势、理念和发展方向,因为不是官方科普,说说个人的理解。
- 首先Serverless代表了一种思想或者服务理念,使用者无需再关心除了业务逻辑之外的机器资源容量、配置管理等事项,不需要关注运营维护,是一种去DevOps的理念;
- 然后他又是一种全新的架构模式,通过一系列技术手段使得各项资源都到最充分的利用;
- 同时也是一种云服务产品的形态,现在已经陆续开始有云产品(比如阿里云的数据仓库PostgreSQL、阿里云多模数据库Lindorm、阿里云MongoDB)开始提供Serverless版本支持,这个可以理解为服务的plus的版本,比如我们常见的MySQL、Redis、ES、分布式ID、MQ等一系列的服务,如果提供了Serverless版本的支持,那我们不再需要关心这些服务的申请机器、资源部署、资源碎片、弹性扩缩容问题,不再需要日夜值守关心各个依赖组件各项指标出现的问题,我们只需要聚焦在自己的上层业务逻辑上进行实现和优化,并且再也不会有闲置资源或者碎片资源问题(按需使用),这个就是Serverless想要构建的架构体系。
2.架构演进

早期的软件部署模式是通过采购物理机的形式,有多大规模采购多少台机器,采购多了或者配置差了都会存在比较大的资源浪费。
虚拟化技术出来后缓和了这个问题,允许将物理机切分成一个一个VM实例,一台机器上可以运行多个实例,采购多了那就运行其他服务,配置差的机器多运行一些实例,配置好的少运行一些,但是虚拟化本身还是挺重的,每个VM需要维护自己的OS内核,切的越多浪费越大,并且不利于维护统一基线,安装插件配置agent上传脚本很容易造成应用内一批机器不一致,并且销毁重建也不是那么容易的事情,这个阶段运维的事务性工作还是不少。
接下来云的浪潮铺开,传统的服务器厂商开始转型拥抱云,将自己的服务器搬到云上通过虚拟化技术进行线上售卖提供基础IaaS服务,到这个阶段仅仅是转变了商业模式,上面的问题依然还是存在。
再到后面docker容器技术产生,docker本身还是一种虚拟化技术,但是他是依托于宿主机操作系统之上的虚拟化,仅仅只是一个独立进程共享OS内核,资源碎片和内存占用浪费问题会少很多,并且重建销毁比较容易,非常利于维护应用统一基线,通过一套标准镜像自定义dockerfile进行统一交付,一次构建到处运行,运维可以脱离繁琐重复的工作去做更多工具类的产品。

DevOps概念在这个阶段变得火热,大厂内甚至要求消灭运维,强制运维转型开发,想起来也不无道理,在docker技术出来之前,一次建站往往需要运维们准备一堆脚本和安装顺序手册,搭建操作系统环境,安装网关、DB、软负载等一系列中间件,编译配置安装然后使得服务可用,中间一旦有一个步骤出错还得从头再来,但是运维往往是不了解应用的,启动不起来配置错误报错信息等问题还是需要开发介入,而让开发来负责上线部署,很多服务软件不知道如何部署,两者中间有一道很明显的鸿沟,所以一次建站或者新平台的搭建,需要拉上运维和开发通宵好几个晚上一起攻坚,效率低下,这个时候急需一个了解开发的人把运维的事情干了,而容器技术出现之后,就如上面介绍,docker镜像统一基线使得建站部署变得更加标准化和简单,开发运维一体化这个事情就会变得水到渠成,通过dockerfile、swarm集群编排或者k8s可以很容易的让开发把运维的事情干了,这个时候运维自然会显得多余,当然完全消灭运维也是不可能的,变革是渐进式的,需要有一些人去负责历史包袱的资产系统,同时与开发有更好的协同具备提升系统稳定性和做自动化工具化系统研发能力的SRE出现也代表了运维转型的决心。
到目前为止,还是停留在开发需要关心运维的阶段,但是随着docker技术的普及,很多运维相关的工作已经变得非常容易了,这个时候云厂商开始考虑是否可以把运维这个事情从开发手中收走,让运维自动化,变得对开发更加透明,开发人员只需关注核心业务逻辑的开发,进而精益整个产品开发流程,快速适应市场变化,这个时候Serverless的概念开始产生,所以从这个角度来看,在整个it架构演进中,docker的普及无疑是进一步推动了Serverless的快速发展。
从整个演进过程中来看,一直都在朝着资源切分粒度越来越细(物理机->操作系统->进程->function),资源利用率越来越高,运维工作逐渐减少,开发更聚焦业务的方向发展的,Serverless的产生也是符合历史发展的一般规律。
3. 应用场景
一个比较典型的应用场景是云上的巡检产品,业务很简单类似于360安全卫士,定期巡检云用户的三方依赖组件,产出包括安全、性能、稳定、成本的巡检报告并且给出建议,由于需要和一些微服务治理高可用等产品做捆绑售卖,本身也是免费产品,以前的ECS部署模式成本较高也不是很灵活,所以需要做改造来适应现在的云原生环境,准备将其托管到云上Function Compute Serverless平台,

本文深入剖析Serverless计算模型,探讨其架构演进、应用场景及与微服务、云原生的关系,旨在构建高效、灵活的资源管理方案。
最低0.47元/天 解锁文章
562

被折叠的 条评论
为什么被折叠?



