前言

在Whosbug项目即将上线,已经开始mr合流、code review的时候,突然被领导拉去做DEM了(还是挺突然的)

DEM 是基于Go开发的一套完善的告警系统,而我当时对于Go语言的使用仅限于简单使用iris框架和日常刷算法题,所以分配到这个需求还是很虚的

DEM一期开发工作

和Whosbug不同,这次DEM的项目开发工作,我是半途加入的,而且是远程工作,所以免不了项目接入成本和环境成本,也是这次经历让我明白了为什么那么多公司不愿意提供远程实习的岗位

过程

接入项目

接到需求的第一天与学长进行了对接会议,当天和之后的一天按学长的介绍读了下我负责的alert模块的代码,熟悉一点了之后,开始尝试着手写负责的功能模块

完成功能模块

这部分工作在熟悉了数据流和数据结构后比我想象的要简单,一些细节问题上问了下学长之后,一个下午就写完了,与学长确认后认为应该妹有问题,但还是需要测试的

测试环境准备

配置好vscode的远程调试(卡了三天)

配置好依赖和一系列环境变量(卡了三天)

至此终于能正常调试了
大概这就是remote吧,踩了少说十个坑…

功能模块的单元测试

搭好环境过后开始马不停蹄地测试,期间遇到了一些问题(kafka消息长度校验,模块某些方法的缺陷等),但都一一解决了,都没有被卡很久,一个周末就完成了整个模块所有数据流的测试

难点

接入项目

因为太久没读过go了而且并没有读过大型go项目的源码,所以读起来还是比较生疏,甚至一些简单的结构都还要反应一下才能明白是什么意思,不过边读边和学长询问讨论,慢慢还是熟悉了数据结构和数据流

测试环境准备

因为DEM还没有配好灰度,而且之前whosbug没用到过远程调试,所以还需要配一下远程调试,一开始想试一下Goland的远程调试,好不容易挂上代理,sftp连上内网开发机之后,才发现jetbrain家的远程调试是基于 Delve 的,而基于 Delve就需要云主机开放一个端口,但腾讯Devcloud的云主机对外网只开放几个端口,都已经占用了,最后还是选择用vscode 的SSH调试

通过corkscrew挂上腾讯IOA的代理,并改了云主机中sshd的AllowTcpForwarding设置、删除~/.vscode-server后重连后,总算是能正常调试早就写好的功能模块了(这里卡了三天)

正常连接上了还没结束,要想正常调试功能模块,还得先把依赖都装上,通过docker装上了postgre,redis和kafka(期间还遇到了dockerhub限制pull次数的问题以及docker版本问题),并在pg内建好一系列要用的表,插入数据后;我以为万事俱备了,然而实际运行的时候却连不上kafka,在开发机试了下curl连接容器,报了个connection reset by peer,google一番发现是docker的网络问题,docker run的时候加上了–net指定了网络后就能正常访问了