搜公众号
推荐 原创 视频 Java开发 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库
Lambda在线 > 云计算开源产业联盟 > 浅谈对Serverless的一点理解

浅谈对Serverless的一点理解

云计算开源产业联盟 2019-02-08
举报
点击上方“公众号”可以订阅哦

初识Serverless

Serverless的概念最早要追溯到2012年,Ken Fromm在《软件和应用的未来是Serverless》中率先提出了Serverless的概念,但却并未引起太多涟漪。2012年,虚拟化技术带来的巨大变革还在席卷整个IT产业,容器技术方兴未艾,这为日后Serverless理念在技术层面的落地提供了保障。2014年AWS重磅发布函数计算产品Lambda,将Serverless架构的成熟产品带到世人面前,这一石破天惊的发布正式引爆了Serverless的概念,把Serverless提高到一个全新的层面。Lambda为云中运行的应用程序提供了一种全新的系统体系架构,Serverless开始正式走向云计算的舞台,此后短短几年Serverless产品开始遍地开花。


什么是Serverless

Serverless是一种基于互联网的技术架构理念,Serverless并非完全不使用服务器,而是用户再也不用过多考虑服务器的问题,运维管理和复杂配置都由服务商来提供,用户只需要关注业务逻辑与核心代码的编写,计算资源作为服务提供给用户。Serverless作为创建和管理基于微服务架构的完整流程,允许用户在服务部署级别而不是服务器部署级别来管理应用部署,甚至可以允许用户管理某个具体功能或端口的部署,极大程度上保证了应用程序的快速迭代开发。


目前对于Serverless尚未有非常明确地定义,但Serverless架构包含两部分--函数即服务(FaaS)和后端即服务(BaaS)已成为共识。


Functions as a Service

FaaS是指由事件驱动的全托管计算服务。业务逻辑代码运行在无状态的容器中,可以由事件触发, 仅在触发时调用函数,逻辑处理完成自动释放函数计算。不用于虚拟机或者容器的计算能力仍需承载在操作系统之上,FaaS所提供的直接就是运行环境,即支持多语言的开发环境。对于使用者来说,并没有感知到它下面的服务器在哪里,而是由函数平台完成了函数运行的统一调度。


Backend as a Service

BaaS是指即应用架构由大量三方云服务和API来组织,使应用中关于服务器的逻辑和状态都由服务提供方来管理,例如对象存储、数据库应用、缓存等服务,BaaS具备开通即服务的特点。


FaaS提供计算能力,但是仅有计算能力并不足以完整的支撑用户业务,还需与丰富的后端服务配合使用。FaaS就像粘合剂将事件触发源与后端服务整合在一起,实现业务逻辑的真正落地。


Serverless的达摩克利斯之剑

Serverless作为一种酷炫的云计算技术深深博得了众人眼球,各种颠覆性的优势让人无法抗拒,但同时也需注意到它与生俱来的短板与局限,理性选择不要盲目跟新。


优势1:降低运营成本

无论虚拟机还是容器,尽管在资源弹性上已经大幅提升了资源利用效率,但是为了应对可能存在的业务高峰,也必须提前必须调整能够应对峰值需求的系统容量,这就导致了仍然存在一定的空闲时间与资源浪费。FaaS可以提供毫秒级的弹性伸缩,在事件触发时才调用函数计算,处理完成及时释放,几乎没有闲置浪费。



优势2:提升开发效率

基于Serverless架构,用户不需要关心复杂的运维管理工作,无需处理依赖、线程、日志、发布和使用服务、部署及维护等工作,彻底将用户解放出来,更加专注于业务逻辑的设计与代码的编写,大幅提升开发效率。


缺点1:厂商绑定现象严重

不同云服务商的功能实现方式各有不同,这就意味着如果要更换平台,除了要更新部署、监控等配套的运维工具,还需要更改调整代码以匹配不同服务商FaaS接口。不同解决方案的基础结构组件也有所不同,这也为平台的切换造成了巨大的障碍。


缺点2:全托管环境的安全顾虑

选择拥抱Serverless同时也会面临大量的安全问题,全托管环境的数据保护问题,大量的事件源、后端服务也无形中增加了恶意行为的攻击面。托管环境也使得用户失去了传统应用程序在服务器端提供的防护能力,安全隐患加剧。


Serverless适用场景

Serverless并非普适的技术架构,鲜明独特的技术特点使得它与某些特定的应用场景格外契合,在现阶段,Serverless主要应用在以下几个场景。首先在Web及移动端服务中,可以整合API网关和Serverles服务构建Web及移动后端,帮助开发者构建可弹性扩展、高可用的移动或 Web后端应用服务;在物联网场景下可高效的处理实时流数据,由设备产生海量的实时信息流数据,通过Serverles服务分类处理并写入后端处理;大数据和科学计算应用场景,这部分场景往往需要在较短时间内完成指数级的计算资源扩展,在处理完成之后迅速释放,有明显的波峰波谷特征,Serverless能够满足用户对实时性和并发能力的高要求。


Serverless未来的一些思考

未来Serverless在更加细化粒度的资源使用上潜力无穷。容器技术作为一种比硬件虚拟化更轻量的实现,成为目前Serverless底层计算环境的不二选择,而随着Serverless架构应用场景的不断丰富,更加细化的计算资源规格也呼之欲出,Serverless大有可为。


函数编排将打开复杂应用场景的一扇窗。现阶段的函数计算多适用于触发源与函数一对一或是一对多的场景,多对多的复杂场景尚难实现。随着Serverless技术应用的深化,支持多函数多事件的编排,完成复杂场景的事件触发机制的搭建,将有巨大的需求空间。


Serverless的标准化进程仍需加速。目前业界尚无统一的Serverless相关标准,各大云服务商的产品各成体系,导致用户很难完成多云间的无缝迁移,在一定程度上影响了用户使用这种技术的信心。建立一套独立且能兼容各个服务供应商,并带来统一体验的框架标准,将成为用户的一阵强心剂。


作者简介

刘如明,中国信通院云大所云计算部工程师,主要从事可信云基础服务、解决方案类产品评估测试工作,以及新兴云计算技术的研究与标准制定工作。联系方式:liuruming@caict.ac.cn


版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《浅谈对Serverless的一点理解》的版权归原作者「云计算开源产业联盟」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

举报