之前,团队陷入不断的业务逻辑接口开发中,难度不大,需求很多,沟通流程烦,整体效率低。针对需求方多是开发人员的特点,我们想改变开发模式,不仅提高自身效率,也让需求方自助开发接口,期望整体效率提升50%。
于是去了解了Serverless、FaaS和已有解决方案(如腾讯云的云函数SCF,亚马逊的Lambda),试用腾讯云的网关API与云函数SCF,再结合自身业务场景,精简开发流程,实践出一个自助开发平台。
目前实践结果是:自身效率提升超预期,再加需求方已自助开发接口,两者结合,效果很好。本文主要分享实践结果及分析效率提升的原因。
亮点:实现线上开发接口,效率提升50%
现状
解决思路
另外,针对我们的业务场景,需求方多是开发人员,本身具有开发能力,如果能让他们自己开发接口,不用管理服务器环境,只关注业务逻辑主函数,控制好输入输出,我们来运行代码,以主函数的输入输出做接口的输入输出,架构层做好性能监测、安全防范和可用性保障,则需求方直接提供接口,减少了沟通成本,且方便后期自行维护,提高整体效率。
通过了解Serverless与FaaS(功能即服务),认为此解决思路具有可行性(预研Serverless与完善思路是同步进行的)。
实践结果
统默认生成示例代码,开发者根据需要删除或修改,目前只给少数人开放编辑权限,其他人只能体验创建接口和在线测试功能(测试接口会定期清理),如有编辑代码需要,联系elevenliu分配。
函数main_handler的输入输出,即对应接口的输入输出,支持多个函数但是必须有主函数;架构层对参数安全与函数安全做了必要防范(参数安全如sql注入,函数安全如主函数内执行系统命令“exec('rm /tmp/* -rf');” 。
图中读取数据库处的代码“$db = new CDBChoose('xxx');”,其中xxx就是在“数据库管理”页面,添加的数据库配置英文简称,目前只支持云支撑环境可访问的CDB。
左侧可以一边改代码一边测试,修改代码的作用和“编辑代码”页相同,这里修改代码主要考虑到接口写好后,方便边调边做小改动。按主函数接收的$input_param变量传参,前台会默认加上rtx这个参数,右侧查看curl请求和返回结果,若测试通过,通过“一键复制”将请求和结果都复制,目前开发流程是贴到tapd单下,让前台同学开发页面。
效率提升分析
整体提高50%!我们自己使用效果实际好于预期。
样本来源于两个需求开发:
效率提升原因分析如下:
另外,我们在努力提升页面易用性,尽量做到少跳转,从开发习惯完善编辑页面细节,让开发人员体验更好,也很有利于提升开发效率。
小结
从目前的实践结果来看,是超出预期的。最初预期是提升自己开发效率30%,然后尽量向需求方推,让他们自助开发接口,若他们不愿意,则仍是我们开发。实际结果不止提升自己开发效率50%以上。
总的来说,从两方面提升开发效率:
一是转变开发模式,改“线下开发”为“线上开发”,完全通过web页面实现了接口的开发、测试、发布、维护;
二是精简流程,改流程“需求方 -> 业务逻辑接口 -> 前台页面”为“需求方 -> 前台页面”,需求方在提tapd单时,就已经自助开发好了接口,中间减少一环,解决沟通的大部分成本。
本文是实践篇,讲第一期实践结果,先解决我们当前的效率问题,现在权限模块控制比较直接,访问ip编辑权限等固定写死,第二期完善以“项目”为维度的权限中心。
下一篇,将讲解具体架构及落地实现。说明怎么实现性能、安全、可用性等方面的工作,如何扩展和复用到不同语言等,敬请期待!
本文分享自 ServerlessCloudNative 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!