【本文正在参与 “100%有奖 | 我的Serverless 实战”征稿活动】活动链接:https://marketing.csdn.net/p/15940c87f66c68188cfe5228cf4a0c3f
目录
一、什么是Serverless无服务器架构?
二、Serverless无服务器架构有哪些特点?
三、Serverless无服务器架构的核心概念
四、Serverless有哪些方面的应用?
五、基于 Serverless 的前端开发模式
六、关于(SSVM)Serverless WebAssembly的技术实践
七、通用 Serverless 无服务器架构解析
Serverless 应用引擎(Serverless App Engine,简称 SAE)是面向应用的 Serverless PaaS 平台,帮助 PaaS 层用户免运维 IaaS,按需使用,按量计费,实现低门槛微服务应用上云,有效解决成本及效率问题。支持 Spring Cloud、Dubbo 和 HSF 等流行的开发框架,真正实现了 Serverless 架构和微服务架构的完美融合。除了微服务应用外,您还能通过 Docker 镜像部署任何语言的应用。
Serverless不代表再也不需要服务器了,而是说:开发者再也不用过多考虑服务器的问题,计算资源作为服务而不是服务器的概念出现。Serverless是一种构建和管理基于微服务架构的完整流程,允许你在服务部署级别而不是服务器部署级别来管理你的应用部署,你甚至可以管理某个具体功能或端口的部署,这就能让开发者快速迭代,更快速地开发软件。关于Serverless的官网介绍:网站链接
以亚马逊的AWS Lambda为案例,Lambda能让不用思考任何服务器,也就是说,不用你处理服务器上的部署、服务器容量和服务器的扩展和失败容错,还有服务器上选择什么OS操作系统,语言的更新,日志等等问题。你的应用程序只需要和多个第三方的API或服务打交道,也可以自我创建一个无服务器的API。这样就大大减少了开发者在服务器部署和开发上消耗的时间和精力。
根据Serverless的使用特性,Serverless有以下几个特点:
1、Serverless意味无维护,Serverless不代表完全去除服务器,而是代表去除有关对服务器运行状态的关心和担心,它们是否在工作,应用是否跑起来正常运行等等。Serverless代表的是你不要关心运营维护问题。有了Serverless,可以几乎无需Devops了。
2、Serverless不代表某个具体技术,有些人会给他们的语言框架取名为Serverless,Serverless其实去除维护的担心,如果你了解某个具体服务器技术当然有帮助,但不是必须的。
3、Serverless中的服务或功能代表的只是微功能或微服务,Serverless是思维方式的转变,从过去:“构建一个框架运行在一台服务器上,对多个事件进行响应。”变为:“构建或使用一个微服务或微功能来响应一个事件。”,你可以使用 django or node.js 和express等实现,但是serverless本身超越这些框架概念。框架变得也不那么重要了。
4、Serverless规模扩展性方面由于充分利用云计算的特点,因此其扩展是平滑的,同时由于Serverless是基于微服务的,而一些微功能微服务的云计算是零收费,这样有助于降低整体运营费用。
可能会有很多人问了,没有服务器,如何来将程序、应用运行起来呢?在这里要介绍Serverless包含的两个核心概念:函数即服务,Function as a Service FaaS,后端即服务,Backend as a Service BaaS。接下来对这两个概念为大家做一个介绍。
函数即服务 FaaS,作为一种新的计算能力提供方式,让用户抛弃了对服务器的配置和管理,仅需编写和上传核心业务代码,交由平台完成部署、调度、流量分发、弹性伸缩等能力。FaaS的出现,会从底层开始变革计算资源的形态,提供了一种新的方式来提供计算资源,同时也会给软件架构与应用服务部署带来新的设计思路,进一步降低云计算的使用门槛,推动全行业在服务架构上的创新步伐。
后端即服务 BaaS,其实大家已经使用很久了,这里的后端,指的就是各种云产品和云服务,例如对象存储COS,消息队列CMQ,云数据库CDB、TDSQL,云缓存CRedis、CMemcached,甚至到各种以 API 形式提供的服务如万象优图 CI,视频处理 VC。这些产品或服务,用户直接开通即可使用,无需考虑部署、扩容、备份、优化、安全等各种运维工作,做到了开箱即用,无需自己去进行服务器或应用的维护和管理,因此同样也是Serverless的一部分。
数字化建设进程中,与日俱增的企业IT需求和可持续IT交付能力间的“技术债”日益扩大。如何让IT架构更加灵活、敏捷且更轻量级?怎样才能使遗留系统增效运转、新老系统高效联动并加速创新落地?这些都是日前众多互联网企业在进行开发时所思考的问题,因此基于serverless的众多无服务器架构的解决方案也由然而生。
Serverless有三个最突出的应用场景
1、中小企业快速构建云上微服务应用
通过 SAE 帮用户屏蔽底层 IaaS 购买和运维细节,屏蔽底层镜像仓库和 Kubernetes 细节,低门槛通过 WAR/JAR 方式部署微服务应用,大幅提升运维效率,让企业聚焦核心业务本身。
2、应用环境随需灵活启停,节省成本
企业应用通常都有多套环境,除线上环境外,其它环境闲置率高,但重新搭建一套环境的成本也高。SAE 提供了一键启停开发测试环境的能力,即开即用,节省成本,方便运维。
3、利用弹性伸缩来应对不确定的突发流量
互联网、游戏类应用大促活动峰值流量不确定,SLA 和机器成本的平衡点不好找。SAE 提供自动弹性伸缩的能力,帮助应用自动轻松应对流量高峰,保证 SLA 的同时也节省机器成本。
以及静态网站的管理、替代WordPress(Serverless Blog Project)、个人媒体服务器(less!)、物联网Iot或家庭自动框架或项目 (使用 AWS IoT)等都是最有可能应用Serverless架构的场景。
对于真正的serverless开发,到底具有哪些实际的优势?先以传统的前端开发和基于serverless架构的前端开发为例来看。
1、在传统开发流程中,如果想要做到前后分离,我们需要前端工程师写页面,后端工程师写接口。在后端写完接口之后,将接口部署,再进行前后端的联调。联调完毕后再测试、上线。上线之后,还需要运维工程师对系统进行维护。整个过程涉及多个不同角色,链路较长,沟通协调也是一个问题。同时这样是目前传统前端开发的一个弊端。
2、而基于 Serverless架构,后端变得非常简单了,后端应用被拆分为一个个函数,只需要写完函数并部署到 Serverless 服务即可,后续也不用关心任何服务器的运维操作。后端开发的门槛大幅度降低了。因此,只需要一个前端就可以完成所有的开发工作。当然,这也并不是意味着后端工程师的地位减弱了,前端基于 Serverless 去写后端,同样也是需要具备一定的后端知识的。涉及复杂的后端系统或者 Serverless 不适用的场景,还是需要后端开发来编写的。
何为WebAssembly ?WebAssembly 是一个可移植、体积小、加载快并且兼容 Web 的全新格式。由于 WebAssembly 具有很高的安全性,可移植性,效率和轻量级功能,因此它是应用程序安全沙箱方案的理想选择。现如今 WebAssembly 已受到容器,功能计算以及物联网和边缘计算社区的广泛关注。
关于WebAssembly在服务端的位置,在服务器端,我们一般可以把容器、虚拟机或者说运行环境分成三个不同的抽象的层次
1、在最底层是硬件的 Hypervisor VM,或者说像 AWS Firecracker,这种叫做 microVMs,能够直接跟硬件打交道。
2、再上面一层叫做 Application containers,在这种 vm 上面你可以做像 Docker 这样的 application container。application container 仍然是在操作系统这个层级,是需要把整个操作系统调进来的。
3、再上面一层叫做 High level language VMs ,这是从 Jvm 开始的。然后把 WebAssembly 在操作系统这个层级上面给抽象出来了。这是 WebAssembly 在服务端的位置。
通过上面对serverless架构的介绍,其实就可以总结出一个通用的 Serverless 架构。
其中最底层就是实现复杂业务的后端微服务(Backend)。然后 FaaS 层通过一系列函数实现业务逻辑,并为前端直接提供服务。对于前端开发者来说,前端可以通过编写函数的方式来实现服务端的逻辑。同时不管是在后端、FaaS 还是前端,我们都可以去调用云计算平台提供的 BaaS 服务,大大降低开发难度、减少开发成本。小程序云开发,就是直接在前端调用 BaaS 服务的例子。
至此,关于serverless无服务器架构的讲解就和大家分享这些,有不懂的小伙伴欢迎留言评论指出!
觉得不错记得点赞关注哟!
灰小猿陪你一起进步呀!