开发者学堂课程【Serverless 架构在前端应用领域的价值:Serverless 架构在前端应用领域的价值】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/845/detail/14015
Serverless 架构在前端应用领域的价值
l 前端发展史简介
l 前端的诞生
1990 年,第一个 Web 浏览器诞生,1991 年万维网诞生,标志着前端技术的开始。
l 前端的应用场景变迁
l 前端开发语言能力的变化
l Serverless 又给前端带来了什么?
思考三个问题:
Serverless 跟前端的关联在什么地方?
Serverless 跟做客户端开发的有没有关系?
Serverless 带给 web 开发的改变是什么?
l Serverless跟前端的关联
Javascript、python 这类解析执行型的语言,天然对 Serverless 冷启动有着友好的支持,成为 Serverless 语言开发的主力。
58% 的用户使用 Python , Node.js 则占据了 31% 的份额,Java、Go、.NET Core和 Ruby 的份额均未超过 10%。
小型的 lambda 运行环境中,Nodejs 份额高于 Python,企业级组织中,Python 的使用频率则是 Nodejs 的4倍。
l 站在 Serverless 肩上
前端工程师构建服务的能力无限加强
前端工程师的生产力也大幅提高。
快速交付
u 不用再搭建服务器,不用为保障高可用,安全编写非业务代码,可以大幅缩短项目交付的时间
运维无忧
u Serverless 服务可以完成自动扩缩容,不用担心大规模流量冲击完备的监控告警体系和链路追踪能力方便故障定位
成本降低
u 用完即走的特性可以帮助避免计算资源的浪费
l Serverless跟做客户端开发的有没有关系?
传统的客户端想操作服务器上的数据库必须经过服务端。
客户端跟网关的通道建成后,可以透明化对服务逻辑的调用,可以让客户端看起来可以直接操作数据库,文件存储,登录注册等服务端的功能。
l Serverless 带来新的客户端访问服务端形式
Serverless 让通用的服务端能力形态沉淀成 BAAS,再通过 graphql 建立数据通道来让不同的客户端直接访问,可以进一步提升前端应用的开发效率,这也会成未来端侧访问服务的新形态。
l Serverless 带给 web 开发的改变是什么?
传统的 web 站点的开发流程:
l 传统 web 站点开发的问题
1. 耗时长:从设计开发测试部署上线往往经历数周甚至数月才能有上线。
2. 访问体验一般:SEO,站点加速等都需要单独专项做,一般新手不太容易搞定。
3. 更新迭代慢:每次更新重新部署上线的周期长,更新内容如果是动态的研发时间也会比较长。
l 现代化Web 站点构建介绍
l 建站演示
准备工作:
1. 进入 Serverless devs官网,下载桌面开发工具 Serverless Desktop (支持windows 和 mac 版)。
2. 申请注册阿里云账号,并开通阿里云函数计算产品(免费开通)。
创建演示步骤:
打开 start—jamstack,点击下载,在本地选择一个合适目录,填写预置参数时写用户自定义域名确认配置,点击执行,启动应用,回到工作空间,点击应用信息部分的域名,站点创建完毕。
打开基本信息面板,点击图标,使用任意 IDE 打开项目,进入 serverlessdevs-website 项目下进行应用安装,启动会自动打开一个预览环境,然后在源代码目录下做一次源代码更新,对当前源代码进行构建,生成一个静态的目录。回到配置信息面板,再执行一次部署,可以看到应用已经完成一次更新。
动态编程操作:
站点是纯静态的怎么具备一些动态能力?
打开代码,contributor 目录,在命令行输入
scli kv put contributor.json_kv/contributor.json 现在已经成功把 contributor 的内容做了一次上传,而 contributor.Json 这个名字有一个可以直接访问的能力。具体怎么通过站点去访问 contributor 的内容呢?官方提供了一个固定的路径
就可以访问到刚才上传上去的内容。
l 端云调试
调试始终是 Serverless 应用的最棘手的部分,我们开发的应用是在本地,部署的应用是在线上。并且线上的环境跟本地开发环境有着巨大的差异,通常我们只能通过在线打印输出,然后还得通过日志平台查看日志判断问题,再回来本地修改代码,一来一回耗时非常巨大,而且效果也不好。Serverless Devs 提供了自己的解决方案,我们巧妙的设计了一个在线的辅助函数,辅助函数完整复刻线上代码,然后通过本地跟辅助函数建设通道实现本地的代码调试效果。
基于这样的能力我们再来看看具体怎么在 Serverless Hub 实施的, 本次演示使用的是 Serverless Desktop, 大家可以尝试跟着我的操作步骤进行使用:
1. 新建一个 Serverless 应用,并把它部署到线上
我们可以通过 Serverless Desktop 的应用市场搜索 xxx 应用模板,然后加载到本地,然后通过可视化配置部分修改相应的服务和函数内容,进行部署。
2. 进入工作空间->应用管理->应用详情->端云调试
按照提示准备好前置条件,比如安装docker demon 指定调试端口,启动资源准备,这个时候会创建辅助函数,同时构建 vscode 的 debug 文件。
启动好之后,使用 vscode 打开工程目录,查看debug配置文件.vscode/launch.json
以这个启动 debug 模式。
3、发起调用
切换到"本地调试配置"面板,点击"发起调用"
可以发现 vscode 触发调试
调试结束回到 Serverless Desktop 页面,我们可以看到输出效果:
这里我们发起调用是向这个服务的根目录发起,如果我们想向其他的路由地址发起调用该怎么操作呢?我们可以复制发起调用后输出的基础地址。
然后贴到 postman, 再往后拼接上我们的测试路由地址,比如,想访问"/appCenter/getSpecial",可以拼接成"<基础地址>/appCenter/getSpecial"然后"Send"这个请求。
通过这样的方式我们可以深入细节知道每一行代码的调用问题到底出在哪里,极大的提高了我们的开发效率。
4、清空环境
调试结束后不要忘了清楚调试环境,包括关闭本地的容器地址,以及清理线上的函数。
综上我们完成了一次完整的调试过程。
l 总结
新一代的 web 研发范式:
1. 研发阶段:按需的动态化
站点保持静态化可以有很多优势,诸如安全,访问快速,搜索引擎友好等。但动态化是不可避免的,只不过动态数据可以按需设定,并非纯粹API。
2. 部署阶段:动静态部署分离
最大化的利用云服务的优势静态资源存储到 OSS 上,并借由 CDN 加速实现极致访问,动态接口则托管到 Serverless 平台,最大限度的利用其单性伸缩,安全容错的优势。
3. 上线交付阶段:交付优先,极致体验
站点可以快速提供线上预览能力,上线后,访问性能,安全,搜索优化等都需要具备。
4. 持续集成:敏捷开发,迭代快速
功能的开发到更新优化实现流程自动化,需使用。