您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件开发专栏 > 大数据 > 正文

IT科技生态的三代论

发表于:2022-09-13 作者:我是张逸 来源:逸言

我在一次和客户的CDO交流时,得以聆听到一个极有意思的观点。该CDO认为:“一家企业科技部门的领导,应尽量确保IT的科技生态不能共存超过三代的系统。如果系统的代龄超出三代,科技生态就会变得太复杂,遗留的债务太多,一旦需要转型,执行起来就会举步维艰。”

对此观点,我深表认同。

怎么定义科技生态的“代”?这似乎没有一个定论,更何况,不同技术的更新速率也不尽相同,难以统一。例如,金融企业的IT系统都经历过大型机、小型机和PC机集群时代,而服务器也经历了物理机、虚拟机到如今的容器时代。虽说现在主流的开发语言都可以划归为高级语言,语言版本的变更似乎也很难给出代系的划分,然而就Java来说,差不多可以把JDK1.4、JDK6、JDK8以及JDK11+划分到不同的代。

因此,我们先不必纠结科技生态的“代”该怎么划分,而是看这样的三代论是否值得大多数传统企业的CTO、CIO与CDO们深思。

1.为什么是三代?

大约灵感来自“富不过三代”的俗语?但我能想到的参考依据是Gartner提出的Pace-Layer应用战略模型,如下图所示:

图片

它将企业应用分为三层,从下到上分别为:

  • 保持稳定的记录型系统(Systems of Record)
  • 高响应的差异型系统(Systems of Differentiation)
  • 主动变化的创新型系统(Systems of Innovation)​

既然企业应用有着不同的变化速率,技术形态与之对应,恰好形成三态:

  • 记录型系统:由于变化缓慢,在构建之初选择的技术形态或许是新的,但随着时间推移,技术变得越来越落后,由于系统没有什么变化,自然也没有重构或重写的必要,如此就变成了继续支撑业务的祖父级系统,我将其称之为“固态”。
  • 差异型系统:开发周期相对较长,业务会持续演进,为确保系统具备一定的先进性,可能需要迭代更新,直至到某个阶段,需要进行技术栈迁移;又或者保留一部分旧有的稳定功能,而针对新功能,采用更新一代的技术,我将这种新旧并存的状态称之为“液态”。
  • 创新型系统:创新业务往往具备趋势前瞻的性质,需要快速打造、快速试错,它可能在未来成为企业的核心,但在创新阶段,企业对其技术的选择相对宽容,可以选择当下最新的技术,我将这种灵活快速的状态称之为“气态”。

这三种形态可以对应双态业务,即稳态业务和敏态业务,其中,稳态业务和敏态业务的重叠部分,就是位于中间态的液态:

图片

由稳态业务和敏态业务组成的双态业务不妨用太极图体现:

图片

北宋大儒理学宗师周敦颐认为:“无极而太极,太极动而生阳,动极而静,静而生阴,静极复动,一动一静,互为其根,分阴分阳。两仪立焉。”太极体现的正是动静与阴阳的转换。

稳态与敏态并非固定不变。稳态需要敏态升级,敏态到了一定时期也需要沉淀,变为稳态。稳态并不意味着陈旧与糟糕,相反,它可能意味着复用,是企业重要的资产。敏态并不意味着常新而易变,一旦发现它存在不变的部分,就需要转换为稳态。

动极而静,静极复动。

敏态走到极致,必然需要提炼其稳定的部分,否则敏态就会因为重复开发而增加成本;稳态走到极致,如果不向敏态迁移,就会僵化不变,腐化为技术债。因而,太极图对双态的呈现,完美地体现了稳态和敏态的周而复始。

企业在确定科技生态时,要考虑到业务的双态,而为不同形态的业务确定科技生态时,又该遵循什么样的技术参考依据,以保证科技生态的代龄不超过三代呢?那就要在企业内部提供确定代龄的客观依据。

一个客观依据是判断该技术的成熟度。如何客观地评价成熟度呢?一个办法是参考Gartner每年发布的新兴技术成熟度曲线,如2022年的成熟度曲线:

图片

成熟度曲线将一项技术的发展划分为多个阶段:

  • 创新萌芽期(Innovation Trigger)
  • 过热期(Peak of Inflated Expectations)
  • 幻灭低谷期(Trough of Disillusionment)
  • 复苏期(Slope of Enlightenment)
  • 生产力成熟期(Plateau of Productivity)​

原则上,只有位于生产力成熟期的技术才属于液态,而创新萌芽期的技术则属于气态。

通过长期跟踪Gartner的新兴技术成长度曲线,随着时间的推移,自然可以描绘出各种技术的代龄形态。

划分代龄不能仅依据成熟度,因为一项成熟的技术不一定就是最适合该企业的技术,若有可能,可以参考其他科技公司对该技术做出的客观评估。ThoughtWorks每半年发布的技术雷达可以作为其中一个参考:

图片

ThoughtWorks的技术雷达有四个圆环,由内向外分别为:

  • 采纳:采纳环中的条目往往是已被证实的、成熟可用的技术
  • 试验:试验环里的条目具备了ThoughtWorks生产环境经验,但还未得到充分证明
  • 评估:评估环里的内容是值得研究的,通常属于相对前瞻的技术
  • 暂缓:已被业界采纳,但ThoughtWorks技术咨询委员认为体验并不好的技术

技术雷达的条目不是一成不变的,每期技术雷达都可能出现新的,也可能已有的条目不再适合,就会被移走。与技术代龄的三态相对应,映射关系大致如下:

  • 固态:曾经属于采纳环,但因为技术相对陈旧而被移走的条目
  • 液态:属于采纳环的技术,也包括一部分属于暂缓环的技术
  • 气态:属于试验环和评估环

企业在做技术选型时,如果选择了开源项目,也可以根据开源项目社区的活跃度,项目的Star数量等对成熟度做出判断。

借用技术雷达图的技术象限划分,再参考Gartner的成熟度曲线,可以为企业绘制出科技生态的代龄图。

属于固态代龄的阶段,称之为衰退期;属于液态代龄的阶段,称之为成熟期;属于气态代龄的阶段,称之为成长期。这三个阶段由左向右排列,衰退期的左侧属于死亡期,成长期的右侧属于萌芽期,原则上,企业应用需避免使用位于死亡期和萌芽期的技术。

图片

科技生态的代龄图是动态变化的,它相当于为企业的科技领导或技术负责人提供了生态蓝图,每一次技术的代龄变动,都可能给出警示。

如果希望更加直观地了解到当前的应用系统是否违背了代龄要求,可以直接为企业的应用系统绘制代龄图。

图片

图中使用圆形、三角形和菱形符号分别代表已建、在建和待建的应用系统。

图中的红色代表严重警示信号,包括如下情形:

  • 位于死亡期的所有类型的企业应用,如编号11
  • 位于衰退期的待建应用,如编号19

图中的黄色代表警示信号,包括如下情形:

  • 位于衰退期并接近死亡期的已建应用,如编号16
  • 位于衰退期的在建应用,如编号20
  • 位于成熟期的待建应用,如编号18
  • 位于萌芽期的所有类型的企业应用,如编号14和17

针对发出警示信号的企业应用,相关负责人需要制订策略,判断是否需要调整其科技生态;如果是严重警示信号,则属于技术债的内容,需要给出进行改造的强制策略。在估算改造成本后,需确定改造完成的最后期限。

该图也可以作为数字化转型的参考,如在选择数字化转型的试点应用时,可优先选择属于成长期的在建或待建应用系统。对于属于衰退期的已建应用系统,如果它属于稳态业务,也可以考虑保留现有的生态。