提及当前最火的技术,除了最新的区块链、AI,还有一个不得不提的概念是 Serverless。Serverless 做为一种新型的互联网架构,直接或间接推进了云计算的发展,从 AWS Lambda 到阿里云函数计算,Serverless 一路高歌,同时基于 Serverless 的轻量计算开始登陆云计算的舞台,本文将从两个部分展开:
介绍 Serverless 的概念,历史及其现状与将来的思考;
Serverless Container 的概念及现状。
1、聊聊 Serverless
前文讲到 Serverless 是一种新型的互联网架构,目前尚没有官方权威的定义,能够认为:
Serverless 无服务器架构是基于互联网的系统,其中应用开发不使用常规的服务进程。相反,它们仅依赖于第三方服务(例如 AWS Lambda 服务),客户端逻辑和服务托管远程过程调用的组合。
AWS Lambda 做为 Serverless 最先的框架产品,在 2014 年由亚马逊推出,但最先的 Serverless 概念并非由亚马逊提出,下面咱们来简单聊聊 Serverless 的历史。
Serverless 历史docker
发轫之始
2012 年云基础设施服务提供商 Iron.io 的副总裁 Ken 提出软件的将来 ,首次提出来 Serverless 概念, 如下是原文的一段摘录:
Even with the rise of cloud computing, the world still revolves around servers. That won’t last, though. Cloud apps are moving into a serverless world, and that will bring big implications for the creation and distribution of software and applications.
初出茅庐
AWS Lambda 产品的发布能够认为是 Serverless 的里程碑,在此以前 Serverless 几乎是停留在概念期,直到 14 年 Lambda 发布,让“Serverless”提升到一个全新的层面,为云中运行的应用程序提供了一种全新的系统体系架构,**Serverless 开始正式走向云计算的舞台。
崭露头角
在 AWS 发布 Lambda 以后,众多 IaaS 及 Pass 厂商争相入市,Google Cloud Functions, Azure Funcions, IBM OpenWhisk,阿里云函数计算,短短数年时间 Serverless 产品已遍地开花。
将来已来
随着容器技术、IoT、5G、区块链等技术的快速发展, 技术上对去中心化,轻量虚拟化,细粒度计算等技术需求愈发强烈,而 Serverless 必将借势迅速发展,将来 Serverless 将在云计算的舞台上大放异彩!
云计算发展看 Serverless
首先,抛一个总结性观点:云计算的发展从IaaS、PaaS、SaaS,到最新的 BaaS、FasS,在这个趋势中 serverless (去服务器化)愈来愈明显,而 Serveless 的完善带给云计算将会是一次完美进化!数据库
众所周知,云计算经历了从 IDC -> IaaS -> PaaS -> Serverless/FaaS 的发展历程,下面对这些概念作一些基本介绍。
IaaS编程
IaaS(Infrastructure as a Service) 基础设施即服务,服务商提供底层/物理层基础设施资源(服务器,数据中心,环境控制,电源,服务器机房),用户须要经过 IaaS 提供的服务平台购买虚拟资源,选择操做系统、安装软件、部署程序、监控应用。
目前知名的 IaaS 平台有 AWS、Azure、Google Cloud Plantform、阿里云以及开源的 OpenStack 等。
PaaS后端
PaaS (Platform as a Service) 平台即服务,服务商提供基础设施底层服务,提供操做系统(Windows,Linux)、数据库服务器、Web 服务器、负载均衡器和其余中间件,相对于 IaaS 客户仅仅须要本身控制上层的应用程序部署与应用托管的环境。
目前知名的 PaaS 平台有 Amazon Elastic Beanstalk,Azure,Google App Engine,VMware Cloud Foundry 等。
SaaS
SaaS (Software as a Service) 软件即服务, 服务商提供基于软件的解决方案,如 OA、CRM、MIS、ERP、HRM、CM、Office 36五、iCloud 等,客户不需考虑任何形式的专业技术知识,只须要经过服务商平台获取软件使用便可。服务器
BaaS
BaaS (Backend as a Service) 后端即服务,服务商为客户(开发者)提供整合云后端的服务,如提供文件存储、数据存储、推送服务、身份验证服务等功能,以帮助开发者快速开发应用。
FaaS
FaaS (Function as a Service) 函数即服务,服务商提供一个平台,容许客户开发、运行和管理应用程序功能,而无需构建和维护基础架构。 按照此模型构建应用程序是实现“无服务器”体系结构的一种方式,一般在构建微服务应用程序时使用。
IaaS、PaaS、FaaS 对比
举个例子,好比小明想开一个水果店:
IDC:若是盖房子,装修、上架水果这些工做都是小明本身来作;
IaaS:若是小明房子是租的,装修、上架水果是本身作;
PaaS: 若是小明房子是租的,但是房子已经装修好了,可是上架水果要本身来作;
FaaS:若是有一个商家提供装修好的水果店,小明只负责把水果送过来,其他上架工做都由商家来作。
总结
从 IDC → IaaS,用户不用关注真实的物理资源。
从 IaaS → PaaS,用户再也不关注操做系统,数据库,中间件等基础软件。
从 PaaS → BaaS/FaaS, 用户能够不多甚至不用关注 backend,app 能够简化为一个单页面程序。
能够说,Serverless 是云计算发展到必定阶段的必然产物,云计算做为普惠科技,发展到最后必定是绿色科技(最大程度利用资源,减小空闲资源浪费)、大众科技(成本低,包括学习成本及使用成本)的产品,而 Serverless 将很好的诠释这些!
Serverless/FaaS 模型
Serverless 是基于事件驱动的编程范型,其底层的计算平台通常为轻量计算,好比容器计算 Docker。
针对该模型本文再也不赘述, 下面以 AWS Lambda 及阿里云函数计算为例,简单介绍该模型。
AWS Lambda架构
大体流程以下:
UI 驱动,经过模拟鼠标点击触发事件;
当触发事件增多时,lambda 实例自动扩容;
当触发事件减小时,lambda 实例自动缩容。
阿里云函数计算app
流程大体以下:
UI/Event/Message Driven 触发事件;
用户 Function 会 package 为一个 docker 镜像;
事件调度系统配合 Docker 集群运行 Docker 容器来执行 Function
Serverless 价值与影响
低成本
运营成本,Serverless 将用户的服务器、数据库、中间件委托于 BaaS/FaaS,用户将再也不参与基础设施及软件的维护,尤为在大规模的集群运营上成本大幅度下降;
开发成本,对比 IaaS 或者 PaaS 平台的服务器或者操做系统,Serverless 的架构中,用户操做的是服务化的组件好比存储服务,受权服务等,能够缩短开发周期,下降开发难度。
真正的按需计费
Serverless/FaaS 区别于 IaaS/PaaS 预先分配计算资源的计费方式,其计费方式一般是按请求次数及运行时间,一方面能够最大程度利用资源,另外一方面真正的按需计费下降用户的资源成本。
高扩展
Serverless 架构一个显而易见的优势即“横向扩展是彻底自动的、有弹性的、且由服务提供者所管理”。
“绿色”计算
据统计,商业和企业数据中心的典型服务器仅提供 5%~15% 的平均最大处理能力的输出,本质上这是对社会资源的一种浪费。而在 Serverless 架构下,提供商将提供更细力度的计算能力,最大限度知足实时需求,资源利用率将大幅度提高,能够认为相对 IaaS 与 PaaS,Serverless/FaaS 是一种 “绿色” 计算。
NoOps
运维的发展经历了人肉运维、自动化运维、DevOps、AiOps 等,而 Serverless 带来一种新的运维模式,这种模式下用户须要管理的只有 Code 能够认为 NoOps。
Serverless 应用场景
事件驱动以及响应式架构负载均衡
IoT 物联网场景中低频请求
请求对及时响应需求不够
固定时间触发计算资源利用低的业务框架
流量突发场景less
好比短期大流量视频转码
短周期内的流量峰值
跨云与混合云场
边缘计算
其它 ...
Serverless 将来的一些思考
细粒度的计算资源
目前主流的 Serverless/FaaS 技术底层的计算环境一般是容器好比 Docker,容器技术是一种比硬件虚拟化更轻量的实现,用户能够在虚拟机上运行大量的容器,能够更大程度的利用计算资源。
而Serverless 的需求多是更细粒度的计算资源,好比最近华为发布的 CCI 产品容器的规格已经支持千分之一核,相信千分之一核只是开始,将来 Serverless 在细粒度资源使用上将发挥无限可能。
统一的容器调度模型
从当前 Serverless/FaaS 及容器生态的发展来看,容器基本都是运行在云主机之上好比 aws 的 ec2,阿里云的 ecs。
因为云厂商实现方式及不一样产品的差别性,容器的调度框架选择不尽相同,好比有的厂商其 Serverless 产品是基于 Kubernetes 管理云主机集群进行容器编排及调度(好比华为的 CCI),而有的产品如阿里云的函数计算产品是基于自研的 Agent 进行容器调度。那么为何没有一种产品能够为不一样的 Serverless 服务提供通用的容器调度能力呢?
生态圈多样化
Serverless 的发展必然会带动其周边生态的完善,好比 BaaS 及 FaaS 产品的形态将多样化输出,举个例子:
Serverless 架构下用户的 Code 是没有服务端的,而这些服务将由云厂商以 BaaS 的服务形态提供,随着 Serverless 的发展,必然会催生多样化的 BaaS 服务。
产品抽象输出
Serverless 是云计算普惠科技的重磅技术!Serverless 的出现将开发者从复杂的硬件及软件环境中解脱出来,将来能够想象 Serverless 的产品将会以更加简单的方式呈现给用户。举个例子:你们熟知的乐高积木,不一样的小零件按照不一样的方式组装,最终获得的做品是多样化的。
而 Serverless 天生具有这种优点,能够想象若是 Function 以服务化的方式抽象,开发者开发一个 Cloud App 须要作的事情就是在无数的 Function 里面挑选本身须要的“积木”,而后经过一种可视化的工具进行"积木"组合!
2、Serverless Container
前文讲了一些 Serverless 生态的概念及现状,从当前主流的 Serverless/FaaS 框架,如 AWS Lambda、IBM OpenWhisk、Iron.io、阿里云函数计算分析来看,其底层的计算资源一般是 Docker 容器。能够认为 Serverless 构建于容器 (Docker) 之上!
什么是 Serverless Container
Serverless Container(无服务器容器),意味着用户再也不须要关注容器集群和服务器,只需关注 Docker 容器或者 Docker Image 便可。
经过分析业界主流的的 Serverless Container 产品如 AWS Fargate, Azure ACI, 华为 CCI,能够看出:
Serverless Container 提供了更为简单的体验,用户再也不须要理解容器编排技术如 K8s,Swarm;
Serverless Container 提供了更细粒度的的能力,好比微核粒度的 CPU 资源和 MB 粒度的内存资源;
Serverless Container 提供了将容器做为基础计算单元的思路。
Serverless Container VS Kubernets
Kuberntes (K8s) 是谷歌开源的容器管理系统,相似的产品还有 Docker Swarm、Apache Mesos。这些优秀的集群管理系统,尤为是 K8s 已经在生成获得了充分验证,从使用角度来讲,K8s 须要用户具有容器及容器编排、集群管理等多方面的专业知识,而 Serverless Container 对用户屏蔽了容器集群管理,用户使用起来将更简单!
结论:Serverless Container 在容器产品形态上是高于 Kubernetes 的,事实上大部分的 Serverless Container 产品都基于或者兼容 Kubernetes。
Serverless Container VS Serverless/FaaS
根据上文的分析:
Serverless Container 对用户提供的是一种容器计算资源,用户不须要关心容器集群,只须要定制 vCpu、mem 及 Docker Image;
Serverless/FaaS 提供的是一种服务化的计算能力,用户一样不用关心计算集群,只需指定 vCpu,mem 及 Code。
结论:FaaS 及 Serverless Container 的底层计算资源都是 Docker 容器!
本文做者:杨泽强(竹涧)阿里云技术专家
原文连接:https://yq.aliyun.com/article...本文为云栖社区原创内容,未经容许不得转载。