目录
- 项目
- BMS后台管理系统
- Fantasy
- Payment通用支付框架
- 技术文档
实习时间:2022.12 ~ 2023.06
公司是初创公司,主要专精于AIGC方向,之前主要是To C的业务,做三消类游戏。今年刚刚转向To B业务,我去的时候Golang研发团队刚刚组建,所以很多项目还没来得及发展,所以这一次实习中参与了很多项目从零到一的研发,其中如分布式任务调度系统,通用支付框架,这些基础的服务让我收获很大。
项目
公司主要采用的是微服务架构,这一次实习主要负责的项目是BMS后台管理系统、Fantasy App(AI GC)、Payment通用支付框架、Skynet分布式任务调度系统。也协助参与了其它一些项目的开发,比如Marmot、Avata、Vine(作业调度系统)等项目。
BMS后台管理系统
这个项目主要是对公司其它项目进行管理,不对外开放。比如说AI头像这个模块就可以对Ai头像这个项目的任务,套餐,优惠券,分类等模块进行管理。
在这个项目中,我需要去理解公司各个项目相关模块的代码流程,然后根据我的需求查漏补缺,最后接入到BMS系统中。
Fantasy
这个项目功能上来说较为简单,主要是根据用户提供的提示词生成ai图片。它的制作流程是前端发起制作,调用后端api,后端api通过调度服务创建任务,调度服务再去具体的任务处理程序进行处理。最终任务程序处理好之后,再回调任务调度系统。 至于任务调度系统是否回调业务系统,根据情况不同,有不同的处理方案。
我的主要收获第一是项目的安全性——任何app那边过来的数据都是不可信的,起码,是不完全可信。比如购买金币,如果金币是前端app算好之后传给后端,用户就可以截取数据包并且修改数据包,意味着他可以花最低的钱,然后想得到多少,就得到多少金币。
这在之前,我考虑的很少。在这个产品之后,我时常把自己代入到用户的视角,如果我是一个想要搞鬼的用户,我会怎么去进攻?然后做好防护。
我经历了这个产品的一步步迭代,让我看到任何产品的开始,都是很不完美的,是直接将产品扔到市场里进行真刀真枪的演练,然后高速的进行迭代。这让我对处理事情,解决问题也有了另一种解法,就是永远不要想着把事情做完美了再拿出来,我们没有时间精雕细磨,先做,迅速得到反馈,然后再往下说怎么改进。
Payment通用支付框架
这个项目诞生的目的是给公司其它产品提供通用的支付服务,具有支付订单创建,校验,回调业务系统的功能,以及对于通知失败的订单进行一定次数的重试,并记录失败原因,方便后期回溯。
它是基础性的项目,让我增加了很多对于架构的经验,也让我了解了各个第三方平台的支付流程。
站在整个公司的项目生态上来说,左边是之前的方式,每一个业务系统都有自己的一套支付服务,代码的复写率很高,业务系统和支付服务没有解耦,增加了很多运营成本。而现在把支付服务独立出来,就把业务系统和支付服务解耦了,整体上简洁了很多。
从单个项目来说,也把从前的方式修改为了下图右边的形式,使功能和平台之间的关系更明确了,让整个系统的支付流程更简洁,当添加新的第三方支付平台时,不需要做更多的维护工作。
技术文档
除了项目,在实习期间也对团队的推动做了一些事情。挤时间整理了几个入门方面的文档。
第一个是后端入门指南,讲的是从在Go官网下载Go的SDK开始,到最后能把我们公司的代码运行起来,有详细的步骤以及图示。
第二个文档介绍了阿里云平台CI/CD(持续集成,持续交付,持续部署)全流程的方方面面内容,比如创建仓库,创建流水线,部署。
第三个文档是我发现团队中会有信息缺失的问题,常常是我卡在一个地方很久,后来才发现公司已经有相应的解决方案。这个就会让我面对问题的时候,解决起来束手束脚,所以我把我目前知道的,平时研发时所用到的关于我们公司的网站,以及我们公司自研的一些库的地址都整理了进去,并且对这些工具进行描述,以及补充一些基本的使用。
成长是有代价的,我希望我的后来者可以站在我的肩膀上去思考问题,少走弯路。我不嫉妒身边的人超越我,因为我身边的牛人越多,我当然也不会很差。