Goodbye 2017

都忘记2017年是怎么开始的,现在已经要结束了。

工作

也算是杂家,测试起家,小公司打杂,号称全栈工程师,现在又做运维。技术的各个方向都玩了个遍。其实做什么都无所谓,基础扎实,方向再怎么变化,也无所畏惧。

今年主要任务是做开源中间件的运维,包括一些标准化制定,自动化和少量服务化的事情,比较纯技术。玩各种中间件过程中,也碰到一些问题,可惜只做了少量的积累,以后有机会多写一些实战经验。

以前在小公司,追求的是分布式架构,各种组件都要水平扩展,高可用,所以用的很多技术方案都是分布式的架构。现在要求没那么高,很多组件根本没有那么大的量,仅仅高可用就满足需求。所以现在很多组件就是主备模式,也会用一些常见的负载均衡软件,一些分布式架构的东西,就依赖Zookeeper或者ETCD来搭建了。

用的比较多的组件就是Keepalived,LVS,Nginx这些,可以前玩过的也就是Nginx了。现在开源的软件都比较友好,文档,社区都很齐全,但是以前一些软件,就比较随意。像LVS和Keepalived,连个像样的文档都没有,所以研究过程中也碰到各种各样的问题。幸好一直在学习《TCP/IP详解》卷一,所以很多文档缺失的问题,都可以通过抓包来研究解决。而且也是一直写代码,实在无法解决的,也可以翻翻源代码。可惜精力有限,翻代码的事情很少做。

IT日新月异,2000年开发技术发展迅猛,什么敏捷,TDD,XP,CI等等,把原来的开发模式搞的天翻地覆。说到底,还是因为互联网的普及,导致原来的开发效率无法满足需求的变化。但是开发效率提升,必然导致产业链后端的运维感到很大的压力。所以2010年开始,运维也出现各种各样的变革,什么Devops,SRE,CD等等。

我也算赶上这一潮流车,最近几个月被领导抓去做持续交付。以前都是写代码的,现在摇身一变,成了做项目的,真是一把辛酸泪。等明年搞完后,再写血泪史吧。

读书、学习

现在上班基本上坐地铁,在地铁上大概有40多分钟时间,于是无聊,前大半年在地铁上翻了很多杂七杂八的书,大概有2,30本。小说多些,比如黑塞的,卡尔维诺的,马尔克斯的,毛姆的,推理小说。看完就忘,看的时候也看不大懂,也不知道是不是在浪费时间。

不过还是有几本书感觉写的好,推荐一下:

据说程序员的三大浪漫是图形学,编译原理,操作系统,据说身为一个合格程序员,要写过/看过一个OS,一门语言,一个DB。如果在学生时期,要完成这个目标还是有可能的,但是工作后,难度就很大了,因为没有那么多时间。

不过理想总是要有的,一直对OS很有兴趣,但是一直入不了门。今年终于有所突破了,首先前半年把《x86汇编语言》啃完了,这本书真不好啃,知识点都不错,但是里面的例子搞的太复杂了,很多OS已经不用的知识,也花了大量篇幅描述。如果里面的例子能好好设计精简一下,可以成为一本OS入门的经典书籍了。

很久就心仪MIT的xv6操作系统,但是怎么看也看不大懂,后面发现基础知识不行。今年看完了《汇编语言(第3版)》《x86汇编语言》,再看xv6的代码,轻松多了。断断续续看了xv6的bootstrap,栈的应用,虚拟内存,系统调用部分,也终于搞明白以前不懂的东西,也把自己的理解写到blog上,也算是一种鞭策吧。还剩下硬件的部分,进程调度,文件系统,锁的部分,希望明年可以一举拿下xv6,做一个略懂OS,半合格的程序员。

以前在小公司,一直醉心于分布式系统的构建,也听过鼎鼎大名的 paxos,raft等协议,但是只是看看皮毛,其实还是什么都不懂。

因为工作中用到了zookeeper和etcd,所以想深入研究一下raft协议。还是MIT好啊,6.824的课程就是实现一个raft系统。有一段时间玩了一下,发现学术界和工程界简直就是隔行如隔山,raft协议论文就10多页,结果就是一个选举,实现太复杂了,各种边界,各种意外,各种条件,勉勉强强把选举的测试跑通,也不知道实现的正确不正确。可惜后面被抓去搞持续交付,没有那么多时间了,有空还是得继续研究。

不过今年没怎么偷懒,blog也有更新。

生活、娱乐

基本上就是过年回家,其它时间都待在深圳。今年就去过一次汕尾,结果还碰到台风,啥也没玩成。明年要计划多看看祖国的大好河山,瞧瞧花花草草,观观日月星辰。

精力大不如从前了,锻炼才是王道。夏天一群小伙伴还每周跑到南山游泳,后面自己有空还跑跑步。现在天冷了就懒,跑步也没跑,还是要坚持锻炼。

偶尔也追追美剧,比如《权力的游戏》、《毒枭3》,电影什么的看的少,有空也休闲一下。

展望

明年估计要玩玩docker生态,也看看rust这门语言。

明年blog,能写的东西更多吧。