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

news2025/1/23 7:06:07

1、阿里云宕机始末

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

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

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

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

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

a61dcf33a905d27cbaebfb8b31230a9e.jpeg

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

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

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

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

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

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

3、畸形职场文化

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

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1214654.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Freeswitch中CHANNEL_UNHOLD取回事件

1. CHANNEL_UNHOLD取回事件 2023-11-15T09:18:45.3740800 INFO c.e.c.v.s.c.i.FsServerEventHandler - eventReceived:CHANNEL_UNHOLD 2023-11-15T09:18:45.3740800 INFO c.e.c.v.s.c.i.FsServerEventHandler - EventBody********:{variable_effective_caller_id_number1000,…

【博客系统】 一

该博客系统基于servlet和mysql数据库 , 并且通过xshell终端工具部署至云服务器. 实现的功能包括: 1.博客列表页 2.博客详情页 3.登陆页面 4.强制登陆检查 5.获取用户信息 6.退出登陆 7.发布博客 一.系统展示 登陆页面 博客列表页 博客详情页 博客编辑页 下面就开始编写代码了.…

【Proteus仿真】【STM32单片机】锂电池管理系统

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真STM32单片机控制器,使用LCD1602显示模块、DS18B20温度传感器、PCF8691 ADC模块、按键、LED蜂鸣器模块等。 主要功能: 系统运行后,LCD1602显示温…

Java方法中不使用的对象应该手动赋值为NULL吗?

在java方法中,不使用的对象是否应该手动赋值为null?我们先来通过一个示例看一下。 垃圾回收示例一 public class GuoGuoTest {public static void main(String[] args) {byte[] placeholder new byte[64 * 1024 * 1024];System.gc();} } 上面代码向内…

第五章 路由技术及应用

目录 5.1 直连路由概述 5.1.1 直连路由工作原理 5.1.2 直连路由配置 5.2 直连路由仿真 5.3 静态路由技术 5.3.1 静态路由定义 5.3.2 静态路由工作原理 5.3.3 静态路由配置 5.3.4 默认路由 (1) 默认路由概述 (2) 配置默认路由 (3) 默认路由应用场合:上网…

QGIS之二十四安装插件

1、从菜单栏中找到插件 2、搜索插件 从搜索框中搜索插件,如“cesium" 3、安装插件 4、查看插件 安装好的插件从这边可以看到,当然,其它插件可能在其它位置 5、已安装插件 可以查看已安装的插件

050-第三代软件开发-软件部署脚本(二)

第三代软件开发-软件部署脚本(二) 文章目录 第三代软件开发-软件部署脚本(二)项目介绍软件部署脚本(二) 关键字: Qt、 Qml、 bash、 shell、 脚本 项目介绍 欢迎来到我们的 QML & C 项目!这个项目结合了 QML(Qt Meta-Object Languag…

界面组件DevExpress Reporting v23.1亮点 - 全新升级报表查看器

DevExpress Reporting是.NET Framework下功能完善的报表平台,它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集,包括数据透视表、图表,因此您可以构建无与伦比、信息清晰的报表 界面组件DevExpress Reporting v23.1已经发布一段…

pyclipper和ClipperLib操作多边型

目录 1. 等距离缩放多边形 1.1 python 1.2 c 1. 等距离缩放多边形 1.1 python 环境配置pip install opencv-python opencv-contrib-python pip install pyclipper pip install numpy import cv2 import numpy as np import pyclipperdef equidistant_zoom_contour(contour…

k8s pod常用运维命令

1. 概述 kubectl 命令是操作 Kubernetes 集群的最直接和最高效的途径,熟练掌握命令的使用能起到事半功倍的效果,整理命令有助于加深记忆,该文仅记录关于pod常用的操作运维命令。 2. 查看namespaces 查看k8s集群中目前存在的namespaces kub…

使用VC++设计程序使用邻域平均平滑算法、中值滤波算法、K近邻均值滤波器(KNNF)进行滤波

VC实现若干种图像滤波技术 文章目录 VC实现若干种图像滤波技术实验内容邻域平均平滑算法1. 原理2. 实验代码3. 实验现象 中值滤波算法1. 原理2. 实验代码3.实验现象 K近邻均值滤波算法(KNNF)1. 原理2. 实验代码实验现象 实验内容 实验要求: …

深入了解域名与SSL证书的关系

在如今数字化的世界里,网络安全成为我们关注的重要议题之一。为了确保数据在网络上传输的安全性,我们通常会采取各种安全措施,其中最常用的就是SSL证书。然而,很多人并不了解SSL证书是如何与域名相互关联的。 首先,我…

TensorFlow案例学习:图片风格迁移

准备 官方教程: 任意风格的快速风格转换 模型下载地址: https://tfhub.dev/google/magenta/arbitrary-image-stylization-v1-256/2 学习 加载要处理的内容图片和风格图片 # 用于将图像裁剪为方形def crop_center(image):# 图片原始形状shape image…

基于风驱动算法优化概率神经网络PNN的分类预测 - 附代码

基于风驱动算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于风驱动算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于风驱动优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神经网络…

Java排序算法之归并排序

图解 归并排序是一种效率比较高的分治排序算法,主要分为两个步骤,分别为“分”和“并”。 分:将序列不断二分,直到每个子序列只有一个元素为止。 并:将相邻两个子序列进行合并,合并时比较两个子序列的元素…

Vue3:给表格的单元格增加超链接功能(点击单元格可以跳转到新的页面)

一、目的 在Vue3项目中&#xff0c;给表格某个字段下的全部单元格添加超链接功能&#xff0c;点击对应的单元格可以进入对应的页面 二、定义单元格内容 使用ElementPlus的el-table组件来实现表格 1、代码 <template> <el-table :data"dataAll"> &…

LabVIEW进行MQTT通信及数据解析

需求&#xff1a;一般通过串口的方式进行数据的解析&#xff0c;但有时候硬件的限制&#xff0c;没法预留串口&#xff0c;那么如何通过网络的方式特别是MQTT数据的通信及解析 解决方式&#xff1a; 1.MQTT通信控件&#xff1a; 参考开源的mqtt-LabVIEW https://github.com…

TCP连接保活机制

在TCP连接中有一个保活机制&#xff0c;叫做Keep-Alive&#xff0c;用语言描述就是如下&#xff1a; 在保活时间内&#xff0c;如果没有任何连接相关的活动&#xff0c;TCP 保活机制会开始作用&#xff0c;每隔一个时间间隔&#xff08;保活时间间隔&#xff09;&#xff0c;发…

YOLOV8部署Android Studio安卓平台NCNN

下载Android Studio&#xff0c;配置安卓开发环境&#xff0c;这个过程比较漫长。 安装cmake&#xff0c;注意安装的是cmake3.10版本。 根据手机安卓版本选择相应的安卓版本&#xff0c;我的是红米K30Pro&#xff0c;安卓12。 使用腾讯开源的ncnn&#xff0c;这是一个为手机端极…

vue3实现数据大屏内数据向上滚动,鼠标进入停止滚动 vue3+Vue3SeamlessScroll

1.效果图 2.npm下载依赖及main.js文件配置 npm install vue3-seamless-scroll --saveimport vue3SeamlessScroll from vue3-seamless-scroll;app.use(vue3SeamlessScroll) 3.html代码 <!-- scrollFlag为true时再渲染,vue3只要涉及到传值子页面需要加flag判断&#xff0c;否…