《前端serverless面向全栈的无服务器架构实战》读书笔记

data159 data159     2023-03-21     470

关键词:

《前端serverless 面向全栈的无服务器架构实战》读书笔记

第1章 什么是severless

什么是NoOps

利用自动化运维代替手工运维模式

什么是severless

开发者无需关注服务器资源配置情况、部署情况、操作系统以及依赖软件等在内等所有细节,这一切都由平台完成,开发者只需要专注于业务实现。

serverless是指在应用的构建环节或应用环节都无需对服务器进行操作

云原生计算基金会CNCF

2015年谷歌用go语言重构了内部用于容器编排的项目也就是后来的k8s。随着k8s的发布,谷歌与linux基金会合作成立了cncf(cloud native computing foundation)。

最初云原生主要包括微服务、容器编排、容器三大能力。随着云计算的发展,cncf于2018年重新定义了云原生技术。官方描述如下:云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网络、微服务、不可变基础设施和声明式api.

云原生计算基金会cncf致力于培育和维护一个厂商中立的开源生态系统,已推广云原生技术。

serverless应该包含哪几种能力

serverless应该包含任意一种能力

  • 函数即服务fass 即function as a service,提供基于事件驱动的计算服务。开发者以函数片段的方式来管理应用代码,这些函数通过事件或者http请求来触发函数。与传统应用相比,其以更细粒度的函数方式来进行部署。
  • 后代即服务baas 即backend as a service,指的是可以用来替换应用程序中的一些核心能力,且可以通过api的方式提供的第三方服务。通常是我们使用的各个中间件服务,比如数据库、缓存、消息队列等。

前端架构的演化

静态内容展示

主要是以静态内容展示为主,主要展示文字,图片使用的比较少。服务端主要由CGI完成开发。前端只需要编写简单的html页面就可以了。

可交互页面

网景发现当用户填写一个网页表单之后,需要提交整个表单内容才能确认是否填写正确。消耗流量且需要重复多次。网景公司希望通过客户端脚本,让用户在发送表单请求之前就在客户端中完成对表单内容的检查,以提高用户体验和使用效率。

js语言在这个时期诞生,让网页具备了动态运行脚本的能力。

同时服务端领域诞生了asp、php、jsp三大技术。

与之前的CGI相比,js更加容易的编写动态网站,结合js脚本能力,成为复杂客户端的web应用。

同时期bbs、ie6浏览器兼容等成为这个阶段的主要问题。

web2.0

1998年ajax技术被提出,在这之前,服务端处理的每一个请求都需要在浏览器中重新刷新并加载整个网页,用户体验、使用效率方面都不理想,而ajax解决了这部分问题,使得网页局部刷新成为了可能。ajax的大规模普及则在2004年。

2006年jquery诞生,为操作浏览器dom提供了大量强大且易用的api. 同时抹平了浏览器之间的差异,逐渐成为最广泛使用的函数库。

这一时期逐渐分化出前端研发工程师的岗位,前后端协作也开始。️有2种协作模式

  • 第一种是前端研发人员写完静态页面交由给后端工程师改写为动态页面如jsp、php等。后端工程师需要将我们页面写死的固定数据改为动态循环数据。我们将这种模式成为套模板。优势是前端无需了解后端实现,只需要实现静态仿真页面;缺点是功能变更或扩展难,项目上线后原有代码已经与服务端进行融合,因此让前端开发新的仿真页面很难进行替换。
  • 前端研发搭建后端运行环境。也就是前端可以运行后端环境并进行修改,解决了产品迭代的问题。缺点是将不必要的后端代码暴漏给了前端,增加了学习成本。

在这两种模式下,前后端的工作存在大量交互且边界有些模糊。

单页面应用

随着web技术的发展,spa概念被提出。伴随着这个概念还有数十个相关的前端框架。

在这种模式下,通过服务端渲染的页面开始向前端迁移,这时前后端协作的模式发生了变化。前端的所有逻辑都将打包成一个js bundle,因此我们只需要后端提供一个入口html页面就可以加载整个应用。这时后端只需要提供api接口即可完成数据都交换。

当前端发布时,只需要在入口文件中,修改js bundle的版本号即可。前端负责整个view页面的开发,包括与api的对接。这个时候通常是开发的时候相互开发,但前端会将打包后的bundle文件通过入口html引入加载整个应用。

前后端分离

在angular发布的同一年2009年,nodejs也登上了舞台。nodejs的出现让我们前端工程化的成熟。

2015年,基于bff的架构理念被提出。也就是在ui和后端服务之间加入中间层用来处理业务逻辑。

基于serverless的前后端分离

由于增加了bff层,前端需要关注服务器的系统稳定性、可扩展指标,同时需要排查如内存溢出等问题,这是我们之前未接触过的工作甚至有点陌生。后来随着devOps配套工具的成熟,前端可以比较容易的监控日志、异常排查等一系列服务器操作。

云计算工具在一定程度上解决了运维问题稳定性得到了保障,但在bff真实架构中,除了稳定性问题,我们还需要考虑部署成本和服务器成本的增加。

假设伴随着业务发展,移动端、pc端等都需要一个bff中间层,我们要考虑稳定性问题就会采用一个机房多个实例和多个机房部署都策略,但bff层的流量偏低的话会浪费大量的计算资源。

如果能够通过serverless实现bff架构,让前端研发人员仅编写和部署函数,当没有请求的时候基于云原生技术的弹性计算能力这些函数的实例将自动缩容。这样一来,基于serverless的bff不仅降低了前端在服务器运维上的成本,还能快速完成函数的部署,还可以按需计费。

 

面向全栈的技术管理(多图)

...和飞马网的技术嘉年华上,斗胆披上吹牛的嫌疑,分享了面向全栈的技术管理,现赘述如下。研发管理有着广义和狭义的定义,总的来说,研发管理就是在研发体系基础之上,借助信息平台进行的团队建设、流程设计、绩效管理... 查看详情

全栈必备面向数据的架构

数据是系统的核心,在面向服务的架构之外,可以考虑面向数据的架构方式。面向数据的服务架构需要支持多数据源异构,支持动态数据和静态数据,既支持公有云部署又支持私有云部署,提供多种数据应用和数据产品,如下图... 查看详情

认识与设计serverless

一、什么是Serverless  定义:Serverless是一种无服务器的架构,区别于传统的Baas,SAAS,作为FAAS(函数即服务)而存在,函数由事件驱动触发并按需调用。  按需调用:区别于传统的7x24小时运行的服务,Serverless只会在特定事... 查看详情

什么是serverless架构

Serverless(无服务器架构)是指服务端逻辑由开发者实现,应用运行在无状态的计算容器中,由事件触发,完全被第三方管理,其业务层面的状态则存储在数据库或其他介质中。Serverless可以使开发者更聚焦在业务逻辑,而减少对... 查看详情

玩转serverless架构概念篇+开发基础篇+开发进阶篇+场景案例篇

玩转Serverless架构概念篇+开发基础篇+开发进阶篇+场景案例篇你好,我是老蒋,一个在前端摸爬滚打7年的老兵,目前是国内某一线大厂的资深软件工程师。2017年国内Serverless技术刚刚兴起,我就开始使用和推广Serverless了,当时,... 查看详情

serverless选型:深度解读serverless架构及平台选择

...在每个阶段要面对的问题,然后组合解决方案,提炼面向Serverless的开发模型,并与业界提出的Serverless产品形态做对应,为开发者采用Serverless架构和服务提供参考。近两年来,Serverless概念在开发者中交流的越来越多,主题分享... 查看详情

serverless入门学习(代码片段)

MVC架构MVC前端:View层后端:Control层&&Model层Serverless解决问题的边界,就是服务端的边界,即服务端运维。Serverless狭义Serverless(最常见)=Serverlesscomputing架构=FaaS架构=Trigger(事件驱动)+FaaS(函数即服务)+BaaS(后端即服务... 查看详情

node.js|从前端到全栈的必经之路(代码片段)

前言对于前端开发的朋友们,是否有这样的烦恼或需求:想要开发一个心仪的项目但没有后端朋友的合作,而只能使用mock?与后端合作开发中总感觉约束,不能很好的交流所想,从而拖慢进度?不甘心自己只能和他人合作开发... 查看详情

serverless选型:深度解读serverless架构及平台选择

...在每个阶段要面对的问题,然后组合解决方案,提炼面向Serverless的开发模型,并与业界提出的Serverless产品形态做对应,为开发者采用Serverless架构和服务提供参考。近两年来,Serverless概念在开发者中交流的越来越多,主题分享... 查看详情

node.js|从前端到全栈的必经之路(代码片段)

...题解析🧧加入社区领红包:海底烧烤店ai(从前端到全栈)🧑‍💼个人简介:即将大三的学生,一个不甘平庸的平凡人🍬Ǵ 查看详情

Serverless graphql 拆分成微服务

】Serverlessgraphql拆分成微服务【英文标题】:Serverlessgraphqlsplitintomicroservices【发布时间】:2018-06-2808:07:19【问题描述】:如何将在一个lambda函数中运行的无服务器graphql端点拆分为多个微型lambda函数以实现可扩展性?是否需要有多... 查看详情

什么是serverless无服务?

什么是serverless无服务?serverless中文的含义是"无服务器",但是它真正的含义是开发者再也不用过多考虑服务器的问题,但是并不代表完全去除服务器,而是我们依靠第三方资源服务器后端,比如使用AmazonWebServices(AWS)Lambda.计算服... 查看详情

添物零基础到大型全栈架构师移动和服务端架构完整(全栈篇)-概述

...ff08;FullStack)是什么?   全栈就是能够独立开发服务器端,客户端,移动端的人。前端后端移动端…...小全栈服务器+前端服务器+移动端有一篇文章写的很好,叫全栈工程师到底有什么用可以参考... 查看详情

serverless基本概念入门

从行业趋势看,Serverless是云计算必经的一场革命2019年,Serverless被Gartner称为最有潜力的云计算技术发展方向,并被赋予是必然性的发展趋势。Serverless从底层开始变革计算资源的形态,为软件架构设计与应用服务部署带来了新的... 查看详情

serverless实战-2分钟,教你用serverless每天给女朋友自动发土味情话(代码片段)

一、Serverless简介Serverless,中文意思是“无服务器”,所谓的无服务器并非是说不需要依靠服务器等资源,而是说开发者再也不用过多考虑服务器的问题,可以更专注在产品代码上,同时计算资源也开始作为服... 查看详情

serverless无服务应用架构纵横谈

Serverless无服务应用架构纵横谈 一、Serverless是啥自从互联网兴起以来,Server就成了网络的核心部件。所以围绕Server的生意圈,也发展得如火如荼。从最早的电信托管,到虚拟机,到现在的Serverless,形成了几大阵容:1、IaaS(... 查看详情

实战指南|serverless架构下的应用开发

UCBerkeley认为Serverless架构的出现过程类似于40多年前从汇编语言转向高级语言的过程,在未来Serverless架构的使用会飙升,或许服务器式云计算并不会消失,但是将促进BaaS发展,以更好地为Serverless架构提供支持。Ser... 查看详情

昇腾ascend随记——昇腾ai的基本架构

...基础。2.异构计算架构CANN2.1CANN抽象的五层架构华为公司面向计算机视觉、自然语言处理、推荐系统、类机器人等领域量身打造了基于“达芬奇(DaVinci)架构”的昇腾(Ascend&#x 查看详情