经历了在线教育行业“双减”,公司转型成人教育,再转型到直播,终于方向更有确定性,可以喘口气,是时候还技术债了。

1、web框架统一。之前用的echoGraphQL、还有一套基于grpc自研的网关。现在统一用自研网关。统一后,开发心智负担小,效率也高。自研使用简单,但需要考虑后期维护。

2、数据库操作统一。之前用的gormsqlx。现在统一用sqlx。orm之类的,慢sql不容易找到对应的代码,尤其是大仓的。sqlx使用简单,直接写sql语句,查找方便

3、延续之前的大仓模式,以发布对应的服务分支的方式发布服务。之前没有区分前后台,只是按照业务模块拆分服务。现在后台单独一个服务,前台按业务拆分模块。避免后台对前台业务的影响

4、消息推送单独分出一个服务。使用nats, 发送最简单的业务信息到对应的服务,服务中做好封装,数据处理。由于是消息队列,可以不同等待返回。

5、单独建一个biz目录,存放对应的业务包及其下的dao、model,方便多个服务公用。model修改时,也只需要修改一处。

6、单独一个服务,包含第三方回调、cdn临时密钥、发送短信验证码等基础服务。

7、课件音频由阿里云oss迁移到阿里云视频点播,调整音视频信息获取方式。至此课件音视频都存放到阿里云视频点播。阿里云视频点播的回调地址只能设置一个,项目多了之后,之前还需要根据视频名称做转发,耦合严重,调整为先上传音视频,然后根据唯一id在后台添加时主动调用阿里云对应接口。

8、数据库表命名带上服务名前缀,方便查找。时间统一时间戳,金额以分为单位。编码统一utf8mb4、general_ci。

9、使用ko构建容器镜像。今后docker可能不是必须的了,一般应用ko可以满足。

如果从头来过,应该更早把技术债还了,这样应该会轻松很多。

后台前端开发框架也改成了UmiJS

最后推荐两个看了有点感触的专栏,郭东白的架构课10x 程序员工作法