前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >效率提升50%!基于Serverless的视频云运营系统改造实践(上)

效率提升50%!基于Serverless的视频云运营系统改造实践(上)

作者头像
腾讯云serverless团队
发布2019-09-11 16:10:09
7170
发布2019-09-11 16:10:09
举报
文章被收录于专栏:Tencent Serverless 官方专栏

之前,团队陷入不断的业务逻辑接口开发中,难度不大,需求很多,沟通流程烦,整体效率低。针对需求方多是开发人员的特点,我们想改变开发模式,不仅提高自身效率,也让需求方自助开发接口,期望整体效率提升50%。

于是去了解了Serverless、FaaS和已有解决方案(如腾讯云的云函数SCF,亚马逊的Lambda),试用腾讯云的网关API与云函数SCF,再结合自身业务场景,精简开发流程,实践出一个自助开发平台。

目前实践结果是:自身效率提升超预期,再加需求方已自助开发接口,两者结合,效果很好。本文主要分享实践结果及分析效率提升的原因。

亮点:实现线上开发接口,效率提升50%

现状

视频云运营系统主要包括10个模块:直播、点播、经营分析系统、自定义客户管理、基础产品数据平台、中长尾运营、互动直播、云通信、P2P、小微客服。前六个需持续投入开发,后四个基本无需投入。本文只涉及业务逻辑接口开发,不涉及前台页面。

  • 特点:业务逻辑接口需求多,技术难度不大,提需求的多是开发人员。
  • 问题:各模块需求较多时,接口排期时间长,与需求方沟通细节较耗费时间,功能变更维护成本大,发布流程慢(如简单的变更用30s改完,用三分钟走发布流程),导致整体开发、测试、发布、维护效率低下。

解决思路

传统的IDE模式,线下开发接口,手动贴命令测试,通过svn/git管理代码,从原始需求到接口上线,中间用到太多工具,如何精简流程,摆脱工具困扰,只通过web页面,就可以让开发者完成所有工作。不管何时何地,只要开发者能打开页面,就能对接口进行开发、测试、发布、维护。

另外,针对我们的业务场景,需求方多是开发人员,本身具有开发能力,如果能让他们自己开发接口,不用管理服务器环境,只关注业务逻辑主函数,控制好输入输出,我们来运行代码,以主函数的输入输出做接口的输入输出,架构层做好性能监测、安全防范和可用性保障,则需求方直接提供接口,减少了沟通成本,且方便后期自行维护,提高整体效率。

通过了解Serverless与FaaS(功能即服务),认为此解决思路具有可行性(预研Serverless与完善思路是同步进行的)。

实践结果

  • 点击顶部的“新增接口”按钮,填写好标题和接口名即可创建成功,接口名具有全局唯一性,建议第一个接口命名为 rtx_test,如:

统默认生成示例代码,开发者根据需要删除或修改,目前只给少数人开放编辑权限,其他人只能体验创建接口和在线测试功能(测试接口会定期清理),如有编辑代码需要,联系elevenliu分配。

  • 点击“提交”即生成一条接口记录,在最后一列,点击“编辑代码”按钮,打开编辑页,如:

函数main_handler的输入输出,即对应接口的输入输出,支持多个函数但是必须有主函数;架构层对参数安全与函数安全做了必要防范(参数安全如sql注入,函数安全如主函数内执行系统命令“exec('rm /tmp/* -rf');” 。

图中读取数据库处的代码“$db = new CDBChoose('xxx');”,其中xxx就是在“数据库管理”页面,添加的数据库配置英文简称,目前只支持云支撑环境可访问的CDB。

  • 点击接口列表最后一列的“在线测试按钮”,打开在线测试页,如:

左侧可以一边改代码一边测试,修改代码的作用和“编辑代码”页相同,这里修改代码主要考虑到接口写好后,方便边调边做小改动。按主函数接收的$input_param变量传参,前台会默认加上rtx这个参数,右侧查看curl请求和返回结果,若测试通过,通过“一键复制”将请求和结果都复制,目前开发流程是贴到tapd单下,让前台同学开发页面。

效率提升分析

整体提高50%!我们自己使用效果实际好于预期。

样本来源于两个需求开发:

  1. 大赛事源站需求(包括拉流推流信息查询/断流操作/告警电话与拉流白名单的批量增删查等9个接口),原开发方式会排期1.5天,本开发方式实际只用3个小时左右;
  2. 基础产品--点播内容模块(包括收入详情/收入分布/用户预警/用户管理等列表曲线详情等8个接口),原开发方式会排期2天,本开发方式实际只用了不到4个小时。后与前台联调,仅在线上修改两三处格式,耗时不超过5分钟。样本数据较少,仅做参考。

效率提升原因分析如下:

  1. 开发模式改变,预估提升20%。原来通过svn/git管理代码,新增接口则创建一个文件,现在不使用svn/git,代码保存在数据库,完全通过页面管理,利用新增接口生成的示例代码,尽量做到让用户在现有代码上“改”,后续我们再给编辑代码页右侧增加手册,提供足够多的系统类与函数、代码片段等,尽量做到让开发者边拷边用;
  2. 线上调试功能,预估提升10%。原来测试的方式是,贴接口请求到命令行看返回结果,现在通过页面填好参数测试,而且可以边改代码边调试,调试完了将请求与结果一键复制,贴给前台即开发页面;
  3. 发布流程简化,预估提升10%。因为底层架构从数据库加载代码执行,目前未分离测试与正式环境,因此现在不需要发布,写好即是线上接口。这里存在安全隐患,目前只给少数人开放了编辑代码权限,其他人只能体验创建测试接口。第二期将分离草稿、测试、预发布、正式环境,只能在草稿中编辑,然后向上提测,因为代码保存在数据库,一旦测试通过,发布流程也就是将代码从草稿表拷到正式表,发布可在瞬间完成;
  4. 后续维护方便,预估提升10%。原方式维护接口,尤其不在公司内还要搭建开发环境或远程开发,现在只需要能访问公司内网,即可在web页面完成所有修改发布操作。

另外,我们在努力提升页面易用性,尽量做到少跳转,从开发习惯完善编辑页面细节,让开发人员体验更好,也很有利于提升开发效率。

小结

从目前的实践结果来看,是超出预期的。最初预期是提升自己开发效率30%,然后尽量向需求方推,让他们自助开发接口,若他们不愿意,则仍是我们开发。实际结果不止提升自己开发效率50%以上。

总的来说,从两方面提升开发效率:

一是转变开发模式,改“线下开发”为“线上开发”,完全通过web页面实现了接口的开发、测试、发布、维护;

二是精简流程,改流程“需求方 -> 业务逻辑接口 -> 前台页面”为“需求方 ->  前台页面”,需求方在提tapd单时,就已经自助开发好了接口,中间减少一环,解决沟通的大部分成本。

本文是实践篇,讲第一期实践结果,先解决我们当前的效率问题,现在权限模块控制比较直接,访问ip编辑权限等固定写死,第二期完善以“项目”为维度的权限中心。

下一篇,将讲解具体架构及落地实现。说明怎么实现性能、安全、可用性等方面的工作,如何扩展和复用到不同语言等,敬请期待!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ServerlessCloudNative 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 视频云运营系统主要包括10个模块:直播、点播、经营分析系统、自定义客户管理、基础产品数据平台、中长尾运营、互动直播、云通信、P2P、小微客服。前六个需持续投入开发,后四个基本无需投入。本文只涉及业务逻辑接口开发,不涉及前台页面。
  • 传统的IDE模式,线下开发接口,手动贴命令测试,通过svn/git管理代码,从原始需求到接口上线,中间用到太多工具,如何精简流程,摆脱工具困扰,只通过web页面,就可以让开发者完成所有工作。不管何时何地,只要开发者能打开页面,就能对接口进行开发、测试、发布、维护。
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档