做者 | 杨泽强(竹涧)阿里云技术专家html
提及当前最火的技术,除了最新的区块链、AI,还有一个不得不提的概念是 Serverless。Serverless 做为一种新型的互联网架构,直接或间接推进了云计算的发展,从 AWS Lambda 到阿里云函数计算,Serverless 一路高歌,同时基于 Serverless 的轻量计算开始登陆云计算的舞台,本文将从两个部分展开:docker
前文讲到 Serverless 是一种新型的互联网架构,目前尚没有官方权威的定义,能够认为:数据库
Serverless 无服务器架构是基于互联网的系统,其中应用开发不使用常规的服务进程。相反,它们仅依赖于第三方服务(例如 AWS Lambda 服务),客户端逻辑和服务托管远程过程调用的组合。编程
AWS Lambda 做为 Serverless 最先的框架产品,在 2014 年由亚马逊推出,但最先的 Serverless 概念并非由亚马逊提出,下面咱们来简单聊聊 Serverless 的历史。后端
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 产品已遍地开花。app
随着容器技术、IoT、5G、区块链等技术的快速发展, 技术上对去中心化,轻量虚拟化,细粒度计算等技术需求愈发强烈,而 Serverless 必将借势迅速发展,将来 Serverless 将在云计算的舞台上大放异彩!负载均衡
首先,抛一个总结性观点:云计算的发展从IaaS、PaaS、SaaS,到最新的 BaaS、FasS,在这个趋势中 serverless (去服务器化)愈来愈明显,而 Serveless 的完善带给云计算将会是一次完美进化!
众所周知,云计算经历了从 IDC -> IaaS -> PaaS -> Serverless/FaaS 的发展历程,下面对这些概念作一些基本介绍。
目前知名的 IaaS 平台有 AWS、Azure、Google Cloud Plantform、阿里云以及开源的 OpenStack 等。
PaaS (Platform as a Service) 平台即服务,服务商提供基础设施底层服务,提供操做系统(Windows,Linux)、数据库服务器、Web 服务器、负载均衡器和其余中间件,相对于 IaaS 客户仅仅须要本身控制上层的应用程序部署与应用托管的环境。
目前知名的 PaaS 平台有 Amazon Elastic Beanstalk,Azure,Google App Engine,VMware Cloud Foundry 等。
SaaS (Software as a Service) 软件即服务, 服务商提供基于软件的解决方案,如 OA、CRM、MIS、ERP、HRM、CM、Office 36五、iCloud 等,客户不需考虑任何形式的专业技术知识,只须要经过服务商平台获取软件使用便可。
BaaS (Backend as a Service) 后端即服务,服务商为客户(开发者)提供整合云后端的服务,如提供文件存储、数据存储、推送服务、身份验证服务等功能,以帮助开发者快速开发应用。
FaaS (Function as a Service) 函数即服务,服务商提供一个平台,容许客户开发、运行和管理应用程序功能,而无需构建和维护基础架构。 按照此模型构建应用程序是实现“无服务器”体系结构的一种方式,一般在构建微服务应用程序时使用。
举个例子,好比小明想开一个水果店:
从 IDC → IaaS,用户不用关注真实的物理资源。
从 IaaS → PaaS,用户再也不关注操做系统,数据库,中间件等基础软件。
从 PaaS → BaaS/FaaS, 用户能够不多甚至不用关注 backend,app 能够简化为一个单页面程序。
能够说,Serverless 是云计算发展到必定阶段的必然产物,云计算做为普惠科技,发展到最后必定是绿色科技(最大程度利用资源,减小空闲资源浪费)、大众科技(成本低,包括学习成本及使用成本)的产品,而 Serverless 将很好的诠释这些!
Serverless 是基于事件驱动的编程范型,其底层的计算平台通常为轻量计算,好比容器计算 Docker。
针对该模型本文再也不赘述, 下面以 AWS Lambda 及阿里云函数计算为例,简单介绍该模型。
大体流程以下:
流程大体以下:
Serverless/FaaS 区别于 IaaS/PaaS 预先分配计算资源的计费方式,其计费方式一般是按请求次数及运行时间,一方面能够最大程度利用资源,另外一方面真正的按需计费下降用户的资源成本。
Serverless 架构一个显而易见的优势即“横向扩展是彻底自动的、有弹性的、且由服务提供者所管理”。
据统计,商业和企业数据中心的典型服务器仅提供 5%~15% 的平均最大处理能力的输出,本质上这是对社会资源的一种浪费。而在 Serverless 架构下,提供商将提供更细力度的计算能力,最大限度知足实时需求,资源利用率将大幅度提高,能够认为相对 IaaS 与 PaaS,Serverless/FaaS 是一种 “绿色” 计算。
运维的发展经历了人肉运维、自动化运维、DevOps、AiOps 等,而 Serverless 带来一种新的运维模式,这种模式下用户须要管理的只有 Code 能够认为 NoOps。
目前主流的 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 里面挑选本身须要的“积木”,而后经过一种可视化的工具进行"积木"组合!
前文讲了一些 Serverless 生态的概念及现状,从当前主流的 Serverless/FaaS 框架,如 AWS Lambda、IBM OpenWhisk、Iron.io、阿里云函数计算分析来看,其底层的计算资源一般是 Docker 容器。能够认为 Serverless 构建于容器 (Docker) 之上!
Serverless Container(无服务器容器),意味着用户再也不须要关注容器集群和服务器,只需关注 Docker 容器或者 Docker Image 便可。
经过分析业界主流的的 Serverless Container 产品如 AWS Fargate, Azure ACI, 华为 CCI,能够看出:
Kuberntes (K8s) 是谷歌开源的容器管理系统,相似的产品还有 Docker Swarm、Apache Mesos。这些优秀的集群管理系统,尤为是 K8s 已经在生成获得了充分验证,从使用角度来讲,K8s 须要用户具有容器及容器编排、集群管理等多方面的专业知识,而 Serverless Container 对用户屏蔽了容器集群管理,用户使用起来将更简单!
结论:Serverless Container 在容器产品形态上是高于 Kubernetes 的,事实上大部分的 Serverless Container 产品都基于或者兼容 Kubernetes。
根据上文的分析:
结论:FaaS 及 Serverless Container 的底层计算资源都是 Docker 容器!
“ 阿里巴巴云原生微信公众号(ID:Alicloudnative)关注微服务、Serverless、容器、Service Mesh等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,作最懂云原生开发者的技术公众号。”