还记得在十多年前,SaaS鼻祖SalesForce喊出的口号『No Software』吗?SalesForce在这个口号声中开创了SaaS行业,并成为当今市值520亿美元的SaaS之王。今天谈谈『No Server』有关的事, 继OpenStack、Docker 、MiscroService、Unikernel、Kubernetes和Mesos之后,ServerLess正成为Google、AWS乃至创业公司暗战的新战场,它能否成为云计算领域的颠覆性趋势?
我相信大家也会存在一些疑问: Serverless到底是什么鬼?Serverless架构有啥优点,竟然让IT界巨头纷纷布局?业界有哪些已经成功的产品使用了Serverless架构?我们的项目是否适合使用Serverless架构?Martin Fowler在2016.6.17号发表了一篇博客: 《Serverless Architectures》,引起业界的关注,同时Serverless与我们目前研发的产品相关,也进行一些研究与实践。下面我将会从以下几点进行分享:
一.Serverless的背景以及概念
1.1 Serverless的背景
当我们还在容器的浪潮中前行时,已经有一些革命先驱悄然布局另外一个云计算战场:Serverless。
2014年11月14日,亚马逊AWS发布了新产品Lambda。当时Lambda被描述为:一种计算服务,根据时间运行用户的代码,无需关心底层的计算资源。从某种意义上来说,Lambda姗姗来迟,它更像S3,更像云计算的PaaS理念:客户只管业务,无需担心存储和计算资源。而在此之前不久,2014年10月22日,谷歌今天收购了实时后端数据库创业公司Firebase。Firebase声称开发者只需引用一个API库文件就可以使用标准REST API的各种接口对数据进行读写操作,只需编写 HTML+CSS+JavaScrip前端代码,不需要服务器端代码(如需整合,也极其简单)。
相对于上两者,Facebook 在2014年二月收购的 Parse,则侧重于提供一个通用的后台服务。不过这些服务被称为Serverless或no sever。想到PaaS了是吗?很像,用户不需要关心基础设施,只需要关心业务,这是迟到的PaaS,也是更实用的PaaS。这很有可能将会变革整个开发过程和传统的应用生命周期,一旦开发者们习惯了这种全自动的云上资源的创建和分配,或许就再也回不到那些需要微应用配置资源的时代里去了。
1.2 Serverless的概念
提到Serverless,大家都想到一张经典图描述传统的互联应用架构图与Serverless architactures的不同点,Serverless架构能够让开发者在构建应用的过程中无需关注计算资源的获取和运维,由平台来按需分配计算资源并保证应用执行的SLA,按照调用次数进行计费,有效的节省应用成本,如下所示
Serverless是最新兴起的架构模式,中文意思是“无服务器”架构。目前,业界并没有给出明确的定义,把其分成两种类型,分别为“Backend as a Service” 和 “Functions as a Service”。
“Backend as a Service”即BaaS,是一种新型的云服务,旨在为移动和Web应用提供后端云服务,实现对逻辑和状态进行管理,包括云端数据/文件存储(例如Parse、Firebase)、消息推送(例如极光推送、个推)、应用数据分析等等。可以说BaaS是诞生于移动互联网,为了加速移动应用开发和降低成本而形成的开发架构。BaaS可以带来后端能力的服务化,服务化也为后端能力优化管理带来了可能,这些能力通过服务开发者而诞生,重复的建设和规划会在初期就得到避免。
开发者通过使用这些服务,实现自己的业务功能的同时,也会对服务的能力进一步提出要求,促进后端服务的发展。BaaS是在PaaS和SaaS之间,为了满足移动互联网快速发展的需要,将后端的能力以服务形式提供,是在PaaS平台开发能力的基础上,用SaaS的思路,将后端能力服务化,让开发者在此基础上开发自己的Software解决方案。
“Functions as a Service”即FaaS,指这样的应用,一部分服务逻辑由应用实现,但是跟传统架构不同在于,他们运行于无状态的容器中,可以由事件触发,短暂的,完全被第三方管理,功能上FaaS就是不需要关心后台服务器或者应用服务,只需关心自己的代码即可。其中AWS Lambda是目前最佳的FaaS实现之一。
二.Serverless与传统架构比较
传统的互联网APP主要采用C/S架构,服务器端需长期维持业务进程来处理客户端请求,并调用代码逻辑完成请求响应流程。而在Serverless架构中,应用业务逻辑将基于FAAS架构形成独立为多个相互独立功能组件,并以API服务的形式向外提供服务;同时,不同功能组件间的逻辑组织代码将存储在Amazon Lambda,Azure Function,Google Cloud Functions等产品上,业务代码仅在调用时才激活运行,当响应结束占用资源便会释放。
2.1 Serverless架构的优势
2.2 Serverless架构的缺点
三.Serverless架构适合
哪些业务场景以及竞品分析
3.1 Serverless架构适合哪些业务场景
3.2 Serverless架构业界竞品分析
四.Serverless理解容易存在误区
4.1 不能简单理解为PaaS
对于Serverless的理解,Adrian Cockcroft曾经这样说过“如果你的PaaS可以将以前半秒启动的应用在20ms内启动,就叫它Serverless”,换句话说,许多PaaS应用不会每次请求来了启动,请求结束则关闭,可以认为FaaS是一种特殊化的PaaS。但是又存在一些不同点,FaaS让用户更加注重自己的业务,不需要关注代码部署以及部署到那个服务器,甚至不需要考虑可扩展性(scaling),而PaaS平台会考虑这些因素。
4.2 NoOps并不意味着“免运维”
Serverless并不意味着“免维护”,应该意味着“不需定时维护“。Serverless不代表完全去除服务器,而是代表去除有关对服务器运行状态的关心和担心,以及透明化基础设施。首先“Ops”意味着比服务器维护更多的内容,Serverless不要关注基础设施以及服务器,但是针对应用还是存在监控、网络、安全,以及产品排错等问题,这些问题对于Serverless应用来说仍然还在,需要一种策略来处理。
总结
本文从业内发展趋势引出Serverless架构,然后分成几大模块进行讲解:
第一部分,Serverless背景来源以及其概念定义,Serverless代表无服务器计算技术崛起, 是新一代云服务和开发架构的实践,主要分为BaaS和FaaS两部分;
第二部分,Serverless架构与传统架构比较的优缺点,Serverless架构低运营成本、简单化运维与高效开发速度等优点,同时也带来平台商的绑架以及目前技术不够成熟等问题存在;
第三部分,Serverless架构适合那些业务场景以及竞品分析;
第四部分,主要讲解对于Serverless架构,一些大家容易出现偏差的概念。
Serverless代表无服务器计算技术崛起, 是微服务的一种表现形式,是新一代云服务和开发架构的实践,是云计算发展重点方向之一。Serverless架构是BaaS实现的精髓,是BaaS进一步的解读,FaaS(Function as a service)是BaaS中云代码的实现方式。作为使用方我们不仅熟悉业内Serverless架构的经典产品,而且需要进行学习进而开发属于自己Serverless产品,或者能够很好的进行选型为自己产品快速的开发与运营提供基础条件。
关于作者:
王召
现任普元信息资深开发工程师,为普元新一代数字化企业云平台开发团队一员,负责新一代SPM(软件产品管理)与MKT(软件市场)领域系统的开发。曾在百度西北营销自主研发中心、格林谈谈科技等互联网公司从事开发经理工作,曾主导开发过多款电商和社交项目,并获得风险基金的投资。平时喜欢旅游,骑行,爬山等活动。