查看原文
其他

“构建”世界的能力-架构能力

张凯江 技术琐话 2021-08-08



    复杂事情往简单了去想,是拆解,是切割,就像一剑破万法;而将简单事情往复杂了去想,是缝补,是搭建,是打造自成规则的小天地。如果成事、做事呢?任何人组织、企业、个人都会面临选择,左右为难。如何平衡这种矛盾呢!本文试图站在更高的视角审视构建(架构)这个事情,溯源探秘、揭示本质,从构建世界再到架构设计。
    要构建架构设计的标的物本质是什么?    架构为什么需要共识的,用于描述表达的通用语言?    构建迭代、创新的本质过程是什么?    用到的知识工具体系是什么?    面对问题时,人们如何推演决策?





 前言 


   《银河补习班》是一部很棒的电影,影片主角为一名桥梁设计师,他不仅能够设计桥梁建筑,还能“设计”主角儿子的未来。如影片中一样,很多人低估了“架构师”的重要性及能发挥的能量。希望社会、行业能够重视有工匠精神的这伙人,也希望他们能发挥自己的特长。


 1 

“梦中的仙境”是一种抽象



    首先,我们一定要认识到到,我们是在抽象这个世界,而不是描述这个世界。
    世间夸张之物,无非梦境、仙境、幻境。这些本就是那梦幻之境,所见之景,所识之人,无不是美轮美奂。如名著西游记、红楼梦、桃花源记都有描述:

    西游记中的仙境,偏于现实化,以凡间的聚会歌舞呈现,不过是更换了地点,有那仙雾缭绕,瑶池楼台方成仙境。

    红楼梦中的仙境却是在宝玉的梦中。本就是一个钟爱女儿的痴情公子哥,梦见的无一例外的全是那天上少有世上无双的仙子,连梦境都是梦幻。

    桃花源记中描述也是对现实的理想化。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。见渔人,乃大惊,问所从来。
   
    针对如此玄幻的内容,文学名著中都以人的日常行为、情绪、环境等作为抽象、表达,如何玄幻都逃不出人间二字。当然人类在不同领域也创造了不同的表达方式,如:数学学科、计算机学科、物理学科。可见,我们面临的任何需求,都有个范围,都逃不开我们对世界的抽象。

    而计算机领域呢,消费互联网、产业互联网、新基建,再到前几年提出的数字地球、智慧城市、虚拟现实等,都是一种抽象方式:

  • 从创业者视角看,如埃隆·马斯克在理想中为公众构建的,是一个未来世界的完整生态。

  • 从产品视角看,如何理解客户,挖掘现实和未来的需求,设计什么方案解决它们。都抽象为一个个相关联的需求;

  • 从设计角度看,有面向对象由上往下沿用语言附带的设计理念;也有数据库设计由下往上存储设计;或更彻底的DDD领域设计抽象等;无论如何逃不出不同生命周期领域对象和持久化的数据库表;

  • 从实现视角看,程序员把任何事物都抽象成一行行代码,或哪类语言解决相关问题更加擅长等;

  • 从系统视角看,会有边界、会有用户、会有利益等。

  • ... ...


    面对如此复杂的领域知识、体系知识,难免会懵。化繁为简后,架构师需要设计或找寻一种表达方式,可以让用户、合作伙伴、产品、技术、运维、运营、管理层都能够理解一致。从我个人角度理解,架构师的职责和重要性严重被低估,软件企业内部,架构师需要负责对不同角色解释架构,不产生理解偏差。当然不一定全部是用文档或其它介质作为载体,当有异议时,会议语言作为最后的方式。当然领导拍板又会拍向哪处,谁也说不好。
   
    回归主题:任何行业业务、现在\未来的需求,再复杂都会映射到现实的行为、思想中。而作为架构师解决所有问题,切入点都是人类对世界的抽象相关。所以,你对世界的认知宽度和广度,决定了你架构世界的宽度和广度。多看书,多思考,多元化思维的搭建,将有助于更好认知世界、认知环境、认知他人、认知自己。
   

 2 

数据-计算机技术最重要的表达方式


    我们是在抽象这个世界,而不是去描述这个世界。但是又不得不去描述这个世界!真的很讽刺,人类创造语言、符号,知识为了更好的描述这个世界。那么,人类创造的语言、符号准确吗?但是无论如何,我们需要找寻一种通用的,不会过期的表达体系来传承。

《哲学起步》一书中提到符号模式时,“自欺”是使用符号的一种方式,比如说我们在架构术语中标识"前后端分离"这个符号,到底“”前后端分离“算不算一种(符号),关键是看我们大家认为它到底是不是(符号)。

    符号只是对我们抽象的尝试描述,至于本质含义已经不需要深究,也没必要深究。

    爱因斯坦曾经说过:“宇宙最不可思议的事,就是这宇宙竟然如此可思议(认知、描述)”。简述就是,这个世界居然可以被理解。

     计算机发展史,也可以认为是“共识语言、共识符号”的发展史。人们试图创造一种“符号”,能够让程序员连通现实和计算机世界。如DDD描述这个业务知识;内部构建一些通用的架构范式;设计模式原则等(符号);甚至创造一门新的高级语言... ...。我认为数据可能才是这个行业通用符号语言,只有从业者对数据理解水平越高,效率才会越高,因为数据里数学最近。(前段时间还看到网上有文章写到sql语言是最保值的语言,另外会用sqlserver,学习mysql基本一周就能基本搞定)

柏拉图说:“数学是一切知识中的最高形式”。
黑格尔说:“数学是上帝描述自然的符号”

     从IT数字化、电子化,到衣食住行休闲娱乐移动互联网等,人们在现实世界的时间都被手机等电子设备占用。如果我们回顾这条线(回看第一小节的结论),用数字化、电子化、网络化和虚拟化这些词已经无法完整描绘这个过程了。我们尝试用天文术语“平行世界”来表达,在这个平行世界中由于道德约束、成本虚拟等原因,数学、计算机技术、心理学、经济学、物理学、天文等学科应用的更加淋漓尽致。

    举几个例子:我们梦想中想要的爱江山更爱美人的网约、指点江山点评天下的键盘侠、站在舞台万人瞩目的直播、攻城拔寨血雨腥风的游戏...都很容易在“虚拟平行世界”实现。所以摆在创业者、产品、架构师面前的不仅仅只是现实世界的抽象,更多的是梦境中可能实现的事情,所以别怪产品爱做梦,别怪竞争激烈。其实在如此美妙的时代,真的很有趣。

    高楼万丈平地起,无论多么复杂的应用,底层都会有支撑的。回归现实,看看DIKW体系如下图所示(相关内容可以自行搜索)。抛开价值层面,我们现在大多的app应用都是在生产Data和Infomation层面,而大数据和人工智能是更为顶端的层面。无论如何,对于数据的理解、数据价值的转变,谁忽略,谁将被别人超越。当然,架构师对数据的理解也会影响架构能力的提升。


    作为计算机行业的沉淀,数据本身的价值越来越重要。而计算机学科与数学学科的相互成就将持续下去。关于数据重要性的内容可以自己搜索,我个人认为大数据的价值由于ROI、固有利益链等原因,远远没有发挥出全部价值。   

    作为it互联网从业者,需要对数据的理解更加重视。过去几年,5G、大数据、ai、物联网都是与数据息息相关的产业。我们也可以从数据角度,尝试分为三类系统:

1、业务、数据流类系统:从终端发起业务、数据流的系统。强调横向抽象分层、纵向业务分层,包括单体、微服务等应用。这类应用基本映射人类现实中活动,如:衣食住行医疗娱乐等大部分都属于这类。技术架构层面已经很成熟或饱和,竞争点感觉跟产品、技术关系不大了。竞争点聚焦在背后的数据价值、背后的资源整合、巨头山头、流量控制等。架构能力核心是控制好业务流、数据流,其它问题都会迎刃而解。

2、大数据类系统:以flink、spark等流计算系统和mr、hive、spark类批处理系统为主。难点在机器资源庞大后,能够稳定的输出和架构的扩展性。核心是明白数据到信息的转变规则、数据与数据之间的mashup。个人认为es、mpp类数据库应用算不上大数据范畴,属于第一类系统的扩展数据应用。

3、ai数据深度应用类系统:ai应用主要为其它应用赋能、提效,通常会嵌入第1、2类系统中,单独的ai应用系统较为少见。比如:广告点击率预测、item推荐系统预测评分模块、搜索引擎、图像识别、图像检测、语言翻译等都不容易单独构成应用。这类系统的核心是ai赋能点是什么?如排序、图像识别、智能审核等,如果没有ai模块原来是怎么实现的、效果差在什么地方。ai也会创新创造出很多新的模式,如人类信用体系的建立。ai模型应用都是由数据训练而来的,可以说数据是重中之重。

     数学精通不了,但数据必须懂,数据sense提早培养。计算机技术无论那条线,都会回归到数学、数据上。作为架构师,把数据流、数据内涵、数据处理、数据预测等理解了,能更好的理解业务。也能明白其它任何人的诉求,设计出稳定的系统。


注:DDD领域驱动设计目标为一门通用语言,把连接业务/产品到技术研发良好的连接起来,试图把现实世界的业务转化为计算机领域的语言描述。个人认为做好领域驱动设计,核心把对数据的理解吃透。

 3 

构建“平行世界”---机械论、还原论用武之地


    世界上很多东西(如相对论),是本身就存在,后来被人类发现的呢?还是人类发明的呢?用哪种符号、表达方式是最客观的描述语言呢?

    就我们普通人来说,第一层次:人类在刻意的还原现实到虚拟网络,并把边际成本降到最低,形成流量垄断(如常见的衣食住行app)。不过好在有边际效用递减事情,欲望会让人们不断的不满于现状,循环的破立。第二层次:类似进化论的方式,(某种推手推动)虚拟的世界自我演进,人们企图找到某种进化规律,抢占先机。(如钢铁侠、乔布斯做的一些事情)

    移动互联网的未来是什么?大数据、物联网、5G、ai发展到一定层面,到底还能给移动互联网、产业赋能到什么地步呢?我们很难描绘出变成什么样,但从近二十年来看,“计算机平行世界”的构建过程是从现实到虚拟,逐步构建、完善、迭代的过程。恰好跟机械论、还原论一致。

    机械论认为,生命完全是物质的,根本不存在什么神秘的“活力”,把生命看作是一架复杂的机器。还原论是机械论发展而来的。
    还原论是一种哲学思想,其认为复杂的系统、事务、现象可以通过将其化解为各部分之组合的方法,加以理解和描述。
    近十几年,移动互联网把衣食住行千方百计“虚拟”化,搬到移动互联网上。任何复杂的需求、应用、业务都能称之为还原,在效率上,边际成本上做了近乎榨油的进化。个人认为,作为架构师,这个还原工作还将持续很久很久。(这种效率的提升,对生活节奏的加快,个人认为不是什么好事)
           
    我们发现移动互联网对现实产业,办公、教育、娱乐、购物、游戏...的影响,都是一部分、一部分循序的“赋能提效”的(个人觉得颠覆不合适);大厂的布局也是一块一块的拼图来构建大的帝国;产业的发展也是一波一波的数字化、智能化(契机式:例如此次疫情肯定会所推进相关数字产业)。尤其是从人类活动时间来分析,人们在现实世界VS平行世界的停留时间来PK,无疑平行世界越来越有优势。
   
    说这么多,我们架构的“平行世界”肯定是在还原现实的基础上,并进一步做优化。而过去和未来的架构能力,都体现在“还原”二字。作为架构师,必须了解现实、了解历史,多读书,多行路,才能有更加丰富的还原能力。我们不是哲学家,普通人的架构不是创造抽象,而是一种还原描述,甚至可以理解为“抄袭”,抄袭现实、抄袭别人、抄袭任何生态。庆幸我们抄袭的对象是不断发展的,难有固步自封风险。

     现在互联网界也在研究复杂理论、混沌理论,觉得创新领域与此相关,我个人完全认同。但是构架设计背后是因果关系,而不是相关关系。需要精细化、明确化的定义、描述、组合、可量化、评价、溯因....

   注:生命生物体与机械体的本质区别是什么?1、生命体能繁衍?2、生命体因果关系不明确。 所以,我们架构的是机械体,而不是生命体。我们更加关注的是因果关系。关于还原论可以看看《赋能》这本书,我们把组织当成生命体,用机械论、还原论的管理方法,肯定会有一些问题。

(待续)


名句摘抄

“授人以鱼,不如授人以渔;授人以渔,不如授人以欲。” 就是指没有直接给予物质,而是教以方法或某种信念!

参与相关讨论,请在公众号回复关键词:读者群。

参与相关讨论,请在公众号回复关键词:读者群。


作者介绍 :

张凯江:专注IT行业15年+。曾任科技上市公司技术总监,多年政府toB行业经验,

2014年投身互联网行业创业。现从事工作为OTT\IPTV提供内容变现商业化产品、视频运营解决方案。爱读书、爱思考,喜欢打篮球、遛狗。公号:体制化思维。

 往期推荐:

— END —

技术琐话 




以分布式设计、架构、体系思想为基础,兼论研发相关的点点滴滴,不限于代码、质量体系和研发管理。


觉得有启发,点个“在看”,转给朋友们

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存