"再见\u2018你好\u2019"

看了下去年总结,发现目标和愿望都实现的差不多了,甚至还做了去年都没想过的事情。
去年还是更加偏向浏览器端,今年几乎都在折腾 node, docker 开发运维一体化的东西上了。

新的技术

alinode

alinode 以前是收费项目,2018年初集成到阿里云后就完全免费了,并且改名为 Node.js 性能平台
我当然也是第一时间接入使用,并且线上部署。目前使用1年了,从最开始的只会看基础监控数据,到现在几乎运用的得心应手,而且期间跟作者反馈了一些问题。
还得到了朴灵大大的肯定,说我可能是除了阿里系以外,最了解 alinode 的人。
虽然不一定是最了解,但至少目前确实用的非常顺手。

期间也安利技术群里不少小伙伴用,但真正使用的不多,有完全不懂 node 怎么部署的,有因为他们不开源所以不放心的,有不想折腾的等等。
不过至少安利给大家,大家知道有这么个神器,以后也许会去尝试。

docker

年初开始折腾,但断断续续,到年中才上线。
上线的时候还踩了不少坑,测试环境在真实也还是测试环境,没上线过,就是没实战经验。
目前可以说刚刚入门 docker,因为我们连 swarm 都没上。
我们运维说:“用什么 swarm,等我研究下 k8s 之后直接用 k8s。”。
嗯,半年过去了,毛线结果都没,明年我打算先上 swarm,至少比我现在一台一台操作 docker 要省事。

docker 真是好东西,现在完全回不去了,让我用以前的方式跑项目,想死的心都有。

jenkins

就这,还是因为我们来了个新老大才上的,否则,emmmm。
你能想象运维写个脚本,在内网服务器定时拉取 git 然后同步到外网,而且鬼知道什么时候同步成功或失败。
现在全部 Jenkins 持续部署,爽的不要不要的,但外网,我们只是自动同步代码,重启依然手动处理。
测试服务器和内网服务器,自动部署,自动重启,有问题也无所谓,手动处理咯。

持续集成测试,emmm,一直以来就我一个人在写单元测试,而且只是 主模块 + 主路由 的测试,其他几乎没有。
由于没有强制写测试,导致大家修改代码后,测试几乎跑不通,也没人去更新测试,最后不了了之了。

明年我希望重点推这块,否则非常危险。

一些项目

日志跟踪平台

这个目前虽然不是我理想中的最终成品,不过目前效果非常不错。
从原理上来讲,其实就是为每一个请求生成 请求ID,然后所有日志记录的时候都带上这个 请求ID,日志最终存储到 elasticsearch 即可。
原理非常简单,但其间踩了不少坑,不过效果还是非常棒的,比如还原每一次请求上下文环境数据,解决了 运维,后台,前端 的甩锅行为。
直观的展示了 nginx,node,api 的错误点,以及问题集中的页面,还有请求用户的完整信息。

目前记录的日志信息不够细,之后想做到更加细致,并且改成请求时间线的方式展示数据,这样可以直观的还原一次请求从 浏览器 到 nginx 到 node 到 api 到 redis/mysql 等完整链路。

mock api 平台

说实话,这东西当时是因为市面上没一款我满意的,所以写了一个,由于人手问题,其实还不如不写,现在只是勉强能用而已。
所以没脸开源,说起来,我本来是想写类似 Easy Mock / Yapi 这种的,当时其实还没那么好用,所以想自己写一个,但时间问题,其实还不如他们的好用。
其实更加倾向于 Yapi,因为他的测试理念跟我一样,但我的想法是 动态 host 请求,而不是借助什么浏览器插件来做。
只是这一点不一样,其他几乎都是一样的。

这个东西,如果有时间,我会继续做,或者基于 yapi 修改一版,希望他们不会打死我。

OA

内部 OA 项目,加班一个月,修修补补搞了半年,虽然后来我没这么管了,但这个确实耗费了不少力气。
今年参加了一期《杭州 Node Party》,好像大搜车他们也是用过 node 写了套 AO,其实真的不合适用 node 去做,但谁让我们相对比较闲呢。

ps: 都是表面上闲,我打开我们前端仓库给 php 看,直接吓尿他们,就今年100多个项目,虽然大部分都是内部项目。

OA 最蛋疼的不是技术问题,敏感问题我也不好多说什么。

live2d

有意思的项目,这个其实没啥好说的,技术宅都喜欢折腾这种二次元的东西。
我折腾了下原理,并把原理告诉设计,本打算一起出个 demo,但 3d 部分是在是太蛋疼了,我也调不好,后来就搁置了。
以后要用,直接把 B站 的看板娘模板改改就好了,B站那个做的非常Q,动态元素少,所以规避了很多问题,调试起来会方便。
而且我已经吧 B站 的 22娘,33娘 所有模板都扒下来了,留着以后用。

vue ssr 踩坑

vue ssr 踩坑 iview,不是所有版本,而是当时一个版本的 menu 导致无限递归,最终只定位到了大致的问题点,没具体分析到底是 vue 的问题还是 iview 的问题。
不过遇到这种问题,最简单的方法,不用 ui 组件,自己重写一个即可。

vue ssr 跟 react ssr 还是有本质区别的,react 的理念简单,而 vue 的 vm 需要完全 node 跑,会牵扯更多未知的问题。
不过就使用上来说 vue 简单方便,甚至 ssr,vue create 后 add 一个 ssr 模块即可。

接口代理转发模块

由于我们项目之前的模板是阿里复制粘帖出来的,所以当时几乎都不敢升级模块,不敢重新安装模块。
其中 node 端接口代理模块也是阿里内部模块,1年后才有人将他放到 GitHub,但也是老版本。

其中最大的问题是模型多接口请求时,回调如果都挂,会触发 bug。

而且都什么年代了,还回调,于是就基于 promise 重写了新的接口代理模块,将业务代码减少一半以上,有的甚至减少到原来 1/3。
并且模块采用 koa-compose 封装,像 koa 一样方便的添加插件(中间件),全局统一处理错误等。

日志模块

上面说了 日志跟踪平台,然后就自己写了个日志模块,其实是造轮子,用其他现成的也 ok,但技术宅嘛,你懂的。
使用 ts 造了个日志模块的轮子,更合适我们自己的业务,而且不管是默认日志等级,还是自定义日志等级,都可以做到 100% 精准提示。
支持主流编辑器。

其他

基本上每天坚持学习,偶尔偷懒,坚持每个月2篇技术博,坚持刷了3遍塞尔达。。

看了一些技术书:

  • 《ECMAScript 6 入门》(持续更新的电子书)
  • 《JavaScript Promise 迷你书》
  • 《JavaScript 正则表达式迷你书》
  • 《你不知道的 JavaScript》
  • 《Node.js 实战》(看了5个版本,横向对比了下)
  • 《Docker 技术入门与实战》
  • 《图解HTTP》
  • 记不清了…

总结

暂时差不多就这些,想起了在补充。

基本上达成了去年定的目标,虽然我也记不清具体是啥目标了,但总的来说完成的还不错。

其实最大里程碑是,我做了父亲。
公司给了儿童节福利,我可以跟我孩子一起过儿童节了。

2019 继续加油。