2019年终总结

Author Avatar
Damon Lee 3月 06, 2020
  • 在其它设备中阅读本文章

2020年在快到来的时候就已经注定了不平凡,让肺炎这个词在2003年非典之后再次成了年度热词,一场战役不知掏光了多少家餐饮娱乐业,多个公司降薪裁员也一定让大家意识到了充实自己能力的重要性。

我一直认为程序猿本身就是一个要不断学习总结的职业,不然的话做前端就是一辈子的UI Boy,而做后端就是一辈子的CURD Boy。

接下来就回顾下2019年,要说2019年最大的事莫过于开始接触SaaS,采用微服务架构,跟我之前经历刚好吻合,不同的是这次主要的工作重点不是业务,而是框架搭建和出解决方案,主要是负责封装一些通用的module来简化后端同学的开发工作,所以当后端团队的业务标准化后就带来了一些问题,如何管理这些通用模块,总不能每次都要同事去拉项目源码然后自己执行mvn install吧,为了解决这个问题就引入了Artifactory,为什么没有选择Nexus就不赘述了,毕竟Artifactory很好很强大,还能顺便解决npm和pod私服,虽然中文资料不多,但是摸索一下你会发现真香。

我们的业务是Kubernetes部署的,这个名词以前只是听说过,知道它是为微服务而准备的以及和docker有密不可分的联系之外我就什么都不知道了,为了了解k8s我还买了一本厚厚的《Kubernetes权威指南》,通过哪里不会点哪里的查字典模式摸透了k8s服务编排的思路,同时也了解了国内的书机翻的比例真是大到你无法想象,一些关键字竟然给你翻译成中文……

要说程序员如何很快的掌握一门技术,最好最快的方法就是直接写代码,所以手写yaml(json也可以)配置文件无疑是锻炼自己理解k8s最好的方式。先是从Pod,Deployment,Service,StatefulSet,ConfigMap等一点点学习到最后组合在一起,对整体的服务编排就有了清晰的认知,后来因为Ingress奇妙的使用感受又让我不得不去了解下,于是traefik这个东东就进入了我的学习视线,官方文档虽然全是英文但是必须承认真的写得太好了,一步一步跟着来就能一路绿灯。之后又因为数据需要持久化又顺便学到了PV,PVC和NFS搭配,当然也少不了搭建k8s环境时学到的Master和Node,这些基础都了解之后,k8s的概念就深深印在脑子里了,如果你以为这些都了解了之后就万事大吉了,那你真是图样图森破,因为还有Helm要学习😂,好在学完之后你会发现什么部署redis-ha,mongodb-ha,rabbit-ha等之类的都是浮云。当然学k8s这么快不得不感谢Nacos这个项目,因为我们的项目从Eureka迁移到了Nacos,就是在搭建Nacos高可用的时候get到了StatefulSet和Replication Controller,从此你会发现弹性伸缩是这么的easy。而且在跑官方的nacos-k8s样例时发现了一些问题,反馈到官方群里,现在已经得到了解决。

2019年要是光get了k8s,那就太寒碜了。移动端开发人员都知道闲鱼是国内首先吃Flutter这个螃蟹的团队,我们正好有个项目也在调研,于是就有了混合开发的预案,方向是项目分两个模块,其一是Native模块,负责即时通讯,推送等适合原生的功能模块;其二是Flutter模块,负责一些通用的页面展示和信息的提交;同时要求Native模块和Flutter模块均可独立运行,然后Flutter项目作为依赖来打正式包。国内最纯熟的方案就是闲鱼团队开源的flutter_boost,在调研完毕后我就写了Android和iOS的Demo,实现了原生和Flutter页面的相互跳转和传参。我本身不是iOS开发,所以在做iOS的demo的时候顺便学习了一些好玩的东西,比如打包iOS的Framework作为Pod依赖供iOS开发使用。Android自然不必说了,肯定是打包AAR然后原生项目依赖这个AAR即可,唯一的难点就是Flutter打包后会生成多个AAR,每次都去覆盖不是标准的程序员该做的事,业界的通用方案就是far-aar,在上网了解了一些资料后通过shell脚本也解决了。最后iOS和Android开发即可通过Artifactory私服来依赖framework和aar了,再配上持续集成,基本就符合标准的流程了。😁

既然采用了Flutter,自然就预估了一些风险,但是让我万万没想到的是风险远远超过了我的预估。再加上项目分移动端和平板端,不作(读一声)不开心的我自然选择了以前没玩过的平板端。本来跟我们合作的后端团队都是巡检报表写死,但是产品的需求又是后面肯定会改动报表的内容,这让我怎么能忍,一个报表一个页面要让前端写到猴年马月了,于是在论战了几个回合之后终于按我的提议改成了动态表单,本地要存动态表单自然少不了ORM,然而我选型的最适合本项目的ORM框架是基于Lua的plugin,作者提供的native库没有x86架构😭,更“幸运”的是为了调试而采购的平板只有一台,所以我用平板调试的时候,其他同事就只能用Genymotion模拟器,没有x86的库就意味着模拟器跑项目必然会崩溃,心有不甘的我拉下作者项目的源码后发现作者的makefile把x86相关的全部注释掉了😂,我打开注释后用ndk编译才发现各种报错,最后终于凭借之前编译构建的经验把问题一个个解决,然后把编译好的产物发布到了dart pub上,这样大家就不用每次都依赖项目了。ORM解决了就是动态表单了,说实话虽然是我提议的动态表单,但是我也是仅仅在native上有自信能搞定,作为新手的我用flutter渲染动态表单UI我也不是很自信,好在正好跟iOS的同事打了个赌说我自己肯定能做出来,最后终于没食言还是搞定了,估计那天晚上睡觉做梦都是笑着的😂。

除了以上这些其实还折腾了一些后端的东西和树莓派相关的项目,在这就不一一列举了。

我的2019年还是跟往年一样很充实,因为工作的充实导致业余生活的项目没啥可以说的,几乎是0😂

总之对于2019年的成果我还是很满意的,这份满意少不了家人的理解和公司领导的支持,当然也少不了我带领的7个小朋友的配合。

2020年,希望疫情赶紧过去,让大家都回归到正常的生活节奏。Go Go Go!