Zong
登山

也算不上是登山吧,哈哈哈!坐中巴车上山 15 分钟,路程非常山路,自己开车估计得半小时起码。

到了山顶感觉真好,山上有两棵很大的银杏树,去的时候叶子半绿半黄。

下山的时候是走下山的,走了差不多 1 个小时。

服务端

整个月的工作内容基本就是一个后端实习生了……

继续上个月的服务端功能,这个月学习了不少知识。

数据库本来只会使用 typeorm 进行简单的 API 调用,比如 find 之类的简单操作,对于需要聚合多张表的数据也是使用了比较拙劣的办法,查出一张表并根据这张表的关联 ID 进行遍历查询,最后进行聚合,后来经过后端大哥的提示,可以使用多表关联查询来实现,虽然过程中出现了一些 SQL 的报错是后端大哥帮忙给出的解决思路,但是自己对 SQL 的时候确实还是一片空白。

数据库备份则是通过 pg_dump 来进,还原则是通过 psql 进行,这些命令都依赖于 postgresql-client 这个库。

Docker 方面,一是将 GitLab Runner 从部署服务器上运行调整为 Docker 容器运行,以确保每个 stage 的执行过程足够纯粹。

也经历了 Docker 镜像启动时需要添加额外的 hosts 配置,解决 DNS 映射问题,以及自己打包依赖集合镜像。

因为要经历 Docker 镜像的推送,考虑通过登录服务器来操作,利用 ssh-agent 来实现免密登录服务器,以进行一系列操作,比如推送镜像、更新服务等。

特别需要一提的是挂载功能真的很好用。

NestJS 开启了日志功能,便于 API 调试,虽然没做持久化,但是可以直接进入容器查看日志,如果考虑做持久化的话,结合挂载功能实现即可,只不过需要额外考虑日志存储的上限,清除等逻辑。

并且在开发的过程中也发现了,起初数据库设计的不完全,结合数据库迁移 migration 对数据库进行了字段补充。

服务端的单元测试算是其中比较轻松的,连接测试数据库,保证每一个测试用例的纯净,根据业务场景编写单元测试。

部署过程中也为前端仓库添加 CI 、 Docker 镜像制作、自动化等工作,也同时配置了 Nginx 的配置文件,算是简单的尝试了一把。

不仅部署了前端,还针对各环境提供了测试和正式环境的部署,并且对正式环境关闭了端口映射,统一通过网关进行对外暴露(简单尝试了进入容器查询数据库数据)。

办公网环境同时还提供给前端同学可视化 Docker 操作界面 portainer 使用。

看似这个月的服务端学习过程比较顺利,但是我们原业务组的后端被“优化了”,我来接手原业务组 Node.js 侧的业务,还部分接手部署相关的工作。真的是挑战啊!

同时小组有打算尝试接入 AI 来辅助开发的意向,后续计划开始预研。

又能尝试新的事物咯!