云计算进化进行时,Serverless会成为终极形态吗?

云视角

2018-06-25

科技云报道原创。
“继OpenStack、Docker、MiscroService、Unikernel、Kubernetes和Mesos之后,Serverless正成为Google、Amazon乃至创业公司暗战的新战场。”

说到Serverless,这个概念的诞生由来已久,其首次出现是在2012年。云基础设施服务提供商Iron.io的副总裁Ken Fromm在一篇文章中阐述了为什么他认为Serverless是软件的未来。事实上,Iron.io自2012年以来就对这个概念和框架抱以支持态度。2014年,亚马逊发布AWS Lambda,在这之后,Serverless开始变得流行起来。

2016年,伦敦举办了首届Serverless大会。在最近几年的发展中,业界对Serverless的概念定义也逐渐清晰稳定下来。经过多年发展,云计算逐渐进化到用户仅需关注业务和所需的资源。通过Swarm、K8S等编排工具,容器服务让开发者的体验达到日臻完美的境界。

随着Docker技术的爆发,很多从业者一度认为,Docker可以替代虚拟机,用户只要关注自己的计算和需要的资源就可以,不需要操心到机器这一层。但因为Docker对资源的隔离不够好,各大云厂商的做法还是一个Docker对应一台虚机,不仅成本高,而且给用户暴露虚拟机也就显得十分多余了。

Serverless乍一看感觉荒谬,但其实际意义在于,部署软件无需涉及基础设施建设,它让人们不再操心运行所需的资源,只需关注自己的业务逻辑。Serverless平台可以根据需要自动构建、部署和启动服务的整个过程,用户只需注册所需的业务功能及其资源需求。

许多新技术专家指出,Serverless架构具有缩短交付时间,改善操作和安全实践等功能,以及创造出一种革命性的付费模式——按资源消耗付费。可以说,Serverless架构的兴起,将云计算的发展拉入到了下一个纪元时代。

 

Serverless两种基本形态

Serverless最早用于描述那些大部分或者完全依赖于第三方(云端)应用或服务来管理服务器端逻辑和状态的应用。这些应用通常是富客户端应用、单页应用或者移动端App,他们建立在云端服务生态之上,实现对逻辑和状态进行管理,包括云端数据/文件存储(例如Parse、Firebase)、消息推送(例如极光推送、个推)、应用数据分析等等,这些服务最早被称为Backend as a Service(BaaS,后端即服务)。

开发者通过使用这些服务,在实现自身业务功能的同时,也会对服务的能力进一步提出要求,促进后端服务的发展。BaaS是在PaaS和SaaS之间,为了满足移动互联网快速发展的需要,将后端的能力以服务形式提供,是在PaaS平台开发能力的基础上,用SaaS的思路,将后端能力服务化,让开发者在此基础上开发自己的解决方案。

 

Serverless还可以指代这种情况:应用的一部分服务端逻辑依然由开发者完成,但是不像传统架构那样运行在一个无状态的计算容器中,而是由事件驱动、短时执行、完全由第三方管理,对此有一个叫法是Functions as a service(FaaS,函数即服务)。AWS Lambda 是目前的热门FaaS实现之一。

 

彼时,大家对Serverless概念的认知是后端即服务(BaaS),或移动后端即服务(Mobile Backend-as-a-Service,MBaaS)。甚至有一种观点认为,只要使用了第三方云服务就是Serverless的一种。

但第三方云服务的范畴很广,包含IaaS、SaaS、PaaS三种,单纯认为使用第三方云服务就是Serverless是错误的看法,Serverless是更精细化的一个方向,而不是更大的范畴。

现在看来,Serverless处在技术曲线的早期阶段,尚未达到炒作期的峰值,市场应用上还处于初级阶段。但是,大则如同云、小则如同微服务,Serverless将会是技术的未来趋势。云的进化有很多种方向,Serverless更是应用层面的进化方向。

 

积极关注与跟进   避免纯技术导向的盲目尝试

总体看来,Serverless具有低运营成本、简化设备运维、提升可维护性、更快的开发速度等优势。在业务突发性极高的场景下,系统为了应对业务高峰,必须构建能够应对峰值需求的系统,这个系统在大部分时间是空闲的,这就导致了严重的资源浪费和成本上升。

在Serverless架构下,服务将根据用户的调用次数进行计费,按照云计算pay-as-you-go原则,如果没有东西运行,就不必付款,节省了使用成本。同时,用户能够通过共享网络、硬盘、CPU等计算资源,在业务高峰期通过弹性扩容方式有效的应对业务峰值,在业务波谷期将资源分享给其他用户,有效的节约了成本。

Serverless架构中,开发人员面对的将是第三方开发或自定义的API和URL,底层硬件对于开发人员更加透明化,技术团队无需再关注运维工作,能够更加专注于应用系统开发。

在可维护性方面,Serverless架构中,应用程序将调用多种第三方功能服务,组成最终的应用逻辑。目前,登陆授权服务,云数据库服务等第三方服务在安全性、可用性、性能方面都进行了大量优化,开发团队直接集成第三方服务,能够有效的降低开发成本,同时使得应用的运维过程变得更加清晰,有效的提升应用的可维护性。

 

虽然Serverless架构平台听起来不错,但目前仍存在一些技术弱点。平台会提供Serverless架构给大客户,比如AWS Lambda,运行它需要使用AWS指定服务,一旦用户在这些服务上开发一个复杂系统,便会被AWS粘牢,以后只好任由厂商涨价定价或者下架等操作,个性化需求很难满足,同时不能进行随意迁移,其迁移成本较大。

2016年1月,Facebook关闭曾经花巨额资金收购的Parse,造成用户不得不迁移在这个平台中产生一年多的数据,无疑需要花费较大的人力和时间成本。

另外,Serverless当前并没有太多实践经验,只适合简单的应用开发,缺乏大型成功案例的推动,市场对于Serverless也缺乏统一的认知以及相应标准,无法适应所有的云平台。

 

伴随面向服务架构(SOA)以及微服务架构(MSA)的盛行,造就了Serverless架构的迅猛发展。虽然Serverless架构至今混淆了许多人,但这并不妨碍其成为未来云计算的主要趋势之一。

Serverless正在经历爆发期,新产品和新功能纷纷出现,还有很多可能性等待发掘,其与所有主要平台提供者提供的集成,成为当今最受欢迎的技术之一。Serverless是否会成为云计算的终极形态?我们并不知道,唯有让时间证明一切。对于Serverless,我们给大家的建议是:积极关注与跟进,谨慎结合自己的实际需求使用,避免纯技术导向的盲目尝试。

【科技云报道原创】

微信公众账号:科技云报道

推荐文章