加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 服务器 > 安全 > 正文

撇开代码不说,谈谈我对架构的6个冷思考

发布时间:2021-01-10 02:31:12 所属栏目:安全 来源:网络整理
导读:副标题#e# 《撇开代码不说,谈谈我对架构的6个冷思考》要点: 本文介绍了撇开代码不说,谈谈我对架构的6个冷思考,希望对您有用。如果有疑问,可以联系我们。 计算机是个复杂的机器,相比普通的机器(比如小家电、汽车),它可以在使用过程中对其「工作行为」进

所以,当前架构工作的很大一块,都随着分布式系统规模的增大而加大了比重.也许,导致世界上最聪明的一伙人都去解决计算机的问题了.

4、架构需要作出一系列非技术选择

架构既然是个解决方案,自然有很多可以自由选择的领域,有很多受限的前提条件.这些外围因素,往往还系统背后的个人、团队、企业的价值观、以及非IT能力有关,这是一个很容易被忽视的点.

与人和团队的关系

架构往往是与个人或者团队的能力有关的,因为架构前一部分是设计工作,后一部分是代码框架的落地工作.可以没有一个十全十美、满足各方需求的方案,架构过程中有很多都是妥协的结果,有的是向需求妥协,有的是向运维妥协,有的是向个人英雄主义妥协.另外,绝大部分的选择都是人作出的,这导致了和人、团队的水平形成了很大的耦合关系.

早在1895年,法国心理学家勒庞在他的心理学名著「乌合之众(The Crowd)」就早已经说过:一群精英所作出的群体决定,很有可能是最愚蠢的决定.有时候,技术团队不能太强调民主;有时候,技术团队中的强强产生的效果是「1 + 1 &; 1」.一个良好的、强弱结合的组织结构,才有可能孵化出优秀的工具,再进阶为一个优秀的产品,也有利于成员梯队的培养.

团队越大,一个优秀的架构设计方案被严格执行下去的可能性越小.第一,制定方案的人和落地方案的人大多数情况下都有脱节,很多设计精巧的方案细节到了执行者的手里,会被忽视.第二,为了统一一个团队的认识结构、设计理念,这部分的培训成本往往都是各个雇主不愿意付出的.第三,方案的描述本省是「不精确」的,还很容易存在文档过期的情况,在软件及交付的各个环节,任何参与者都有机会以自己的知识背景作为出发点进行理解,并自豪地加上自己的「杰作」.

与企业的价值观相关

企业的价值观,最直接的体现,就是企业的投资组合.

在大型的企业里,软件产品的采购往往会受制于「采购部」,也会受制于不懂IT的公司级领导所下达的行政干预,有些理由好像听上去也「很有道理」:采购过为什么还要采购,要「保护投资」.往往到了这个层面,程序员、架构师都纷纷表达了无奈.

软件,包含代码和数据.它不是一个简单的能够按照「固定资产折旧」进行的固定资产.它透射的是使用者对客观世界的认识,也需要随着对客观世界认知的变化而变化,因此版本对于软件来说就是一个时刻认知的快照沉淀.

行业的快速发展,企业的快速发展,势必推动企业信息系统的快速发展.对于企业而言,其价值是能够找到感知行业、感知产品、感知用户、感知企业内部运营的触角,每个社会中的实体不管是个人,还是产品都能够在系统中找到它的影子.

对企业主而言,IT是一个长期的投资行为.陈旧的、不符合时代背景的软件,是会变成降低企业生产力的绊脚石.

5、代码是架构设计的落地实现

现今任何的计算机高级编程语言,例如Java/C/C++,或者更高层的DSL,都是人与计算机之间的「单向语言」.这些「单向语言」,并非自然语言,大多数由程序员编写,再交由计算机进行执行,在很长的一段时间内,信息系统都是以这种方式与人进行交互. (当然,也可以慢慢的等待「Siri」之类的助手长大成人,成为一名架构师,也许那个时候,广大架构师需要转行了.)

代码是架构实现的核心,通过代码可以完成对现实世界的「虚拟化」:

  • 概念的虚拟化
  • 能力的虚拟化
  • 实体的虚拟化
  • 记忆的虚拟化
  • 协作的虚拟化

通过一些例子,有助于理解:

  • 概念的虚拟化:一个业务概念的类定义
  • 能力的虚拟化:一个方法对多个输入数据进行加工并返回结果
  • 实体的虚拟化:一个类的实例,即具体的数据
  • 记忆的虚拟化:一条关系型数据库的行记录
  • 协作的虚拟化:远程方法调用

是的,代码是计算机的指挥者,代码是把人类智慧「赋能」给计算机的一种语言.

代码到不到位,写的好不好,对设计的落地实现会产生很大的影响.

6、其实,架构是一种用计算机解决问题的综合能力

很多时候我们看到的「系统架构图」,其实是针对目标问题所设计的「计算机领域的解决方案」,是一种设计图纸.

可以说,「架构工作」不仅要能够交付「设计图纸」,还要能够「建地基、搭房梁」.

  • 宏观层面:对特定问题,进行解决方案的设计
  • 微观层面:对后续的编码工作,形成与解决方案核心相一致的代码框架

做好「架构工作」有很多非技术的「软实力」,比如:

  • 对于团队中成员职能的正确定位,知道他们真正擅长什么
  • 深挖至本质的问题分析
  • 多视角、符合人性的换位思考
  • 舍弃一些力所能及,但影响专注的「杂事」,合理的说「不」
  • 具备一定的投资意识,从更高、更长远的视角,看待投入与产出
其他的发散性思考

在互联网公司出现之前,有没有「互联网公司」呢?他们和现如今的互联网公司的差别是什么?

其实是有的,例如「电网」、「电信运营商」、「股份制商业银行」、「快递物流公司」.在人类社会中最基本的两个元素,就是「实体」和「连接」,一切和连接有关的行业,都可以认为是「互联」,只不过信息系统在企业中的价值是由「生产关系」决定了其价值.

机器学习能够帮助架构设计吗?

机器学习很长一段时间之内都停留在参数调优上,而不具备对于一般事物进行建模的能力.前文也阐述过「概念的虚拟化」和「实体虚拟化」之间的关系,实体虚拟化就是数据,而数据本身已经是类的实例了,

互联网公司大谈「大数据」以及「数据驱动DT」的原因是什么?

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读