深入浅出Serverless:2 Serverless与相关技术

介绍

  • 作为一个热门词汇,Serverless并不孤单,和它一起受到广泛关注的还有诸如微服务(Microservice)、容器(Container)和云等。其实这些技术之间有着很强的关联关系。正确地理解Serverless和其他技术的关系,是正确理解Serverless架构的一个重要基础。要深入理解Serverless,需要结合当下业界发展的整个大环境和趋势进行思考。

云计算

从私有数据中心到云

  • 按所管控的计算资源的范围来划分,云计算模式可以分为基础架构即服务(Infrastructure as a Service)、平台即服务(Platform as a Service,PaaS)以及软件即服务(Software as a Service,SaaS)。
  • 在云计算传统的私有数据中心架构中,让一个应用服务上线跑起来,用户需要负责管理和维护底层网络、存储和主机,到操作系统、中间件,以及应用的开发、部署及运维。
  • 在传统的架构模式中,每上线一个应用服务,都要求用户对架构堆栈中每一个层次的服务进行配置和维护,这极大地拖慢了整体的流程效率,传统的架构限制了生产力的发展,于是云计算的变革悄然而至

IaaS、PaaS与SaaS

  • 在IaaS架构中,应用架构底层的网络、存储和计算资源(主机、物理机或虚拟机),由云平台供应商(Cloud Provider)提供和运维。用户在云平台上付费申请所需的网络、存储和计算资源,云平台供应商在一定时间内提供。对于云平台供应商而言,集中化和规模化地运维及供给使得基础架构资源的成本更低,这是一个不可多得的商机

  • PaaS平台提供了应用的运行环境(如应用运行时)、应用依赖的服务(如数据库、中间件、负载均衡、构建服务、发布服务)以及底层所需的计算资源,用户可以把精力集中在应用的开发和创新上。PaaS模式可以提高应用开发、发布和运维的整体效率,有效缩短了应用上市的时间(Time to Market)

  • SaaS模式下,用户完全不用管理任何应用和基础设施,从而变成云服务的消费者

Serverless与云计算

  • Serverless是云计算变革过程中的一个必然产物。Serverless架构实现的一个重要基础是函数即服务(Function as a Service,FaaS)。
  • FaaS的灵活度和管理成本介于PaaS和SaaS之间。相对于PaaS而言,FaaS有更高的抽象程度和更低的管理成本。相对于SaaS来说,FaaS用户有更高的控制力和灵活度。Serverless架构是对开发和运维的一场解放运动,让用户的焦点回到用户应该关注的地方
  • 云计算的不断发展是Serverless发展和流行的最大推动因素。Serverless是云计算未来发展的一个方向

微服务

从SOA到微服务

  • 在SOA架构下,应用通过服务暴露功能,实现了彼此信息的交换和集成,使得通过服务的组合和编排形成新的应用系统成为可能。但是多个模块和功能仍然被包含在同一个应用中、同一个交付件中
  • 微服务架构(Microservice Architecture,MSA)提倡将应用化整为零,减小颗粒度
  • 大型的应用(Monolithic Application)按照一定的规则被拆分成若干个颗粒度更小的应用。这些细小的应用称为微服务(Microservice)

微服务的价值与挑战

  • 微服务增加了应用架构的灵活度,为应用的开发和交付带来了价值

    • 更清晰的权责

    • 更快速的开发和交付节奏

    • 更灵活的资源扩展

  • 微服务架构在带来价值的同时也带来了一些新的挑战

    • 团队组织变化:应用架构的改变也将导致开发应用的开发团队结构发生变化
    • 运维复杂度:运维管理的应用实例数将大大增加。微服务架构下工作量呈指数级增长。
    • 微服务治理:微服务之间的通信、调用链的跟踪管理、状态监控、错误跟踪排查等都需要相应的解决方案

2.2.3 Serverless与微服务

微服务 Serverless
功能结构 最小成员单位是微服务 最小成员单位是函数
强调 化整为零,提高应用架构灵活度 强调的是“减负”,将服务器移出用户的管理职责范围,降低复杂度和成本
成本 架构上带来灵活性的同时,也增加了开发、部署和运维的复杂度 开发和运维的效率更高,管理成本更低

容器

容器技术的兴起

  • 对于很多用户而言,云和非云环境并不是二选一,而是两者都需要。云和非云环境在相当长的一段时间内将同时存在。应用如何快速地在云和非云环境中迁移成为一个重要的问题。为了有更高的可用性,避免厂商的锁定,一些实力雄厚的客户往往同时是多家云平台供应商的客户。因此实现应用在不同云环境中的快速迁移也成为一个重要的需求
  • 容器(Container)技术的出现为前文提及的问题提供了一个很好的解决方案。经过几年的迅速发展,容器已经不容置疑地成为云计算的一项关键基础技术。Docker(现在已经更名为Moby项目)已成为容器引擎的事实标准。Kubernetes也在竞争中脱颖而出,成为容器编排(Orchestration)平台的事实标准。通过Kubernetes这样的容器编排平台,容器镜像可以快速地被部署到成百上千的主机上。Kubernetes成为一种类似操作系统的存在,有的人认为Kubernetes就是一种云操作系统。传统的操作系统只管理一台主机上的CPU、内存、磁盘和网络资源,而Kubernetes则掌控着数据中心中成百上千台主机的资源。

Serverless与容器

  • 容器架构中最小的运行单元是容器,而Serverless中则是函数。容器应用一般是预先部署,然后持续在线。而在Serverless架构中,应用是按需加载和执行的。这意味着理论上Serverless的资源使用效率更高。
  • 其实,容器技术可以是Serverless架构实现的一个基础。容器平台的最小运行单元为容器,虽然目前容器内一般运行的是一个完整的应用,但是将容器内运行的对象变成函数显然并无技术困难。Kubernetes上默认没有事件触发的支持,无法做到按需部署容器应用。但是通过Kubernetes叠加上一些FaaS框架运行包含函数逻辑的容器,用户很容易使Kubernetes具备FaaS服务的能力,容器必将是未来私有云构建Serverless能力的一个重要实现基础。

PaaS

以应用为中心

  • 从技术标准上而言,早期的PaaS可以说是百家争鸣,每一个厂商都有自己的一套技术堆栈,随着容器技术的流行,目前PaaS平台开始支持容器作为应用的交付件,这使得应用在各个PaaS之间有更好的可移植性。

Serverless与PaaS

  • 目前一些主流的PaaS平台和Serverless平台,主要差异在于:
PaaS Serverless
管理颗粒度 对应用颗粒度的管理以应用为单位 细致到每个应用的函数
应用部署模式 应用是持续地被部署在主机、虚拟主机、容器 按需部署,这是Serverless的按用量付费(Pay-As-You-Use)模型的基础
作业类型 包含长时间运行的应用(如各类Web应用和业务系统)和定时执行的短期任务(如数据分析抽取任务) 偏向于执行时间跨度比较短的任务
实例 存在应用实例数这一概念的,用户需要设置每一个实例的CPU和内存的使用大小以及需要的实例数 将实例数的概念移除了
  • 当前许多PaaS平台也开始支持容器,或是以容器作为技术架构的基础,如Red Hat的OpenShift就是一个以Docker和Kubernetes为基础的开源容器PaaS。基于这种容器PaaS平台,结合FaaS和BaaS框架的支持,用户可以实现私有的Serverless平台

FaaS

Serverless实现的基础

  • 函数即服务(Function as a Service,FaaS)是当前Serverless实现的技术基础。每一个函数完成一个相对简单的业务逻辑,一个完整的应用由若干个函数组成。因为FaaS和Serverless的关系密切,因此FaaS的特点同时也是Serverless平台的特点:

    • 抽象了底层计算资源
    • 按使用量付费
    • 自动弹性扩展
    • 事件驱动
  • FaaS是当前Serverless实现的重要基础,所以有一部分人认为Serverless就是FaaS。这是狭义上的Serverless。

FaaS的架构

  • 目前,业界有多种FaaS的实现方案,如公有云的AWS Lambda、Microsoft Azure Fun-ctions、Google Cloud Functions,私有云的OpenWhisk、Fn、Kubeless等。

  • 宏观来看,一个FaaS平台的架构中包含如下主要组件:

    • 函数定义(Function Definition):一个函数实现一个业务逻辑
    • 函数实例(Function Instance):在运行状态的应用函数的实例
    • 控制器(Controller):负责应用函数的加载、执行等流程的管理
    • 事件(Event):事件驱动架构中的事件
    • 事件源(Event Source):事件驱动架构中的事件来源。可以是一个数据库中插入了新的记录,也可以是一个目录里删除了一个文件,或者是消息队列收到了新的消息
    • 触发规则(Trigger Rule):定义事件与函数的关系及触发的规则
    • 平台服务(Platform Service):支撑应用运行的各类底层服务,如计算资源、数据存储等

函数的生命周期

  • 在FaaS上一个函数从创建到执行的生命周期
    • 用户根据所选定的FaaS平台的规范进行函数应用的开发。
    • 编写好的函数将上传至FaaS平台。平台将负责编译和构建这些函数,并将构建的输出保存。
    • 用户设置函数被触发的规则,将事件源与特定版本的函数进行关联。
    • 当事件到达且满足触发规则时,平台将会部署、编译构建后的函数并执行。平台将监控函数执行的状态,根据请求量的大小,平台负责对函数实例进行扩容和缩容

函数工作流

  • 当涉及多个函数执行时,就需要有逻辑处理执行的顺序、错误重试、异常捕获以及状态传递等细节。
  • 一些FaaS实现开始提供针对FaaS函数的流程编排服务或工具,以简化FaaS应用的流程编排,如AWS Step Functions和Fission Workflows

BaaS

BaaS的价值

  • 后端即服务(Backend as a Service,BaaS)
  • 通过BaaS平台,用户的应用程序可以对接后端的各种服务,省去了用户学习各种技术和中间件的成本,降低了应用开发的复杂度。BaaS的服务往往由服务供应商提供,用户无须关心底层细节,无须维护相关资源

广义的Serverless

  • 广义的Serverless包含FaaS和BaaS两个方面。FaaS解决了应用本身的“无服务器”化,BaaS解决了应用依赖的第三方服务的“无服务器”化。当应用和其依赖的服务都实现了“无服务器”化时,这个应用才算是完整的Serverless应用。

NoOps

无人运维吗

  • NoOps,中文直译为“无运维”,或许翻译为“无人运维”更为合适。知名的市场调研公司Forrester于2011年发表的报告《Augment DevOps With NoOps》中提出了NoOps这一概念。它们认为随着云计算的不断演进、IT自动化程度的不断完善、IT自服务程度的不断提高以及应用架构的自扩展和自恢复的实现,IT将进入无须人工运维的阶段

“无服务器”与“无人运维”

  • NoOps和Serverless都存在“无”的概念。在Serverless架构下,运维人员不再需要关注底层的基础架构,但是还是需要有人对应用的整体运营状态进行维护。运维关注的焦点会从以往的基础架构转移到云服务和应用的运维上。运维人员有更多的时间关注对业务更有价值的地方,如服务的用户体验,而非系统宕机时间

DevOps

  • DevOps是一种IT的治理理念,这种理念强调和谐的开发(Develop)和运维(Operation)的协作,以便为IT提供更可靠和更高质量的交付,从而提升IT的效率和对业务的响应速度。DevOps不仅仅是简单的工具,它还涉及一个企业或组织的文化和流程。

  • Serverless架构极大地改变了应用开发、部署和运营的模式,对软件的开发、测试与运维人员的协助模式和关系产生巨大的影响。DevOps所倡导的协作、分享和精益的文化对Serverless的推行而言有着很大益处。

云原生应用

因云而生

  • 云将会是主流的应用运行平台,是应用的标准运行环境。所谓的云原生应用(Cloud Native Application)是指充分利用云平台的各种功能和服务所设计的应用程序。未来的应用要充分利用云上的各种设施和功能,最大限度地加速应用的开发、部署和运营,使云的价值最大化

  • 云平台是云原生应用的运行基础环境。微服务为云原生应用提供了架构层面的指导思想。容器将会是云原生应用的一种重要交付格式,保证了云原生应用的可移植性。DevOps为云原生应用的开发、交付和运营提供了思想层面的指导

Serverless与Cloud Native

  • Serverless应用满足了云原生应用的定义,充分利用了云平台的各种能力,极大地提高了应用开发、交付和运维的效率。因此,Serverless应用是原生应用的一种实现,Serverless架构是用户通向云原生应用的道路之一

  • 云原生计算基金会(Cloud Native Computing Foundation,CNCF)是一个专注于推广和标准化云原生技术的组织,目前成员超过100个,包括Google、Amazon、微软、阿里巴巴、华为、Red Hat、Cisco、IBM、Oracle等。云计算领域中许多备受关注的前沿项目都归属于CNCF,如容器编排平台Kubernetes、日志收集器Fluentd、高性能远程调用协议gRPC以及性能指标收集方案Prometheus等。Serverless的流行也受到了CNCF的高度关注,CNCF在2018年发布了Serverless白皮书,探讨了Serverless在云原生计算中的价值以及CNCF在Serverless领域的未来动向

小结

  • 要完整认识一个事物,除研究这个事物本身之外,还要了解其所在的生态系统。Serverless是云计算变革的一个产物,是构建云原生应用的一种模式和思想。通过这种思想,结合云计算相关技术,用户可以用更低的成本构建更高性能、更易于扩展及更高可用的云应用

文献

名词解释

  • TTM:应用上市的时间(Time to Market)

  • Microservice:微服务

  • CNCF:云原生计算基金会(Cloud Native Computing Foundation)

  • CNA:云原生应用(Cloud Native Application)

  • DevOps:开发(Develop)和运维(Operation)

  • FaaS:函数即服务(Function as a Service)

  • IaaS:基础架构即服务(Infrastructure as a Service)

  • PaaS:平台即服务(Platform as a Service)

  • SaaS:软件即服务(Software as a Service)

  • MSA:微服务架构(Microservice Architecture)

  • Monolithic Application:大型的应用

  • Pay-As-You-Use:按用量付费

  • BaaS:后端即服务(Backend as a Service)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容