通过阿里云宕机这件事,来看国内程序员的畸形职场文化

2023-11-20 10:42:16 浏览数 (2)

1、阿里云宕机始末

阿里在变更这块有三板斧,可监控、可灰度,可回滚。另外他们内部非常喜欢用这类简短的语句传递意图。

听起来非常简单,就目前大多数互联网公司基础设施都会支持这3项,只是支持的程度不太一样,普通的监控是监控,可观测性也是监控,但是区别相差甚远。从表面上来看,很多系统号称有监控,简单而基础的有主机负载、网络流量、磁盘IO这样粗放型的监控。这种没有深入到业务内部的监控,不能说没有监控,但通过这种监控自动发现问题和快速定位故障的程度不同。

可灰度和可回滚通常会结合起来使用,常用的是金丝雀、蓝绿发布,凡是刚刚上线功能,先灰度一部分流量上去试试,如果完全符合预期,那么按照正常节凑,全部发布上去。如果出现问题,一键回滚,造成的影响非常有限。

按照上述的节凑进行发布看似无懈可击,监控可以发现问题,通过灰度发布降低问题影响范围,出现问题回滚到上一个版本,但如果问题存在多个版本中,一直没有被发现,又该如何回滚?回滚太多,是否会存在数据库兼容性问题?上下游兼容性问题?新功能不可用问题?比如一个业务请求需要请求2个内部接口,才能完成一次请求的响应。如果其中有一个内部接口调用失败了,是返回部分数据?还是完全出错。假设返回了部分数据,上层业务以为是完整数据,结果可想而知。

所以上述三点完全实现起来并不是一件容易的事情。甚至,很多时候,大家过于依赖简单化的概念,进而有些自我催眠,而没有真正从技术上去做到全面的前期设计、评估、演练、优化、主动注入故障。

2、如何尽可能保证稳定性

阿里为了降低人力成本,一直在做中台,中台的本质就是消除人的不可靠性,统一管理,追求极致的效率,效率是高了,抗风险能力就弱了。对于互联网公司,有时多招聘几个人、各个部门之间各自为政未必是坏事。

除了最主要人力成本就是硬件资源,一个服务,部署在一个机房可以用,二个机房也是一样的效果。正常运行时不会有太大的收益。特别对于一些底层的基础设施本来就是一主一从架构,如果部署一套灾难切换环境,即便互为主备,在原有资源情况下需要再次翻倍。为了节约成本,如果企业不愿意这样做,那么就需要承担出现故障对应的惩罚。

稳定性从来不是一朝一夕的事情,技术只是其中的简单一环,如果你要是经常翻一些事故报告,报告中会有一些放之四海而皆准的复盘,究其根本,故障原因都是一些低级问题。

如果你是一个软件研发人员,仔细观察你当前团队工作5-10年的技术人员,无论是架构师、技术专家、甚至普通工程师,你会发现他们之间对技术的理解能力都差不多,基本上一个问题的解决方案都会比较雷同,那么为什么有的人只能做普通工程师呢?有的人却可以做架构师和技术专家,搭个框架、了解某个技术从来不是架构师的护城河,因为这些东西普通人可以很快习得。一切全在细节上,架构师对公司未来技术发展方向的把控、疑难杂症的解决、某个框架的设计或者算法的阅读能力要强于大多数人,不过这种能力很难一时看到效果或者很少用到。另外老板主要会关注一些财报和能给公司来带营收的事项,这些人会给老板一种错觉,虽然花这么多钱,但是这些人却没有产生什么价值。

对于普通工程师要想保证稳定性就必须从设计、开发、测试、上线、后续运维,保证全生命周期任何一环,都不要出现问题。但是问题都是发生在细节上,细节是什么?就是一些做了没人知道,不会有太多体现,不做可能也没有问题的事情。做细枝末节的事情很难被认可,如果做的好了,不出问题,老板可能觉着你什么都没做,接着会要求你做出一些体现价值的事情,俗称亮点。如果做的不好,领导会说,不知道你们天天到底做了什么,竟然会出这些低级问题。年终奖、加薪、晋升不要再提了。一旦老板把稳定性当成一件理所当然的事情,那么稳定性将不复存在。

3、畸形职场文化

企业招聘一大怪象,为了节约成本,淘汰年龄太大的经验丰富的技术人员,不愿意培养技术人员,接着又说社会上没有符合要求的技术人员。站在企业的角度,一方面大龄技术人员有自己的思考和想法,可能管理起来相对较难。另一方面薪资待遇相对比较高,但是加班干活可能却不如小年轻积极。这就导致一些企业在招聘的时候总是喜欢招一些年轻人,也是其中的原因之一。我觉着问题并不在大龄程序员这个群体,让我们思考一下,企业自身难道就没有问题吗?

目前国内盛产产品经理,很多毕业之后没有学过计算机专业的学生,程序员干不了,但是却可以弯道超车直接做产品经理,没有一点经验,凭借自己天马行空的想象力,想像出来一堆没有任何数据支撑的需求让程序员去实现。如果技术人员反抗,一堆产品经理围着说,这个需求已经给老板对过了,必须在这个月底上线。如果捅到老板那里,美其名曰,可以采用小步快跑,快速试错的思想(其实就是没有想清楚),总要做出一些东西出来。反正我就需求一提,技术团队来做,上线后成功了,功劳是我的,失败了也没啥坏处,互联网市场变化太快搪塞过去,找个新项目,继续画大饼。按照这个节凑,假设成功了,随着时间的积累,产品会越来越复杂,如果前期没有做好长期设计,其系统是非常脆弱的,任何一次变更可能都有发生故障的可能,不稳定性越积越多,每天都如覆薄冰,加之人员流动,那故障便是家常便饭,不仅阿里云这样,国内外大公司都出现各种各样的故障。所以有时什么都做,看似产出很高,但是不一定是好事。

不知道从什么时候起,加班就是约定俗成的。还出现了看似很有道理的人生经验,比如老板会灌输年轻人就应该多拼一下,加班才能学到更多东西,对未来也有好处。既然老板倡导,加班自然成了光荣的、可以拿来攀比的现象,比如说加班到凌晨一两点,拍个照,发个朋友圈,收到老板的点赞很开心。而管理者呢,还就吃这一套,谁加班多、会来事儿,考核的时候就更有好处。在这种氛围下,大家都知道了,只有加班哄老板开心,才能赚取更多的工资和升职加薪的机会,技术不是最重要的,就没有人愿意安心搞技术。于是出现了上班摸鱼、划水,下班写代码,最后留下各种坑。

计算机程序这种东西,虽然很多管理者对此不屑一顾,没有太大技术含量,只是一个工具而已,复制粘贴能用即可,前期看起来高效率,低成本。但是随着用户越来越多,产品就会越来越复杂,如果没有强大的底层基础设施支撑和前期的高层设计,bug会越来越多。出来混总是要还的,今天不关注技术,未来就会又要招聘无数个程序员为此加班。

不过随着时间推移,乱七八糟徒有虚名的互联网及软件公司会逐渐被淘汰,剩下的都是实实在在提供价值的公司,为了保证服务的稳定性和整体成本,公司会逐渐开始注重长期规划和投入,招聘更多有经验的程序员来设计或者重构系统,提升系统稳定性,目前这个势头国内已经出现,互联网已经进入存量时代,程序员这个行业招聘越来越严格,有经验有能力程序员会越来越吃香,而不是被随意调侃和裁员。

原创不易,随手关注或者”在看“,诚挚感谢!

0 人点赞