1. 聚能聊>
  2. 话题详情

除了最新的区块链,AI,你知道Serverless吗?

说起当前最火的技术,除了最新的区块链,AI,还有一个不得不提的概念是Serverless。Serverless作为一种新型的互联网架构直接或间接推动了云计算的发展,从AWS Lambda到阿里云函数计算,Serverless一路高歌,同时基于Serverless的轻量计算开始登录云计算的舞台,本文将从两个部分展开:

  1. 介绍 Serverless的概念,历史及其现状与未来的思考。
  2. Serverless Container的概念及现状。

一、聊聊Serverless

前文讲到serverless是一种新型的互联网架构,目前尚没有官方权威的定义,可以认为:

Serverless无服务器架构是基于互联网的系统,其中应用开发不使用常规的服务进程。相反,它们仅依赖于第三方服务(例如AWS Lambda服务),客户端逻辑和服务托管远程过程调用的组合。

AWS Lambda 作为Serverless最早的框架产品由亚马逊在2014年推出,但最早Serverless概念的并不是由亚马逊提出,下面我们简单来聊聊Serverless的历史。

Serverless 历史

image.png | center | 752x198

发轫之始

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的完善带给云计算将会是一次完美进化!

1376176-61d94229c8807648.png | center | 638x359
总所周知,云计算经历了从IDC -> IaaS -> PaaS -> Serverless/FaaS 的发展历程,下面对这些概念做一些基本介绍。

IaaS,PaaS,FaaS 对比

举个例子,比如小明想开一个水果店

  • IDC:如果盖房子,装修,然后上架水果这些工作都是小明自己来做。
  • IaaS:如果小明房子是租的,装修,上架水果是自己做。
  • PaaS: 如果小明房子是租的,可是房子已经装修好了,但是上架水果要自己来做。
  • FaaS:如果有一个商家提供装修好的水果店,小明只负责把水果送过来,其余上架工作都由商家来做。
总结

从IDC → IaaS,用户不用关注真实的物理资源。
从IaaS → PaaS,用户不再关注操作系统,数据库,中间件等基础软件。
从PaaS → BaaS/FaaS, 用户可以很少甚至不用关注backend,app可以简化为一个单页面程序。

Serverless/FaaS 模型

Serverless是基于事件驱动的编程范型,其底层的计算平台一般为轻量计算比如容器计算Docker。
针对该模型本文不再赘述, 下面以AWS Lambda及阿里云函数计算为例,简单介绍该模型。

AWS Lambda

lambda.gif | center | 752x335

大致流程如下:

  1. UI驱动,通过模拟鼠标点击触发事件
  2. 当触发事件增多时lambda实例自动扩容
  3. 当触发事件减少时lambda实例自动缩容

阿里云函数计算

image.png | center | 752x471
流程大致如下:

  1. UI/Event/Message Driven触发事件
  2. 用户Function会package为一个docker镜像
  3. 事件调度系统配合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未来的一些思考

细粒度的计算资源

目前主流的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 Container

Serverless Container(无服务器容器),用户不再需要关注容器集群和服务器,只需关注Docker容器或者Docker Image即可。

Serverless Container VS kubernets

kuberntes(k8s) 是谷歌开源的容器管理系统,类似的产品还有Docker Swarm, Apache Mesos以及集团内的产品Sigma。无疑这些优秀的集群管理系统尤其是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容器!

讨论话题

发展至今Serverless技术已有三年有余,据了解很多前沿的互联网公司已经开始在生产使用Serverless技术,关于Serverless笔者简单抛三个讨论话题,欢迎大家留言讨论。

  1. 你们是怎么使用Serverless框架技术的?主要用在什么样的业务场景?
  2. Serverless为人诟病的一点是Debug困难,你在实践中有哪些经验技巧?
  3. 有哪些技术领域可能是Serverless的潜在战场?区块链?人工智能?IoT?

参考链接

参与话题

奖品区域 活动规则 已 结束

  • 奖品一

    云栖帽衫 x 1

25个回答

0

小可同学 已获得云栖帽衫 复制链接去分享

你们是怎么使用Serverless框架技术的?主要用在什么样的业务场景?
1、首先用Serverless(无服)的方式,可以移除所有这些层次架构,达到更直接的实现。与其仅仅把网页客户端当作应用服务器的界面展示,不如可以构建一个单页Web应用在浏览器中实现应用逻辑。也就是说只需要一个简单的静态网页服务器,所有的交互都只不过是应用内容的传输而已,浏览器就像是一个应用容器。这样,最终的设计就是移除传统Web应用架构中所有的中间层次,允许浏览器直接连接到它所需要的服务上。
2、主要用于基于事件的处理,比如视频处理的后端系统,常见功能需求如下:视频转码、抽取数据、人脸识别等,这些均为通用计算任务,可由函数计算执行。开发者需要自己写出实现逻辑,再将任务按照控制流连接起来,每个任务的具体执行由云厂商来负责。如此,开发变得更便捷。

Serverless为人诟病的一点是Debug困难,你在实践中有哪些经验技巧?
对于serverless的debug功能的问题,当然是一个很重要的地方,对于调试程序起很大的作用,没人可以保证写过一次的程序就可以没问题,所以我的经验哈!!就是遇到问题解决,然后多积累经验!对于常见的错误总结成一个问题书,然后解决!

有哪些技术领域可能是Serverless的潜在战场?区块链?人工智能?IoT?
我觉得可能或多或少的题目所说的行业都会涉及,只是多少的问了!

2

微wx笑 复制链接去分享

你们是怎么使用Serverless框架技术的?主要用在什么样的业务场景?
这个最近刚好在学习,这几天在研究 aws lambda 使用spring 的dependency injection 的问题,
还没有应用到实际的业务场景中。

Serverless为人诟病的一点是Debug困难,你在实践中有哪些经验技巧?
就我目前对 aws lambda 的了解来说,Debug 困难 这个有点夸张!
使用 Serverless框架技术,我认为需要注意几点:
1、用很少的代码来实现一个或一部分关键功能;
2、设计模式变得没那么重要,更重要的应该是效率,节省成本嘛;
3、这是以灵活性为代价的;

有哪些技术领域可能是Serverless的潜在战场?区块链?人工智能?IoT?
我觉得并不是区块链、人工智能、IoT其中的哪一个,而是它们的结合体,Serverless好比它们握手的地方。

0

findi 复制链接去分享

有了SERVERLESS相信有一天智能手机将会被淘汰,替代它的将是折叠显示屏。所有的计算都在云端,终端只需展示内容

xps1900 回复

安全性很大挑战

评论
1

夜明孤行灯 复制链接去分享

1.你们是怎么使用Serverless框架技术的?主要用在什么样的业务场景?
所有定时任务,大部分数据上传处理,一部分数据分析。主要针对的是一些内部应用的定时处理,比如内部培训经费的额度更新,终端用户图片上传后的水印,压缩裁剪等等,还有一些业务预警,也算是定时的,根据日志和其它时序数据库的数据预警。
2.Serverless为人诟病的一点是Debug困难,你在实践中有哪些经验技巧?
所有在阿里云上的函数计算都是nodejs8的。最主要的就是所有代码管理都是包上传,index.js文件只负责触发器的数据输入和输出,所有业务核心都是在别的文件中,这样代码的开发和普通的没啥区别,单元测试的覆盖这些都不是问题。
3.有哪些技术领域可能是Serverless的潜在战场?区块链?人工智能?IoT?
我觉得Iot是一个情况,还有一个用途就是bff层,非常适合这种快速响应,自动伸缩的情况,就是代码管理上出现了很多问题,特别是发布上线这一块。

1

shenyu8454 复制链接去分享

发现了一大波钓鱼的大佬
56d07b2b01b145d3a021ce7c6037dd02_84ef0081a1eb48978ef00a0e07318d8c.jpg

1

北方的郎 复制链接去分享

你们是怎么使用Serverless框架技术的?主要用在什么样的业务场景?
我自己看资料摆弄着玩,不过感觉离公司全面应用应该还有一段时间。
应该是比较轻的应用场景先用起来,作为核心业务的辅助。说实话,我现在还是很难想象一个很重的企业级系统全面采用FAAS是一个什么样子。

Serverless为人诟病的一点是Debug困难,你在实践中有哪些经验技巧?
服务越搞越细,肯定Debug起来越来越麻烦。在用微服务架构开发的时候就已经能感觉到开发效率对比传统的B/S或者ESB架构的SOA有所下降,而且这还是应用了一整套的解决方案的情况下的结果。Serverless如果想要成为主流的话,估计这方面要有很好的方案才行。

有哪些技术领域可能是Serverless的潜在战场?区块链?人工智能?IoT?
要是我排的话是IOT,人工智能,区块链,这个顺序。不过总体来说感觉这几个还都是比较适合Serverless的领域。

0

keller.zhou 复制链接去分享

Serverless的主要优点开发者更加专注于业务逻辑,开发效率更高。开发一个典型的服务器端项目,需要花很多时间处理依赖、线程、日志、发布和使用服务、部署及维护等相关的工作,基于Serverless架构则不需要操心这些工作。用户为实际使用的资源付费。用户购买的ECS使用时间一般不到5成,但是为另外5成闲置时间付费了。Lambda按照运行的时间收费,成本会低很多。NO Architecture,NO Ops。架构师的责任是设计一个高可用、高扩展的架构。运维负责整个系统稳定可靠地运行,适当缩减和增加资源。大型云厂商能保证产品的高可用,Serverless架构本身就是高扩展的。Serverless不再需要服务器端的工作人员,给客户节省了大量的资源。架构师和运维的同学应该好好思考一下未来的出路了。架构师可以转型去做销售,整理用户的需求,然后写写CloudFormation的template就好了。还是成本。IT行业一些领先的公司基础设施非常完善,开发工程师写好代码,然后通过发布平台发布,感觉也是挺方便的。比起Serverless的架构,成本还是要高不少。机器成本。日常、预发、线上,1+1+2=4台服务器少不了。时刻要关注业务数据,盘点资源,看看是否需要扩容和缩减资源。扩容容易,缩减难,造成大量资源闲置。全链路压测是不是很烦?

0

忆念 复制链接去分享

Serverless作为一个新的架构风格,它又与FaaS(Function as a Service)是什么关系?

0

ftp4oss 复制链接去分享

打个标签

0

普特工作室 复制链接去分享

serverless,我认为,急需要有各厂商api统一规范,能可替换可拨插,避免厂商api绑定,否则类似的中兴通信禁止事件,总是会不寒而立,头顶悬剑的危险永远挥之不去。需要像类似javaEE规范那样,按照规范Api来编写应用程序就可以了。

0

1902784459059513 复制链接去分享

区块链吧,猜的

0

1902784459059513 复制链接去分享

没用过

0

宽带 复制链接去分享

有哪些技术领域可能是Serverless的潜在战场?
区块链

0

晚餐 复制链接去分享

有哪些技术领域可能是Serverless的潜在战场?区块链?人工智能?IoT?
再看看

0

1095622481629932 复制链接去分享

没用过
0

1282622910472963 复制链接去分享

案例分析。小明目标是自己开店做老板。最后成了配货员

0

aoteman675 复制链接去分享

Serverless技术真的还没有用过

0

shenyu8454 复制链接去分享

在互联网领域可以懒得更有个性一点,通过集成的方式可以让线上与线下更加完美的融化,最后会产生n个外链,然后取长补短,到最后应该开一个不一样的网吧了吧,重点是网吧营业执照可以说是开发商特别颁发的那种,再也不需要因为注册营业执照的巨额注册资金交智商税。

0

1472422741871802 复制链接去分享

这个主演是干什么的

-1

诺禾 复制链接去分享

你们是怎么使用Serverless框架技术的?主要用在什么样的业务场景?
主要使用过阿里云的函数计算,其只为我们提供了一个运行代码的环境,底层基于容器技术,大大的缩短了我们部署服务器,搭建开放环境的时间成本,同时基于容器,共享底层设备资源,通过函数计算,无需管理服务器等基础设施,只需编写代码并上传。函数计算会为您准备好计算资源,以弹性、可靠的方式运行您的代码。同时代码运行也不收费
应用场景:主要用于快速的小片代码测试,单元测试编写简单的测试用例可快速判断是否代码有bug。

Serverless为人诟病的一点是Debug困难,你在实践中有哪些经验技巧?
讲真的,serverless的debug功能还是真的有待提高,为用户开放出更多的debug高级功能,才能在后面真正的占领市场,对应编写的大型应用,开放工具拥有良好的debug功能,易于调试,在serverless的报错信息简单,对应初入程序的人员来说更难与发现代码bug
经验对应有bug的地方,经常进行单元测试,配合测试人员更易提示工作效率。

有哪些技术领域可能是Serverless的潜在战场?区块链?人工智能?IoT?
我觉得serverless在loT上能占领很大的优势,假设你的后台程序一分钟只需要处理几个请求,这意味着大部分时间 CPU 都是空闲的。如果你不想为空闲时间付费,那么 serverless 架构就很适合你,它能够确保你不会为多余的空闲时间付费。

2
20225
浏览
1
收藏
邀请他人互动
关注
39
粉丝
256
话题
13

简介:

做性价比最高的弹性计算,苛求品质,坚持创新~
提供了高性能可伸缩的容器应用管理服务,支持在一组云服务器上通过Docker容器来进行应用生命周期管理。

为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本...

充分利用阿里云现有资源管理和服务体系,引入中间件成熟的整套分布式计算框架,以应用为中心,帮助企业级客户轻松构建并...