配置化有哪些问题?

配置化有哪些问题?

www.zeeklog.com  - 配置化有哪些问题?

相信大家或多或少都听说过一些配置化解决方案,不管是在一些晋升PPT或是产品规划会上。我甚至还听到过产品因为一个功能,准备让研发提供一套低代码平台给他们操作,这种产品听起来就很不务实,缺少基本的收益思维。

配置化确实是一种很好的提升研发效率、提高业务交付效率的手段。其思想就是将原有通过代码组织编排的逻辑以流程配置、字典配置、特征配置等手段外显出来,提供给研发同学、产品、运营一个可视化的操作界面进行勾选,实现业务能力的可运营。

但大家有没有想过,一套配置化能力体系会存在哪些问题?需要具备哪些完备的能力?

之前和晋叔聊,他说他们做了一些配置化手段提供给运营同学做广告体系运营,我问他:“你们敢百分百把运营平台提供给运营同学操作吗?”

最近再和晋叔聊,我说我们做了一些配置化手段,提供给运营操作。晋叔同样问了我一句话:“你们敢百分百把运营平台提供给运营同学操作吗?”

我们回答的都是不敢。

我统计了一下过去发生的一些比较难搞的线上故障,往往都是配置化系统导致的。也就是说因为一些不成熟的配置化方案,导致了我们核心链路出现过难搞的稳定性故障。

而稳定性又是一个研发团队的基石,是研发团队技术能力的体现,是研发的基线,做不好稳定性就很难展现研发团队的价值。

我们可以把一套资源与能力在线上被使用的过程统一叫做“线上变更”,我们可以假想下研发操作线上变更与运营操作线上变更的不同心态。

研发会将其当做一套研发流程交付,做必要的cr、double check、灰度放量、监控报警观察等。

运营操作基本不会有这些动作,7*24小时想发就发,而且经常会有点多次、不关注状态机状态的情况(当然这些还是因为配置化平台非功能性功能不完备造成的)。

研发操作的线上变更实现大概有三类:代码上线实现、技术配置上线实现、数据库DDL操作实现。

这三类操作都是通过统一的技术基础设施实现的,不管是代码交付上线、配置变更上线、数据库操作都具备回滚的能力,而且这种回滚是完备的、是稳定可靠的。

而我们为运营提供的配置化系统往往是不完备的,比如缺少必要的状态机判断,缺少必要的回滚机制,多人操作同一套资源时缺少必要的隔离与并发控制,缺少完备的权限审批流程,缺少完备的灰度放量观察手段,缺少快速止损可用性降级手段等...我们还可以列出很多。

每次对于一个核心链路核心功能的配置化系统上线,我都可以提出一堆非功能性的要求,也可以看到很多非功能性的隐患点,而对这些非功能性能力的进一步完善,基本是没有时间做的,因为这部分投入产出比太低了,产品往往觉得那些看得见的功能有了就行。

直到有一天一个底层的bug被触发,导致了底层数据的不一致,运营进行了多次操作与点击,而底层缺少必要的隔离与并发控制,数据与流程进一步错乱。

当发现问题,引起线上故障时,希望操作回滚进行止损,但由于数据不一致,底层的一大坨json已经很难回到他应该有的状态,结果故障越拖越大,损失越来越不可控,只能上线代码将这部分功能下掉,用默认值兜底。

所以,在一个核心链路引入一个配置化解决方案风险多大,其需要极其完备的设计。有时你会发现一个信得过的配置化系统,其实是应该具备一些数据库基础能力的,而开发出这一套完备的基础能力,你需要在产品排期上增加几倍的时间才可以。

配置化很好,可以提效,但你敢将核心链路上配置化系统交给产品运营同学随意操作吗?

Read more

超快速,使用ChatGPT编写回归和分类算法

超快速,使用ChatGPT编写回归和分类算法

本文将使用一些 ChatGPT 提示,这些提示对于数据科学家在工作时非常重要。 微信搜索关注《Python学研大本营》,加入读者群,分享更多精彩 以下是一些示例ChatGPT 提示的列表以及数据科学家的响应。 ChatGPT 提示 为决策树回归算法生成 python 代码。 下面是使用scikit-learn在 Python 中进行决策树回归的示例代码: import numpy as np import matplotlib.pyplot as plt from sklearn.tree import DecisionTreeRegressor # Generate random data rng = np.random.default_rng() x = 5 * rng.random(100) y = np.sin(x) + 0.

By Ne0inhk
力扣每日一题:993.二叉树的堂兄弟节点 深度优先算法

力扣每日一题:993.二叉树的堂兄弟节点 深度优先算法

993.二叉树的堂兄弟节点 难度:简单 题目: 在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处。 如果二叉树的两个节点深度相同,但 父节点不同 ,则它们是一对堂兄弟节点。 我们给出了具有唯一值的二叉树的根节点 root ,以及树中两个不同节点的值 x 和 y 。 只有与值 x 和 y 对应的节点是堂兄弟节点时,才返回 true 。否则,返回 false。 示例: 示例 1: 输入:root = [1,2,3,4], x = 4, y = 3 输出:false

By Ne0inhk
1239.串联字符串的最大长度 关于字符串的回溯算法!

1239.串联字符串的最大长度 关于字符串的回溯算法!

题目: 给定一个字符串数组 arr,字符串 s 是将 arr 某一子序列字符串连接所得的字符串, 如果 s 中的每一个字符都只出现过一次,那么它就是一个可行解。 请返回所有可行解 s 中最长长度。 提示: 1 <= arr.length <= 16 1 <= arr[i].length <= 26 arr[i] 中只含有小写英文字母 示例: 示例 1: 输入:arr = ["un","iq","ue"] 输出:4 解释:所有可能的串联组合是

By Ne0inhk