当前位置 博文首页 > 灰小猿的博客:我的Serverless实战——能掰扯面试官的SSVM超详细

    灰小猿的博客:我的Serverless实战——能掰扯面试官的SSVM超详细

    作者:[db:作者] 时间:2021-07-17 13:09

    【本文正在参与 “100%有奖 | 我的Serverless 实战”征稿活动】活动链接:https://marketing.csdn.net/p/15940c87f66c68188cfe5228cf4a0c3f

    目录

    一、什么是Serverless无服务器架构?

    二、Serverless无服务器架构有哪些特点?

    三、Serverless无服务器架构的核心概念

    四、Serverless有哪些方面的应用?

    五、基于 Serverless 的前端开发模式

    六、关于(SSVM)Serverless WebAssembly的技术实践

    七、通用 Serverless 无服务器架构解析


    一、什么是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的使用特性,Serverless有以下几个特点:

    1、Serverless意味无维护,Serverless不代表完全去除服务器,而是代表去除有关对服务器运行状态的关心和担心,它们是否在工作,应用是否跑起来正常运行等等。Serverless代表的是你不要关心运营维护问题。有了Serverless,可以几乎无需Devops了。

    2、Serverless不代表某个具体技术,有些人会给他们的语言框架取名为Serverless,Serverless其实去除维护的担心,如果你了解某个具体服务器技术当然有帮助,但不是必须的。

    3、Serverless中的服务或功能代表的只是微功能或微服务,Serverless是思维方式的转变,从过去:“构建一个框架运行在一台服务器上,对多个事件进行响应。”变为:“构建或使用一个微服务或微功能来响应一个事件。”,你可以使用?django or node.js 和express等实现,但是serverless本身超越这些框架概念。框架变得也不那么重要了。

    4、Serverless规模扩展性方面由于充分利用云计算的特点,因此其扩展是平滑的,同时由于Serverless是基于微服务的,而一些微功能微服务的云计算是零收费,这样有助于降低整体运营费用。

    ?

    三、Serverless无服务器架构的核心概念

    可能会有很多人问了,没有服务器,如何来将程序、应用运行起来呢?在这里要介绍Serverless包含的两个核心概念:函数即服务,Function as a Service FaaS,后端即服务,Backend as a Service BaaS。接下来对这两个概念为大家做一个介绍。

    函数即服务 FaaS

    函数即服务 FaaS,作为一种新的计算能力提供方式,让用户抛弃了对服务器的配置和管理,仅需编写和上传核心业务代码,交由平台完成部署、调度、流量分发、弹性伸缩等能力。FaaS的出现,会从底层开始变革计算资源的形态,提供了一种新的方式来提供计算资源,同时也会给软件架构与应用服务部署带来新的设计思路,进一步降低云计算的使用门槛,推动全行业在服务架构上的创新步伐。

    后端即服务 BaaS

    后端即服务 BaaS,其实大家已经使用很久了,这里的后端,指的就是各种云产品和云服务,例如对象存储COS,消息队列CMQ,云数据库CDB、TDSQL,云缓存CRedis、CMemcached,甚至到各种以 API 形式提供的服务如万象优图 CI,视频处理 VC。这些产品或服务,用户直接开通即可使用,无需考虑部署、扩容、备份、优化、安全等各种运维工作,做到了开箱即用,无需自己去进行服务器或应用的维护和管理,因此同样也是Serverless的一部分。

    ?

    四、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开发,到底具有哪些实际的优势?先以传统的前端开发和基于serverless架构的前端开发为例来看。

    1、在传统开发流程中,如果想要做到前后分离,我们需要前端工程师写页面,后端工程师写接口。在后端写完接口之后,将接口部署,再进行前后端的联调。联调完毕后再测试、上线。上线之后,还需要运维工程师对系统进行维护。整个过程涉及多个不同角色,链路较长,沟通协调也是一个问题。同时这样是目前传统前端开发的一个弊端。

    2、而基于 Serverless架构,后端变得非常简单了,后端应用被拆分为一个个函数,只需要写完函数并部署到 Serverless 服务即可,后续也不用关心任何服务器的运维操作。后端开发的门槛大幅度降低了。因此,只需要一个前端就可以完成所有的开发工作。当然,这也并不是意味着后端工程师的地位减弱了,前端基于 Serverless 去写后端,同样也是需要具备一定的后端知识的。涉及复杂的后端系统或者 Serverless 不适用的场景,还是需要后端开发来编写的。

    ?

    六、关于(SSVM)Serverless WebAssembly的技术实践

    何为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架构的介绍,其实就可以总结出一个通用的 Serverless 架构。

    其中最底层就是实现复杂业务的后端微服务(Backend)。然后 FaaS 层通过一系列函数实现业务逻辑,并为前端直接提供服务。对于前端开发者来说,前端可以通过编写函数的方式来实现服务端的逻辑。同时不管是在后端、FaaS 还是前端,我们都可以去调用云计算平台提供的 BaaS 服务,大大降低开发难度、减少开发成本。小程序云开发,就是直接在前端调用 BaaS 服务的例子。

    至此,关于serverless无服务器架构的讲解就和大家分享这些,有不懂的小伙伴欢迎留言评论指出!

    觉得不错记得点赞关注哟!

    灰小猿陪你一起进步呀!

    cs