2018年的项目思考

去年我由干了多年的业务部门调岗到目前的技术平台部门已经快1年了,这一年过得并不轻松,遇到很多困难,到目前也没有全部解决,总有一种夹缝中求生存的感觉。

2018年末了,我做了很多思考,技术上的、非技术上的,这里来总结一下:

项目流水账

第一次P0事故

我今年5月份完全接手了公司的一个平台型技术项目,这个项目公司绝大多数的重要业务线都在使用,在内部评定的项目重要程度上,被评为A级。

可就是这样的一个项目,当时接手时的情况是:

  1. 虽然对业务方是一个服务,但是内部实现确有两套,分别是go版本和c++版本,并且两套同时对不同业务方提供服务;
  2. 账目混乱,究竟公司有哪些业务方、使用了哪些资源,没人能说清楚;
  3. 部署混乱,线上机器代码不一致,同一集群机房、地域极度不合理;
  4. 开发环境混乱,项目代码分支众多,分别都能上线部署;
  5. 文档匮乏,基本上只能从代码中看;
  6. 报警无数,加入报警组第一时间,手机就成了蜂鸣器;
  7. 交接仓促,基本上没和我说什么

当时每天找我查问题的业务部门很多,而且还有新需求开发,我就在这种情况下逐步熟悉项目。

过了没多久,线上出现了事故。由于我对代码很不熟悉,所以恢复的十分慢,最后采用了在线上调试代码才找到问题所在,最终完全恢复花了1天的时间,这就是第一次的P0事故。

第一次P0事故后

这次事故后,我对go和c++这两个版本的系统的了解深入了很多,也发现了两套系统各自的很多致命问题,简要说明如下:

go版系统

  1. 部署维护复杂,组件众多,且组件间有很严重的依赖关系
  2. 存在致命组件,简单说,就是集群中的任何一台机器的这个组件挂了,想完全恢复服务,需要把整个集群的服务重启

c++版系统

  1. 依赖的核心组件存在bug,会导致程序运行时意外崩溃,原因未知,组件很老,项目使用上由于非接口实现,所以完全替换成本很大;
  2. 业务逻辑也使用c++实现,简单的需求开发成本也很高

制定的改造方案

  1. 首先梳理清楚账目,搞清每个业务放都在用哪个集群的服务,控制服务入口
  2. go版由于架构问题,重新调整架构和推倒重来差不多;
  3. c++版架构上清晰合理很多,但代码实现问题很大;
  4. 基于c++版的架构,重新设计实现,另外,改进架构中高可用不足的问题

这样,我开始实施了。差不多花了1个多月的时间,完成了如下工作:

  1. 账目清晰了,重点业务也单独划分了出来;
  2. 入口服务重构完成,业务使用情况数据统计很清晰;

然后,我重新设计了一版新的架构和实现方案:

  1. 架构中充分考虑高可用
  2. c++实现系统所需要的底层高性能组件
  3. go实现业务逻辑

开发被迫中断

可惜事与愿违,我的开发无法正常进行下去,被各种事情打断:

  1. 有业务再次私自使用go版服务,服务无法满足他们的要求,但由于业务很强势,所以要配合他们调整;
  2. 公司年底要下线两个旧机房,但go版服务都在这两个机房,所以要做服务迁移

就在这两个事情进行中时,第二次P0事件发生了:

第二次P0事件

这次事故的原因很简单,就是go版那个核心组件的单机问题,有台机器挂了,所以集群服务需要完全重启。

由于服务故障发生在高峰期,我重启虽然很快,但业务那边的实现也有问题,恢复花了很长时间,导致用户投诉很多。

这次事故后,我自己好好的总结了下,也作出了一些调整,具体请看:https://www.jianshu.com/p/16eaf97f62cf

矛盾

上面这些流水账,可能很多开发人员都遇到过类似情况,也是很无奈,感觉作为一个开发人员,通常也就只能这样了。

也正是因为这样,这么多年过去了,我看到很多人都灰心的离开,离开时都有很多不甘心。

前几天还和一个同事聊天,也说到了这些问题,感觉很多混乱的地方,这里我说下自己对这件事情的看法:

很多技术项目,由于存在了多年,新功能开发很少,所以上面认为它属于维护期项目,自然不会认同资源的投入,会更倾向于做新的事情。

而处于项目中的普通开发人员,通常是有心无力,开发人员本就内向偏多,话语权少,最终经常是忍不了了就走了。

随着核心开发人员的不断离开,项目稳定性越来越差,大爆炸只是早晚的事情而已,由于维护期项目通常会交给新人,则频繁出现新人背锅的事情。

boss角度

公司要发展,资本市场要看的是公司的业务增长,所以公司方面就会很倾向于你做了多少新东西。

所以通常是,你和你的boss说,我把这个东西维护的很好,不出事情,boss只会认为你什么事情都没有做。

开发人员角度

我们都了解很多好的技术项目,就举最常见的几个:Nginx、Mysql、Redis来说,几乎所有大公司都在使用。

这几个项目,单论功能上,其实很多年前的版本依旧满足现在使用上的绝大多数场景了,那么按照boss观点,应该处于维护期了才对,但是这些年依旧在不停开发新版本,而每一版的开发投入,都是无数核心开发人员夜以继日的付出,所以才越来越好。

解决

其实这个矛盾,我想也是各自有理,没有哪一方是完全正确的,所以管理才最重要,只有管理的好,公司才能越做越好,所以我想,更好的管理人才才是最重要的。

我自认自己目前是做不到这一点的,所以如果能有个很好的老大,要特别珍惜啊!

重点技术项目持续投入的重要性

我想再表达下我对重点项目持续投入技术人才重要性的看法:

  1. 越复杂的技术项目,其架构设计在每个阶段都要做相应的调整,这本身需要核心人员的持续参与;
  2. 核心人员在项目中的持续深入思考,会提升技术水平,开阔思路,做新项目时,就会做的更好,不会给人一种重复劳动、止步不前的感觉,这不是简单的去参加几次有排场的会议能收货的;
  3. 不断核心人员的持续投入,重复这个过程,整个部门的技术水平就能得到上升,不会被人诟病能力低下

对核心技术人才储备的观点

最后,我再说下我对于核心技术人才储备上,关于人才培养和人才引进的观点:

人才培养

我个人觉得这是保持团队核心技术竞争力最重要的事情,胜于人才引进,具体说明如下:

  1. 在公司内部通过多年成长起来的技术人,大多对公司有感情,有归属感,不会因为简单的利益得失离开
  2. 通过长期培养起来的内部人才,忠诚度、可靠度都远远胜于外部老油条
  3. 长期培养起内部人才,要做一个重要的项目时,有人可用远远胜于临时现抓人
  4. 有利于长期培养做事情的方法、文化的传承,不会出现混乱的项目

做人才培养,最重要的是如何评判一个导师。一句话说得好:兵怂怂一个,将怂怂一窝。所以负责培养人才的导师才是最重要的,也需要优胜劣汰

人才引进

人才引进也是需要做的,我认为好处如下:

  1. 短期有效提升团队技术能力
  2. 给团队注入新鲜血液,让我们不会固步自封

结束语

2018年就要过去了,希望2019年能再有进步,不忘初心!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 31,938评论 2 89
  • 我在我的梦里醒了,我的主意识审视着这片梦境。这个梦比较完整,场景似曾相识却又未曾见过,剧情虽然有些荒诞,我却知道“...
    宋牧云阅读 257评论 1 1
  • 4.16.14C神那个全然祝福的面向即那不诅咒任何东西的面向。在神的世界里没有永罚(Condemnation)这样...
    卡乐be阅读 468评论 0 1
  • ——心慢下来,行动才能快起来。 初看到书名时候,有一种莫名的感角,看多了商场和专业上的硬邦邦的东西,特别需要一种柔...
    ShineLau阅读 305评论 0 0
  • 1.你累吗?我有药 2.没进步或许是因为你过得太安全了 3.努力吧,多给自己一点选择权 4.我们的习惯决定着我们的...
    小李非刀阅读 218评论 2 1