腾讯IMWEB前端团队一站式Serverless开发解决方案

时间:2021-07-15 | 标签: | 作者:Q8 | 来源:Enjoy网络

小提示:您能找到这篇{腾讯IMWEB前端团队一站式Serverless开发解决方案}绝对不是偶然,我们能帮您找到潜在客户,解决您的困扰。如果您对本页介绍的腾讯IMWEB前端团队一站式Serverless开发解决方案内容感兴趣,有相关需求意向欢迎拨打我们的服务热线,或留言咨询,我们将第一时间联系您!

前言

< ">如今的Serverless可以说是一大有潜力的新技术方向,尤其在当下上云的热潮中,Serverless因其免运维、自动扩容、支持多种编程语言等优势,对前端来说,是一大提升服务开发、维护效率的利器也是可尝试全栈发展的方向,但也因为其新,对落地到团队开发中,结合团队开发流也是遇到了一些挑战,本文将分享IMWEB团队对Serverless的实践方案。

一、IMWEB团队Serverless研发模式的演进与思考

< ">在过去一、两年,我们团队在多个服务项目中尝试使用se全网舆情监测系统rverless,腾讯云Serverless提供了一站式服务,通过使用该服务,前端可独立完成接口服务开发,对前端个人而言可往全栈发展,也因此可缓解团队后台人力紧张问题

< ">在开发Serverless云函数的过程中,我们也遇到了对比传统服务,云函数开发的一些挑战点

< ">(1)云函数开发特点

< ">前端传统项目的开发流模式相对已经比较成熟,通过git协同管理代码,再通过CI来规范项目的部署流程,整个工作流可以查看、回滚代码,部署也做到了自动化

< ">再来看云函数的开发特点:

< ">云函数独立的账号和权限管理

< ">以函数为单位进行创建、更新和部署

< ">创建网关API与函数关联,借此可通过网关API访问到云函数

< ">以上是最基础的开发云函数三个基础

< ">而云函数的创建、更新有两种方式:

< ">腾讯云官网云函数控制台,可视化的操作界面,点击按钮即可创建、更新

< ">通过CLI创建,SERVERLESS提供SDK,调用SDK可完成自定义创建、更新操作,其优点为灵活编写,也易于做成工程化

< ">考虑团队的协作,第二种方式通过调用SDK的方式因其灵活更适合定制为团队规范

< ">总结下来可以看到云函数开发的三个特性:

< ">因其有独立于git账号的云函数账号,导致了云函数的代码缺乏像GIT一样可以查看历史代码版本,代码修改记录等

< ">因其有多重方式可以用来创建、更新函数,导致多人协作时,有互相覆盖云函数的风险

< ">提供的云函数网关,可帮助快速配置访问云函数,而无需运维同学帮忙做域名指向,机器申请等

< ">(2)团队协作上手云函数开发问题

< ">在初期团队探索尝试云函数开发时,对比传统项目的开发流,云函数的开发步骤更多,也暴露出了一些缺点:

< ">1)上手成本高

< ">首先有不小的学习成本,像云函数配置文件,云函数官网界面操作学习成本,实际使用时,由于云函数网关API链接过长、域名限制等,需要配置nginx,用特定域名访问云函数网关API,因为多数前端对nginx部署,导致有了nginx学习成本

< ">2)调试云函数效率低

< ">因为云函数是部署在云端的,Serverless有其独特的环境,context、event等,有别于NODE服务的请求体等,本地要完全模拟serverless请求比较困难,导致开发想要调试定位问题时,只能先将代码部署到serverless上,这里就需要等待部署了,由于serverless是外网的,部署时间就更长了

< ">3)开发流困惑

< ">由于云函数直接就是部署在云端,没有我们传统的机器用于做环境区分,对团队协作保证部署质量来说并不友好

< ">上述也有提到的,往往因为想要自己业务域名访问服务接口,而云函数网关API是比较长的缺乏语义化的链接,通常使用时会想配置nginx去通过自定义域名访问云函数,不止是成本问题也有容易配置错误的风险问题



< ">4)管理困难,存在质量问题

< ">因云函数独立的账号管理,没有git进行管理,导致无法追踪代码记录,甚至任何有权限的人创建同名函数进行部署都会导致函数莫名被覆盖,同理云函数网关API也可以随意更改指向其它云函数

< ">总结下来,在团队协作SCF开发的时候,遇到的挑战点如下:

< ">< color: rgb(0, 176, 240);">二、IMFLOW一站式Serverless开发解决方案的破局与落地

< ">总结上面的云函数在团队协作中遇到的一些问题,对应地提出解决方案:

< ">制定规范保证统一的协作,统一的规范保证统一的工作流,提升开发效率进而保证质量

< ">优化云函数开发体验,通过工具去自动化完成重复冗余的操作,并通过封装过滤掉一些开发学习成本

< ">根据云函数特点制定CI和CD,保证流程统一,也提升部署效率;统一网关规则,减少云函数网关API学习和操作

< ">(1)制定规范,提升协作效率

< ">1)统一云账号管理

< ">对于独立云函数账号,每个开发在上手开发前都需要单独申请,同时还有开通各种权限,快点半天,慢点一两天,针对这个问题,考虑使用团队公共账号进行统一云函数管理,工具使用公共账号进行云函数部署、更新,免去开发的学习成本、账号上手成本

< ">2)基于GIT管理云函数

< ">对于云函数独立的管理方式,为了能唯一追踪云函数,保留了原有的git管理项目代码,制定一系列规范,将git项目与云函数唯一关联,保证云函数唯一不可覆盖

< ">3)命名空间隔离函数环境

< ">为提供云函数的开发流,针对云函数的特点,使用云函数命名空间的概念来隔离云函数,同时限制测试环境的网关服务只允许内网访问,保证业务安全

< ">4)统一云函数规则配置

< ">制定云函数名、对应网关服务API名、环境命名空间的命名规范,以达到命名空间、函数名、网关服务API能一一对应,可通过其一推导其二,如知道函数名,可知其访问API是什么,对应环境命名空间是什么

< ">(2)自研CLI工具,IMFLOW提升SCF研发效率

< ">在第一项制定了规范之后,要让规范落地,就需要使用工具来辅助,IMWEB团队自研了CLI工具--IMFLOW,提供SCF团队开发流实践方案,通过工具的方式提升SCF研发效率;诸如创建账号、申请权限、创建云函数、开发云函数调试、云函数网关API关联、函数隔离等等,通过CLI工具,输入命令即可完成。

< ">1)上手开发更快

< ">使用了CLI工具来辅助之后,对比团队过往的开发模式,通过CLI可达到2分钟上手进入开发

< ">2)调试体验同传统服务开发一致

< ">通过同构+构建的方式,保留传统服务开发体验,工具封装屏蔽了云函数文件,开发者开发时可同以往一样

< ">3)一键定位调试云函数

< ">云函数的真实运行环境相对复杂,若是遇到了涉及云函数环境调试的问电商运营活动题,需要真实调试云函数,此时本地即可完成调试,工具封装了一系列操作,如实时调试、监听文件变更等,实时部署,实现一键定位调试云函数

< ">4)极致优化云函数部署时间

< ">云函数的部署是走的外网部署,而云函数的部署时间影响到了云函数的发布时间,甚至在做本地实时调试云函数时,影响了云函数的调试效率,为了极致优化云函数部署时间,利用了云函数的layer功能、项目的node_module变动几率较小、同时代码包大小会影响部署时间这些特点,对云函数项目部署进行了拆分,当node_modules没有变动时无需部署node_modules,进而减少了了部署时间

< ">在做了部署优化后,查看项目的部署时间,大部分时间35s即可完成函数部署

< ">(3)质量保证

< ">在质量保证方面,主要是通过CI|CD规范部署流程,制定网关服务规范来隔离云函数和降低网关配置成本。

< ">限制测试环境网关服务为内网可访问。



< ">另外,为了保证云函数的运行稳定,避免因为云函数的冷启动导致云函数访问失败,即对云函数的容灾处理,做了一层STKE的容灾,通过代码同构的方式,利用工具构建打包,完成一套代码实现既可部署serverless,也可以部署STKE,配合网关的处理,完成云函数的降级容灾

三、IMFLOW使用

< ">imflow内置命令

< ">

< ">至此,感谢阅读。在探索云函数的公司在海外成立开发之路中,感谢腾讯云Serverless团队的支持,希望Serverless可以越做越好!

腾讯IMWEB前端团队一站式Serverless开发解决方案

上一篇:Pinterest如何提高用户留存?——记一个「打工人
下一篇:负载均衡(SLB)- 阿里云负载均衡SLB是什么?如何


版权声明:以上主题为“腾讯IMWEB前端团队一站式Serverless开发解决方案"的内容可能是本站网友自行发布,或者来至于网络。如有侵权欢迎联系我们客服QQ处理,谢谢。
相关内容
推荐内容
扫码咨询
    腾讯IMWEB前端团队一站式Serverless开发解决方案
    打开微信扫码或长按识别二维码

小提示:您应该对本页介绍的“腾讯IMWEB前端团队一站式Serverless开发解决方案”相关内容感兴趣,若您有相关需求欢迎拨打我们的服务热线或留言咨询,我们尽快与您联系沟通腾讯IMWEB前端团队一站式Serverless开发解决方案的相关事宜。

关键词:腾讯IMWEB前端团队一站式

关于 | 业务 | 案例 | 免责 | 隐私
客服邮箱:sales@1330.com.cn
电话:400-021-1330 | 客服QQ:865612759
沪ICP备12034177号 | 沪公网安备31010702002418号