跳到主要内容

· 阅读需 1 分钟
xu gao

prometheus 操作员不支持基于注释的服务发现,而是使用PodMonitorServiceMonitorCRD 来代替,因为它们提供了更多的配置选项。有关如何使用PodMonitors/ServiceMonitors的信息,请参阅prometheus-operator/prometheus-operator此处文档的说明:

默认情况下,Prometheus 会在其命名空间内发现 PodMonitors 和 ServiceMonitors,它们的发布标签与 prometheus-operator 版本相同。有时,您可能需要发现自定义 PodMonitors/ServiceMonitors,例如用于从第三方应用程序中抓取数据。在不影响默认 PodMonitors/ServiceMonitors 发现的情况下,一种简单的方法是允许 Prometheus 发现其命名空间内的所有 PodMonitors/ServiceMonitors,而不应用标签过滤。为此,您可以将prometheus.prometheusSpec.podMonitorSelectorNilUsesHelmValues和设置prometheus.prometheusSpec.serviceMonitorSelectorNilUsesHelmValuesfalse

helm -f values.yaml 增加下面配置

prometheus:
prometheusSpec:
podMonitorSelectorNilUsesHelmValues: false
serviceMonitorSelectorNilUsesHelmValues: false

helm --set

helm --set prometheus.prometheusSpec.podMonitorSelectorNilUsesHelmValues=false --set prometheus.prometheusSpec.serviceMonitorSelectorNilUsesHelmValues=false

· 阅读需 3 分钟
xu gao

问题出现在 Kubernetes 1.26 版本以后的集群,因为 1.26 版本修改了externalTrafficPolicy:Local 的处理逻辑

重现过程

假设我们在Kubernetes集群中部署了一个应用服务,对外暴露的是myapp.com域名。

首先,这个域名通过DNS解析指向了myapp服务的一个External IP。

然后,因为需要通过设置 svc LoadBalancer 模式自动获取云服务商的IP,同时厂商要求这个服务的 externalTrafficPolicy 要被设置成 Local 模式才可以获取。

Local模式要求服务的后端Pod必须与请求Pod在同一个节点上,流量才会转发过去。

开始的时候,服务运行在Node1上,Node1里的Pod访问都OK。

但是Node2里的Pod试图访问,由于myapp服务现在都在Node1上,Node2的请求被断路代理拒绝了。

于是 Node2里的Pod访问myapp域名就失败了!

另外,随着Pod的重启,比如myapp自己就重启了几次,每次IP和名字都会变......

所以Node1外的其它节点,以及集群外的用户,访问这个域名时,成功与否的概率其实很低很随机。

这就是因为一开始做了那个“Local”的限制,违反了服务可发现与负载均衡的初衷。

原因

  1. 对应的 svc externalTrafficPolicy 为 Local 模式
  2. Local 模式要求客户端和后端Pod在同一节点
  3. 不存在本地端点 - 将丢弃流量,不会转发

为什么 1.26 版本以前的集群可以

1.26版本之前:

  • 存在本地端点 - 转发流量到后端Pod
  • 不存在本地端点 - 仍会尝试转发流量到其他节点

1.26版本之后:

  • 存在本地端点 - 转发流量到后端Pod
  • 不存在本地端点 - 将丢弃流量,不会转发

总结区别:

1.26之前:即使没有本地端点,也会转发流量到其他节点

1.26之后:严格限制必须有本地端点,否则一律丢弃流量

现象

  • pod 内访问域名或 EXTERNAL-IP 无响应 或者 Failed to connect
  • 带有 Istio Envoy Sidecar 代理的 pod 访问 会返回 TCP connection reset by peer
    1. 因为流量先被istio-proxy拦截,建立7层连接,所以telnet能通,curl表现为等响应
    2. 然后istio-proxy去upstream,即请求x.x.x.x(EXTERNAL-IP),等拿到x.x.x.x(EXTERNAL-IP)的回应后,再回给业务容器。
    3. 由于是Local模式,且节点上没有ep,导致istio-proxy在upstream建连失败而超时,于是再回给业务容器503
  • 对应的 EXTERNAL-IP 节点内的 pod 访问没问题
  • 容器外部访问没问题

解决方案

修改访问方式

将对应的访问地址改成 svc name 这也是 k8s 推荐的集群内服务之间的访问方式

腾讯云

将 LoadBalancer 对应的 ip 设置为 直连 Pod 模式 Service,对应文档

· 阅读需 2 分钟
xu gao
转发

最近谷歌却被爆出大规模投资了另一家新兴AI创业公司Anthropic,其重点产品是Claude这个AI系统。Claude是一个强大的大型语言模型,在处理中文和上下文对话方面表现不俗,还拥有写作、编程、解释概念和翻译等多方面的应用潜力。与ChatGPT类似,Claude也值得关注,是AI领域一个有潜力的新尝试。

Claude 2.0 大更新

Claude 2.0 目前依然在免费试用阶段,已经从 Slack 平台独立出来,直接在官网使用。据部分使用者反馈, Claude 1.x 的水平已与 GPT 3.5 相近, Claude 2.0 在语言理解能力上有所进步,是一款值得关注的新兴 AI 系统。使用 Claude 2.0 无需支付费用,目前还有一定的使用限制,但对开发者也开放了 API 。普通用户可以上传文档等给 Claude 2.0 阅读分析,每次最多5个文件。 Claude 2.0 在语言理解方面的表现确实不错,有望成为一款实用的AI助手。

Claude 2.0 注册教程

  1. 必须准备好代理,美国最好
  2. 前往「Claude.ai 官网
  3. 可用任意邮箱注册,需手工填写邮件验证码;或使用 Google 账号直接登录 (推荐后者更方便)
  4. 按照流程一步一步确认信息后即可使用
  5. 在聊天框内输入内容即可与 AI 聊天了,与 ChatGPT 网页版的使用基本一样

Untitled

· 阅读需 2 分钟
xu gao

开发过程中有时会遇到用户名和密码明明是对的 程序里死活都连接不上提示没有权限的问题,根源在配置和mongo的认证机制上。

首先在你连接 MongoDB 前要确定的是你应该认证身份的数据库和你要使用的数据库

参考一下表格获得更好的理解

Connection parametersAuthentication databaseCurrent database
mongo -u user -p pwd --authenticationDatabase admin myDBadminmyDB
mongo -u user -p pwd myDBmyDBmyDB
mongo -u user -p pwd --authenticationDatabase adminadmintest
mongo -u user -p pwd --host localhost:27017admintest
mongo -u user -p pwdadmintest
mongo -u user -p pwd localhost:27017testtest
mongosh -u user -p pwd localhost:27017admintest

URI 方式

Connection stringAuthentication databaseCurrent database
"mongodb://user:pwd@hostname/myDB?authSource=admin"adminmyDB
"mongodb://user:pwd@hostname/myDB"myDBmyDB
"mongodb://user:pwd@hostname?authSource=admin"admintest
"mongodb://user:pwd@hostname"admintest

大多数情况是你没有指定 authSource 同时 要连接的数据库和用户不在一个库里,比如你创建了 admin 用户在 admin 库但是你要连接的是xxDB 导致的。

如上述 比如你填写的 URI 是 mongodb://user:pwd@hostname/myDB 那么就会报错。 修改成 mongodb://user:pwd@hostname/myDB?authSource=admin 就好了,

authSource是用户所在的数据库 /myDB 是你要连接的数据库。 这里背后其实有个逻辑 如果你的用户配置的是 userAdminAnyDatabase 权限一般会创建在 admin 库 这样在连接其他的库的时候必须指定 上述两个参数才可以。

· 阅读需 1 分钟
xu gao

一般搭建在跟代理一个机器上 机器配置也不高所以直接本机搭建 不用 docker 之类的了

下载 subconverter 后端程序

以 linux 64 位 cpu 为例

wget https://github.com/tindy2013/subconverter/releases/download/v0.7.2/subconverter_linux64.tar.gz
tar zxvf subconverter_linux64.tar.gz

如果需要其他系统版本这里找 tindy2013/subconverter

注册 subconverter 为 linux 系统服务

1. 编辑 subconverter.service

vi /etc/systemd/system/subconverter.service

2. subconverter.service 内容

/etc/systemd/system/subconverter.service
[Unit]
Description=A API For Subscription Convert
After=network.target

[Service]
Type=simple
ExecStart=/root/subconverter/subconverter
WorkingDirectory=/root/subconverter
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

注意修改 ExecStart 和 **WorkingDirectory ** 路径

3. 设置跟随系统启动

systemctl enable subconverter
systemctl start subconverter

4. 查看日志

journalctl -fu subconverter

在线生成转换地址

前端我们也可以搭建,但是没必要,下面分享一些三方的前端,当然你如果不在意隐私前后端都可以用别人的。

页面后端地址填写我们的地址就可以 https://你的主机ip:25500/sub?

· 阅读需 2 分钟
xu gao

国内注册 ChatGPT 会出现提示 not available in your country 也就是你所在的国家无法注册 现在教你如何解决。

需要

  1. 代理 注意不能是中国或香港,最好用 美国或者日本的
  2. 需要一个国外的手机号, 我们通过在线短信平台接码来解决 sms-activate.org (需要充1美元)

开始

第一步 注册 SMS-ACTIVATE 并充值

打开 sms-activate.org ,注册帐号

Untitled

充值

Untitled

接收一次OpenAI的验证码成本大概在7~10卢布(人民币1块钱左右),平台只接受美金,所以我们充值1美金就够了 大概7人民币。

我们选择充值渠道 这里我选的支付宝

Untitled

充值完毕之后我们先回到OpenAI的页面一会再回来操作

第二步 注册OpenAI

注意一定要挂代理访问 前面有提到

我们打开OpenAI的注册页面。 邮箱gmail或者国内的都可以。

Untitled

填写完成之后点击Continue,然后会给你注册的邮箱发一个邮件 点击注册 填写基本信息。

Untitled

填写手机号

截图里是韩国 我们要选择印度(India)。

Untitled

回到我们接码的平台在左侧列表选择OpenAI服务 然后选择印度 点击购物车

Untitled

跳转到此页面我们 激活通过短信 下会有你刚才加入购物车的手机号 我们复制粘贴到OpenAI注册页面等待短信验证码回填

Untitled

填写完验证码之后 这个页面我们随便选一个选项就行

Untitled

完成之后 我们就可以尽情体验ChatGPT

Untitled

· 阅读需 2 分钟
xu gao

通过配置系统文件 alias 切换

通过 Homebrew 安装 Java JDK

使用Homebrew安装多个 Java JDK 版本。要安装 Homebrew 运行:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

现在使用以下命令安装 Java JDK 11或更高版本brew cask

brew install --cask temurin<version>

# latest version
brew install --cask temurin
提示

JDK 版本 891011不再受支持。

Adoptium提供较旧的 Java 版本。从 Adoptium 安装 Java JDK:

# install from third party repository
brew tap homebrew/cask-versions

brew install --cask temurin<version>

# Java 8
brew install --cask temurin8

# Java 11
brew install --cask temurin11

# Java 17
brew install --cask temurin17

通过别名切换 Java JDK

在您的或您的主要 Java 版本中设置JAVA_HOME路径,并为每个已安装的 Java 版本添加导出。.zshrc .bash_profile

export JAVA_HOME=$(/usr/libexec/java_home -v17)

export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
export JAVA_11_HOME=$(/usr/libexec/java_home -v11)
export JAVA_17_HOME=$(/usr/libexec/java_home -v17)

检查默认 Java 版本和安装路径:

java -version # 17

.zshrc为您的或.bash_profile为每个已安装的 Java 版本添加一个别名。别名JAVA_HOME与选定的JAVA_VERSION_HOME.

alias java8='export JAVA_HOME=$JAVA_8_HOME'
alias java11='export JAVA_HOME=$JAVA_11_HOME'
alias java17='export JAVA_HOME=$JAVA_17_HOME'

现在,要在 Java 版本之间切换,请在终端中输入别名java8。执行java -version以验证您现在使用的是正确的 Java 版本

提示

Alias更改使用的终端实例中的 Java 版本

使用软件**SDKMAN!**更改

SDKMAN!

· 阅读需 1 分钟
xu gao

出现警告

Warning: the fonts "Times" and "Lucida Bright" are not available for the Java logical font "Serif", which may have unexpected appearance or behavior. Re-enable the "Times" font to remove this warning.

原因

你的苹果电脑缺少Times字体

解决方案

进入下方链接下载字体双击安装就好了 https://www.freebestfonts.com/timr45w-font

· 阅读需 1 分钟
xu gao

问题

JavaVM: Failed to load JVM: /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/bundle/Libraries/libserver.dylib
JavaVM FATAL: Failed to load the jvm library.

解决方案

cd /Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/lib
sudo ln -s ../jre/lib/server/libjvm.dylib libserver.dylib

· 阅读需 32 分钟
xu gao
转发

转自 InfoQ 很好的文章 分享出来 希望大家都可以得到收获。

  • 后疫情时代,传统企业面临的现实世界是怎样的?
  • 偏传统的企业做数字化转型最迫切的问题是什么?最好解决的问题是什么?最难解决的问题是什么?
  • 数字化转型这事应该由谁来牵头,谁为结果负责?
  • 在数字化转型的过程中,有哪些关键技术值得下力气去做?
  • 数字化投入无法转化为业务价值,问题出在哪里?
  • 如何评价数字化转型的 ROI ?……

一问:后疫情时代,传统企业面临的现实世界是怎样的?

第一,今天我们正处于乌卡时代。

乌卡时代(VUCA ),是 Volatile(易变不稳定),Uncertain(不确定),Complex(复杂),Ambiguous(模糊)的缩写,这个概念最早由美军在 20 世纪 90 年代提出,用来描述冷战结束后的世界,后被引用描述变幻莫测、充满不确定性的商业环境。

今天,很多企业里面的领导层经常焦虑,为什么呢?因为当前这个时代就是乌卡时代,这是今天的企业面临的第一个真实的情况。在这个情况下,对于 Leader 最大的一个要求就是方向。所以我在公司里面经常讲一句话——没有方向感,最大的责任人就是一把手或这个高管团队。

第二,中国市场的变化,从供不应求到供大于求。

不管是真实的物质产品,还是虚拟产品,包括技术产品,都是从供不应求到供大于求。在过去,业务的增长可能很大来自于增量用户,但如今我们很多时候需要基于存量用户去经营。

应对第一点问题,你需要做敏捷。那么针对第二点,你需要足够优秀、足够卓越。原来做生意,有渠道就行了,比如原来我们去买股票是需要拿一个纸条子的,那个纸条子还得花钱买,再比如原来你可以把一台空调卖到几万块甚至十几万块,因为只有你有,或者只有你有渠道,但今天到处都是空调,到处都是电器,你还能简简单单卖这么贵吗?

为什么今天我们普通人比过去皇帝过得还好?都是依托于科技的进步,而随着科技越来越变成基础设施,人民的生活还会越来越好。

第三,企业原来是先做大再做强,现在要先做强再做大。

我觉得在过去很多时候,其实很多企业是先做大后做强,因为供不应求,都是增量用户,等你精雕细琢出来,蛋糕早被瓜分完了,所以当时做企业是不计成本、不惜代价,因为有资本的助力,你可以有恃无恐。但现在是什么?现在你一定要先做强后做大,否则死路一条,我觉得这也是创业者以及 IT 部门人员要刻在骨子里的认知。

这是我针对第一个问题给出的答案,我觉得弄清楚这个问题非常非常重要,因为人一定要知道自己所处的上下文,所处的环境,所处的时代,不要总觉得自己很牛逼,其实很多时候是因为时代牛逼。

二问:偏传统的企业做数字化转型最迫切的问题是什么?最好解决的问题是什么?最难解决的问题是什么?

最迫切的问题,统一思想。

也就是说,在大方向上,大家的思想是不是都是一致的。有的企业对这一点真的是有非常深刻的认知,比如平安银行。我曾经去平安银行做过交流,了解到平安银行购买了数字化转型的课程,让几万人都去学习,所有人甚至包括司机都要参加考试,这被内部戏称为平安银行的高考,我说这个太变态了。但是我觉得只有这样,这家企业里的人才能形成这个共识,因为做数字化转型最难的一个问题就是统一思想,做不到会相当麻烦。当然,要做到这一点,不同的企业有不同的节奏和路径,不一定要和他们一样。

最好解决的问题,技术问题。

我可以斗胆说一句,今天中国大多数商业公司没有什么特别的技术挑战,撑死了也只是你公司里自己的技术挑战,放到全北京、全中国去看,就不是什么挑战了。当然如果你把普遍的业界共有的技术挑战给解决了,那我觉得你发财了,你应该去创业,这是一个巨大的机会。所以,我认为业务的支撑技术不会是一个很大的问题,而且是我们作为 IT 部门最应该、最快跨越的问题。

最难解决的问题,新建一个组织,实现业务 IT 的一体化。

数字化转型最后的结果是什么?是有一个新的组织,有一帮既懂技术也懂业务的人,但这在当前的企业里面可能是不存在的,或者不是普遍存在的。那怎么办呢?企业要培养这样的人,所以这一点对应的就是要去做组织转型,让企业达到优秀卓越,去应对充分竞争的市场。最后让这个组织具有专业分工、高效协同的特征。你可以观察一下,你现在的公司是不是已经做到了这一点。

要培养创始产品经理和企业架构师

关于人员培养的问题,有一个很重要的事情就是要去培养产品经理。这里的产品经理不是我们一般说的这种偏执行性的产品经理,业务的翻译器,而是创始产品经理,他是懂业务的,他知道做什么对公司有价值,一旦做了就会把这个产品做好。另外,还要培养企业架构师,去做整个高阶的体系的设计。新时代需要的这两种人才,企业可能都没有。

我可以丝毫不开玩笑地说,今天很多研发都只是“工人”,如果你不像我刚才说的转换思维去成就业务,就只能停留在工人级别“计件制”的竞争,挣两三万很高了。

我在这里稍微展开讲一下我们公司。我们公司总共 4000 多人,研发团队总共就 100 人,核心的业务全部是自研的。一个小团队有 3 到 5 人,做 1 到 3 个产品,他们不断把这些产品的成熟度做高,从支持业务慢慢地转向接管业务。随着我的产品做得越来越好,请问,业务部门的人难道不应该去提升能力、去更进步吗?否则我为什么要研发去做这个产品?我们公司做了一件很明确的事情就是,随着科技能力建设的提升,做出了共享中心,然后进行裁员。你猜结果怎么样?产品做得更好了,因为我们把标准做在了产品里边,我会在后面特别展开去讲这件事情。

做数字化转型不只是个技术问题,首先你要对业务深刻理解,要高度抽象,要有架构设计,你还要推动最难的组织变革。你也知道,历史上做变革的人下场大多不好,放在今天也一样,做数字化转型真的是太难了。

我对第二个问题的回答到此为止,不一定特别适合你的企业,但是我的观点非常鲜明,我认为它是对的,并且成功实践过。

三问:数字化转型这事应该由谁来牵头,谁为结果负责?

你有没有注意到,我在前面说今天其实大多数企业是没有这种人才和团队的,那数字化转型这事儿应该由谁来牵头、谁来为结果负责?有人说,过去是 CTO 负责。过去的 CTO 就是个技术宅男,充其量就是个高阶的工人,公司的业务啥都不懂,他怎么能做得好这事呢?所以,大多数传统的 CTO、CFO 以及 CMO 等等角色无法胜任领导大家去转变思想成就业务这件事。

但是我认为,这件事最终还是要让 CTO 去承担,去牵头 ,道理很简单,IT 人员可以转业务,但是你让一个业务部门的人来转 IT,想要他从头去学习 Java 和 K8s,这不是很难吗?从大方向来说,现在的企业没有这样的人,所以需要能培养就培养,能招就招,但是这些人最终都得到 IT 部门去,对 IT 部门来说这个人很重要。

你可能不知道,今天很多的 CTO 都是被干掉的,在公司里边很没地位的。为什么?因为他没有成就业务。 我在公司里观点就很鲜明,因为我给公司创造价值。所以我就跟 IT 团队讲,我们要干的就是把业务部门裁掉,裁不掉他们就裁我们,这是血性,这也是方向,要是你不做到这个迟早会被裁,再过三年就像一些公司一把裁掉 IT 团队 90% 的人员。其实这很正常,企业要存活,等你真正面临企业的生死存亡时刻,你就会知道这是很残酷的一句话。

那么,谁来为结果负责呢?谁强谁负责。就像在公司里边,这个需求到底什么时候做,不好意思,我说了算。如果业务部门跟我谈了一堆没啥用的需求,我可以压需求三个月不做,我觉得你作为 Leader 真的要扛起这事儿。但是回过头来讲,在有的企业里面你能这样吗?所以很多企业我是不去的,去了我肯定死得很惨。

应对之策

第一个,一个产品,如果按照成熟度来划分,它可以被高度总结为工具、助手、专家三个等级。

第一个阶段,工具,对业务部门有点帮助,对别人有点用。第二个阶段,助手,你这个人、你这个岗位百分之七八十被我的产品取代了,这叫助手。专家是什么?你,裁掉,当然这是形象化的表述,实际是指是替换掉做的事,关于相关人员,那是公司 HR 的事。

可以很明确地说,我们现在已经进入到助手和专家之间。我也可以很明确地跟大家讲,我们公司就是每个月都在裁业务部门的人,你就得进步,就得转岗学习,你做的那点事有什么系统做不了的?真的留下不能取代的是真正有价值的工作。

我们把这些角色给高度抽象了以后,你可以看看一个公司里到底有多少人是有创造力的,有的人做的不是搬数据就是搬菜。你把数据从这个部门搬到那个部门,加工一下再搬到下一个部门,这就是搬数据的,挣的工资可能是 1 万 5 到 2 万。搬菜的呢,把这个菜从工厂加工出来,然后再搬到下一个地方,一个月挣 4000 到 8000。搬数据的,IT 都可以接管,搬菜的,可以用机器人去取代,比如 AGV 搬运机器人。由此,我们可以让员工和公司一起进步,不要去做低质量的重复性工作,而是不断去做更高层级的、创新的、有创造力的工作。

第二个,你要建设一个系统驱动的体系 ,因为你整个公司的业务是被系统去接管和驱动的,而不是一个 Excel 系统。我打个比方,如果你做的东西只停留在工具级别,只做了个 Excel 系统,只做了个记录,那有什么用?事实上,很多公司就是如此,我们公司之前也是。

第三个,一定要做组织变革。 但其实面对这一点,大多数的公司会完蛋。全是利益,怎么做组织变革?因此,从这一点去看,你永远不要害怕大公司。大公司能做组织变革吗?不是他姨姨,就是他姑姑,全是关系,如何做到专业分工、高效协同?但是你不做这个又能怎么办呢?乌卡时代,存量竞争需要卓越优秀。 所以我觉得,创业公司永远要充满信心地去干掉大公司,大公司的效率就是低 。其实我对创业公司都充满希望,也愿意拿这个认知去投资那些我看好的创业公司,我觉得认知可以给你带来很多的好处和回报。

所以你其实要打造的是数据、用户体验驱动内部经营完善的体系。什么叫驱动内部经营完善?做得不好的要批评他、要通报他、要把他裁掉,做得那么垃圾的为什么不裁掉,是吧?不做这些事情,你的 IT 的产品能好吗?在这一点上,我们公司就推进得特别好,公司高管层意见一致。我在我们公司坚决地推进这点,推进不下去,我滚蛋,因为推进不下去是不可能成功的,我为什么要在这里浪费时间。

四问:在数字化转型的过程中,有哪些关键技术值得下力气去做?

我在前面讲到,技术不是挑战,不是问题,但是技术很重要,你在公司里面就是吃技术的红利的,要用你的技术去发挥价值。

这里插个题外话,我一直认为,科技向善,科技不与人争利,人跟人才争利。公司不会因为用了哪个系统效率变高了裁你,是因为你那些低质量的重复性工作被系统取代后,你还不思进取,不去做有创造性的新工作,老板觉得你没用了,他才会裁你。

但是最后想一想,这些科技是不是会变成社会基础设施?过去只有少数人、少数组织能享受的,后面慢慢都会变成社会基础设施。当你带着这种认知历史的时候,会发现几千年来大多如此。农业社会,犁的发明让耕种的效率一下子提升一大截,这绝对是一个伟大的发明。那今天是信息社会,作为技术人,你就要吃这个红利,对吧?我之前说,技术不是挑战,但不代表不重视技术。既然技术不是挑战,那你就得把它发挥到极致。

怎么发挥到极致?很多人一讲技术,一下子就跳到什么云计算、大数据、AI,我觉得那都是扯淡,那都不是在企业里当将军的。

企业里真正的“将军”应该去做什么?

第一,顶层设计,系统驱动。

从整个大的角度,你就把公司当成一个大产品,里边有几十个系统,公司所有的业务都被系统接管,系统之间还有交互,我给它高度抽象为交易体系、协同体系、监控体系、绩效体系。每个产品自己去干活,干不了的时候交给人,人干完了再交回来。这样一来,系统知道人到底在干什么、干得怎么样、人干的事我能干吗,产品经理就要去关注系统驱动。今天有多少公司是这样的?少之又少。我们公司之前不是这样,但我们已经建设成这样,最后你会发现这是一个非常非常大的变化。

所以,我认为首先就要做好顶层设计,企业架构师把业务高度抽象,创始产品经理才能把系统驱动的一整套体系设计出来。至于哪些自建,哪些购买,就是再往下一层的事情。

这里我顺带讲一下,企业需要画一条线,线上的自建,线下的购买。哪些自建?让你具备核心竞争力的要自建,毕竟这种让你绝对牛逼、超越竞争对手几十号排位的产品,怎么可能会有厂商卖给你?而有的东西就没必要自建了,能买就买,所以越是偏技术性的越不要做。很多技术团队在公司里面去忽悠人,我们公司里面这样忽悠我的,都被我干掉了,然后我自己下场干。人家外面有做得好的产品不拿过来,非要自己下场干是吧?你这么牛逼怎么不像毕玄一样去创业?

你也可以选择自建,比如一个商业产品要价 20 万,而你可以很快自建出来满足公司需要,并且只用花 10 万的研发成本。不过,现在 IT 的人力成本已经这么贵了,10 万的成本你能投入几个人?按照 2 万一个人来算,10 万也只能让 5 个人做一个月,如果要做两个月,那么就是 2.5 个人,这点人能做出什么像样的产品?

所以为什么过去中国的 B 端做得不好?我觉得 B 端创业最大的竞争者不是竞争对手,是甲方的 CTO 和对应的团队,就是像我这样的 CTO。

不管你想做成什么事,你都要找到最优解,首先就要掌控设计。

第二,技术上一定要关注模块化。 既然要专业分工,那么模块化就要做好。很多人在这一步就直接从一个大单体应用跳到微服务了。微服务是最终的结果,但我们能不能慢慢地过去?别一上来就依赖倒置、接口分离,很多技术团队根本没那么高的水平。你只要把模块化做好,也就是说,这个模块里的数据只有这个模块可以访问,其他人访问是不被允许的,至少能把这个守住,你的架构就不会烂到家。

第三,要关注用户体验,一定要有监控体系。 你的系统里边到底怎么样,服务响应时间怎么样,用户访问你,他有没有业务异常,有没有系统异常?如果你连用户发生了什么都不关注,你怎么可能做好?所以你要有监控体系,也要做好治理工作。我们公司的目标,今年 6 月 30 号以后,生产环境不允许有一个异常,每天都要清理掉,不管任何服务,响应时间都不允许大于 2 秒,有定义 SLA(Service Level Agreement) 的再说,如果确实有长于这个时长的,那也是被特批过的。所以我觉得一定要有监控体系,否则生产环境已经烂得一塌糊涂了, IT 根本不管,还在那里吹牛,在整天做项目。

第四,要产生价值,一定要有目标管理。 关于目标管理,第一个要谈的就是 OKR ,要有方向感。然后你的团队还要有周目标、日目标,抓执行力,最后要抓人效数据。我们常常讲,团队要提高研发效能,但有没有管理说过人效的问题?有人说,这是不是就是卷?你可以认为这是卷,那你说西点军校卷不卷,企业就是要去竞争的,你要和企业一起去成功。另外,我觉得人尽量不要招多了,尽量少招人,3 到 5 人就是一个创业团队,具体的原因我会在后面讲到,分析一下大家跟公司共存亡这个问题。很多员工其实自己在单位里上班也浑浑噩噩的,对自己来说没有意义,对单位来说也吃亏,其实我觉得这都是管理层出了问题。

第五,数据驱动经营完善,一定要看数据。 在今天,一个企业经营不看数据不就是扯淡吗?尤其是管理干部和领导,一定要意识到数据特别重要,要用数据驱动内部进行完善。比如 OKR 里面都是数据,而且数据都是系统统计出来的,做到多少就是多少,全公司人都能看见。目标和目标对应的数据管理特别重要。

第六,只用一只眼睛盯着 AI。 当前的 AI 大多数时候没什么用,因为它还不是真正的人工智能,是傻人工智能。在这个情况下要发挥 AI 的价值,需要有几个依赖。第一,你的数据得够多。第二,数据得够准确。你们公司有数据吗?连数据都没有还谈什么 AI?你说有数据,主数据管理都没做好,最基础的数据都是垃圾数据,怎么可能做好人工智能?第三,上层的大数据做好了吗?大数据没做好,AI 怎么可能做好?所以 AI 到公司里面之后全是坑,最后你也被坑。但是客观来讲,AI 是不是就没用?还真不是。我去年就在盯 AI 的东西,我们在做销售的智能报价,大概在今年 9 月份左右,我们公司的报价应该会全面地被系统完全接管,这里其实就利用了很多产品的能力,再加上 AI 的辅助。

第七,三大效率。

这里我会特别展开讲一下。你说这跟技术有关系吗?每一个都特别有。技术是为什么服务的?技术是为发展业务服务的。

  1. 研发效率

像 CI/CD、云计算、分布式服务、DB 缓存等等,有关基础平台和组件都要持续建设完善,你投入两到三个人干这个活儿,就可以让一百多个人效率更高,何乐而不为呢?我们做这个事情的目的就是让开发人员只写代码,测试人员只写测试案例,我们在各个层面都持续观察、分析研发人员到底在忙什么,然后帮助他提升效率。

另外一个与研发效率相关的是要搭建一个 SOA(Service Oriented Architecture) 和 EDA( Event Driven Architecture ) 的架构。打个比方,我前面提到的交易体系,它是比较稳定的,适合用 SOA 架构。那协同体系呢?我们今天需要应对各种各样的变化,所以搭建的时候就需要用事件驱动的架构,也就是 EDA 架构。当你把有很多变化的东西放在 EDA 架构上之后,你的研发效率会飞快提升。

此外,针对 CI/CD 而言,产品经理要跟开发有共同的语言,开发跟测试的工作要解耦,开发发布到生产环境是不依赖于测试的,这其实是需要有一整套的体系和支持的能力,比如说要有特性开关。你要想尽一切办法让大家都尽量不依赖地、快速地把自己的工作做完,最大化地降低研发的半成品。什么叫半成品?没有投入到生产环境的就是半成品,这是我们特别考核的一个指标。如果哪家公司不在这上面投入,那我觉得他们太傻了。要么投入两三个人去做,要么去买,这件事绝对值得。

  1. 会议效率

大家很容易忽略会议效率,但我认为我们需要永无止境地关注会议效率。我有一句话叫“两年之内,每周必须谈会议效率哪里要提升”,其实公司里大量的时间都是浪费在会议上。当然,大量的有用的价值也都产生在会议中,但是你一定要持续地去优化它,比如你要引入一些会议的工具,你要去观测,你要去教大家如何开会。

  1. 决策效率

决策效率也特别重要,不要议而不决。我对团队说过一句话,中层干部要独挡一面,不敢做决定的都要被干掉,不许拿 A/B 方案来跟我来汇报,不好意思,A 还是 B,你必须选一个。

研发效率、会议效率、决策效率这三大效率要无限关注,这些东西在基础工具平台上都有巨大的机会,值得去创业,如果全国中能有一家公司把它吃透了,那这家公司会特别牛逼。但是在今天,这个领域还没有特别优秀的工具和产品。

五问:数字化投入无法转化为业务价值,问题出在哪里?

社区里有同学问到,数字化和数字化转型是两码事,数字化投入无法转化为业务价值,问题出在哪里,并且感叹,根深蒂固的传统思维难以扭转,做数字化转型仿佛带着镣铐前行。

肯定是啊,因为你的公司就没有能搞定这些事情的人,业务部门没有,IT 部门也没有。

别带着工人心态去抱怨

我给大家讲一个真实的事情。

我们下面一个开发跟我抱怨说,Alex,业务给我们提的需求,今天说这样做,过了两天又那样做,过了几天又变了,来回反复。我问他,你有没有观点,有没有意见,你既没观点又没意见,你做不就行了吗?公司又不是没给你发工资。

产品经理能力不足,业务部门对事情认知不到位,这是你不得不经历的。但是,所有的人都不要去抱怨,都要去思考这个事情我们是不是做对了,别一方面是个工人心态,一方面又抱怨这、抱怨那。

所以我们的 3 到 5 人团队,每一个团队都要懂业务,我们打造的绝对是全公司最懂业务的技术团队,甚至任何一个业务部门都没我们懂。我就是直接下到工厂里去看业务到底怎么做,你必须到场景当中去了解业务。

很多公司做数字化转型注定是失败

所以要回答为何数字化投入无法转化为业务价值这个问题,我的观点如下。

我的第一个观点——数字化转型,其实本质上你可以认为是一种创业,而且是更难的创业,有包袱的。

看到这里,你可能会说,公司里有资源啊!根据我的经验,我的第二个观点诞生了——公司里所有的资源、过去的经验在这个层面都是诅咒。 你以为大就是强,有资源就是强,实际上,大和强是两回事。创业公司的团队的活力和激情在哪里,你一个传统公司,背着这么强的包袱,你的活力和激情又在哪里?所以资源是诅咒,它并不能助力你去做强。

我的第三个观点,缺乏能做顶层设计的人才。 乌卡时代具有不确定性,但你又要设计一个大的体系,去识别公司里有确定性的东西和不确定性的东西,用 SOA 架构和 EDA 架构以及模块化把顶层设计做好,但是你的公司里面有没有这样的人?你们的 CTO 和高层有没有把这个事情规划好让大家一起去做、一块块落地?你说,不对,我们还是需求驱动的,那还谈什么?本来过去就是需求驱动的,你想一下把所有的需求都做了,能让企业上一个大台阶吗?很多公司从来没有失败的项目,都是成功的项目,可一年下来有什么用呢?确定的是成本,不确定的是收益。

我的第四个观点,组织变革难如登天。 我在前面说,从古至今,变革都没什么好下场。今年,我们公司一月份的战略会议,我就提到过这个,我说,变革者没有好下场,你看,商鞅变法被五马分尸,王安石变法被贬,唯一一个好的例子是邓公,但这样的例子少之又少。所以在公司里面,统一思想认知很重要。

第五点,文化和方向,能不能容错、试错。 做这么难的事情,犯点错就干掉了,谁还给你干活儿?以后没人干了,这个公司就等死了。

以上就是我的五个观点,你一条一条去仔细看,每一条都很难。所以很多公司做数字化转型注定是失败,所以我一定不会去这些公司,因为我分析过它没法成功。技术人在这样的公司里面,踏踏实实实现一个功能,按时保质保量的交付一个有用没用的东西就行了。很多公司太多这样的事情,你可能也有深有体会。

我认为传统企业的新业务,一定要去新公司培养,尤其是一定要脱离原来公司的 HR 管理制度。组织管理和 HR 简直就是刻在公司骨子里的,很难改变。做数字化转型一方面要引入技术,一方面要做组织转型,而组织转型跟 HR 的管理制度是很有关系的,我自己对此真的是有深刻体会,这里就不展开讲了。

很多人发展很顺利,他不会有我这种深刻的理解。为什么我有?因为我经历过、痛苦过,我刚才讲的都是我的亲身体会过的。很多痛苦的东西让你成长、反思、复盘,然后就会变成刻在你自己身上的很深层次的东西。

六问:如何评估数字化转型的 ROI ?

如果大家关注我的观点,就会发现我很早就讲过一定要去算财务账。包括其实我去找公司,我跟老板谈薪水都会谈到这一点,我给你创造什么价值,你就给我多少,我创造不了,你就叫我滚蛋,就这么简单,因为这个世界的本质是价值交换。

数字化转型 ROI 的三个计算方式

回到如何评估数字化转型的 ROI 上来,我认为这是分层级、分阶段的。

第一个阶段,你的项目成功上线。

第二个阶段,着眼产品,两个 100%。

产品的使用率要 100%。如果你建设的产品,用户都不用,那成本不是白花了?我们公司科技中心建设的所有产品的要求必须 100% 使用,如果不使用,他要告诉我哪里需要完善,如果说没有要完善的点了,请用起来。

满意度要 100%。那些内部员工使用的产品,他们满意吗?我们公司建设了反馈系统,任何产品上线后,都要去问使用的员工是不是满意,不满意要告诉我哪儿不满意,我给你解决了。不要老去按时保质保量地完成一个没用的东西,多少企业在做这样的事情?在我们这里,绝对不允许这种事情发生。

第三个阶段,财务,算投资回报率。

这个时候,你要开始算钱了,把这个 3 到 5 人的团队像一个创业公司一样,计算所有的成本,包括人员成本、服务器成本,盘算他们创造的收入,增加的成本分别是多少,是不是做到了公司成本降低,利润增加,费用下降,人效提升。

对我们现在的团队来说,要考核的就是每个周期又建设了多少个虚拟员工。就如我之前所讲,你建设的产品,按照工具、助手、专家这三个等级来划分,你最后把多少个专家角色取代了?你建设了多少个生管(生产管理员)?多少个物流的发运主管?多少个接单员?多少个财务人员?通过这种方式,通过专业分工、高效协同,让这个企业里的每个人只面对他该面对的产品,不用和其他人或其他产品打交道。

虚拟员工就是收入,收入减掉成本就是利润,利润除以成本就是投资回报率,这就是我们最后关注的东西。

很早以前,我们就已经在考核使用率和满意度了,现在正从第二阶段迈入第三阶段,也就是给每个小团队算财务账的阶段,一句话总结就是拿着工资去创业。

最后提一点,一定要做好激励体系。 我们有一个激励可视化的绩效分层体系,这种体系可以让企业里的每个员工充满活力和激情,跟公司一起去创业,我觉得能做好这种体系的组织绝对是很牛逼的。我自己有时候就想,等我和这团队把彩食鲜这个公司做上市了,这团队跟着我做别的事绝对是杠杠的,因为都是筛选出来的可独挡一面的人才。我跟他们讲,我觉得你们就应该奔着这一把做完就财务自由的目标去。我也跟我下面所有汇报给我的人讲,你一定要把激励体系做好,你要让他相信跟着你是可以实现这个目标的。

所以,“赢”是凝聚团队最好的办法。你算清楚财务账,让每个小团队都像是在拿着工资去创业,那这个科技团队就会很牛逼。

思考:每个企业都要有自我革命和归零的勇气

我回过头来把上面六个问题压在一起去想,要解决数字化转型遇到的挑战和痛点,真的是很难。我自己对这个事情的思考有两点。

第一点,我对很多传统企业的数字化转型是持悲观态度的。第二,如果有这种决心,那就要统一思想,并且要培养容错试错的文化,这一点很重要。然而很多公司的老大过去太成功了,他不能容忍犯错的,他觉得下面的人怎么能犯点小错呢?可是如果把下面的人骂得跟孙子一样,他怎么可能有创造力?怎么成功?这根本不是技术问题。同时这个企业又要有顶层设计,所以对一个组织的要求是非常高的。

所以大家可以结合自己所在企业的情况去看,看自己的位置、自己能干什么。

数字化转型是滚滚长江水,谁都挡不住。老的企业总会死的,新一代的企业会出来。企业如人,有的企业已经是老人,老态龙钟,有的企业是壮年,有的企业决心返老还童,但是真正做到了返老还童的企业少之又少。再过 20 年,很多企业里面的很多业务都是有数字化思维的人在主导,因为效率高。如果用自然法则、生老病死去看一个企业,会看得很透,对于一些达到比较高职位的人来说,你再去选企业的时候就知道如何选择了,你要选赛道、选创始人,尤其是你带着一身抱负想要施展的,尤其要看你去了之后这个企业能不能改变,做好这个判断。

每个企业成功,都是因为遇到了自己的时代,有的时候就是命好,不一定是他真的能力有多强。但是要在这个时代做强者,还能在下一个时代也做强者,就需要有自我革命的勇气,要不断地反思和复盘,不断地学习,要有让自己归零的勇气。你不要总觉得自己是老大,要持续学习,否则最终只有死路一条。