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

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

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

《撇开代码不说,谈谈我对架构的6个冷思考》要点:
本文介绍了撇开代码不说,谈谈我对架构的6个冷思考,希望对您有用。如果有疑问,可以联系我们。

计算机是个复杂的机器,相比普通的机器(比如小家电、汽车),它可以在使用过程中对其「工作行为」进行「再定义和场景适配」,以解决不同场景下的人的需求和问题,这种「定义的结果」,对于机器的最终用户来说,是「应用 / Application」.

对于非计算机相关的普通人而言,即便是有诸多对于职位头衔的描述:「程序员」、「软件工程师」、「架构师」、「首席技术官」,也离不开一个潜意识的印象:「做网站的」或者是「修电脑的」.

很多「架构师」,都是从「软件工程师」开始,不知不觉的变成了一个「架构师」.对于我个人而言,当我还是一个实习生,被「升」为一个部门架构师带领一些正式员工干活的时候,对「架构师」这个概念居然是一片空白,甚至于不知道这是个「好消息」,还是个「坏消息」,当然也不知道「架构师」是干嘛的.

所以,我一直以最简单的方式对架构进行定义:架构是一种用计算机解决问题的综合能力,与头衔无关.下面我将结合自己的工作经验,谈谈这些年来,我对结构的理解.

1、架构源于对实践的总结

架构能力并不是与生俱来的,而是和具体经历强相关的,丰富的经验是形成架构能力的基础.

很多时候我们强调「系统性思考」对于架构设计的重要性,希望从方法论上能够对正在从事或者即将从事架构工作的程序员在专业能力上进行提升.教条式、填鸭式的培训,是教不出架构能力的.理论的价值是能够帮助应用理论的人少走一部分的弯路,但不能够解决眼前的现实问题.

在企业里,架构是一个实践结合非常紧密的领域,一切以解决实际问题为目标.由于问题是多种多样的,导致解决的方法也是多种多样的.踩过的雷,填过的坑,都需要进行总结和抽象,才能提升到架构层的高度,防止重蹈覆辙.

2、架构是一个建模的过程

对于一个复杂问题,通常会对复杂问题按照能力领域进行分解,其目的是能够找到与现有能力相匹配的映射.这个映射,就是解决方案.它,离不开人的「知识型劳动」,主要分解为三个方面:

  1. 对于已知问题的抽象和建模
  2. 对于已知能力的抽象和建模
  3. 对于解决方案和工具的设计

其中前两个方面,都提到了「建模」.建模本身是对客观事物的一种抽象,客观事物越复杂,那建模的结果变成「盲人摸象」的概率就越高.

然而,「盲人摸象」在IT领域其实不能算是个「贬义词」,因为这个现象十分的常见.究其原因,解决实际问题信息系统,更多程度是面向于「典型」应用场景,而不是「任意」应用场景的.

场景即是对客观事物的认知视角,信息系统做不到、也不需要对一个完整的客观事物进行全面(360°无死角)建模.

举个具体的例子:对于人这个客观事物,银行系统里,可能会关心这个人财务指标,例如「收入」、「支出」和「存款余额」,但在医院的重症监护病房里,可能就会关心这个人的生命指标,例如「血压」、「心跳」.

从例子里可以看出,一个面向具体问题的场景化应用系统,都是对一个客体进行「片面的」场景化建模.

说到底,建模是一种抽象能力,具体的说,是人对客观事物认知结果的理性提炼和总结,不可否认感性的部分太难以刻画和描述.很符合「庄子·天道」中所述:「意之所随者,不可以言传也」.

如果要拿数学语言进行描述「建模的能力」,就是找到一组尽可能少的「特征向量」去表述这个空间,而找这组「特征向量」的能力,就是建模的能力.

3、架构工作的核心是设计

没有软件的计算机,是「无法使用」的,因为没有办法帮助我们解决任何问题.计算机原本很「生硬」,无法很「柔软」的去直接适配所需要解决的问题.

架构的核心工作是「设计」,设计计算机如何按照预期进行工作.

架构设计中,建模的结果,是模型,它有着结构化、棱角分明的特质,因为这是计算机进行计算的最高效的方式:严格的告诉我们——两个数是相等还是不相等,及其衍生.正由于严格匹配,所以在很长的一段时间里,解决方案的制定和后续系统的交付运行,都围绕着如何严格按照实际场景进行模拟和落地. 很少以「按概率成功」对系统的业务功能进行设计和实现,一切都必须「绝对正确」.因为绝大部分的计算机系统,无法理解自然语意.只能根据人为设计的结构化信息,「按部就班」地完成重复性劳动.

人工智能、机器学习,在解决自动化建模领域的成熟度还是远远达不到人的能力,如果达到了,那么软件就不需要人进行「架构设计」了.简单的从架构设计的结果(当然也是结构化的),生成代码,这方面目前的计算机还是有能力胜任的.

任何不符合实际场景的计算结果,用户都认为是「缺陷 」,而在系统中产生此类异常结果,往往需要「程序员」为此承担相应的责任.呐,回想一下,在没计算机的时代,反而往往都是店小二算错了帐自己赔,没有人会去责怪算盘.这是为什么,因为算盘足够简单,简单到不需要做任何的监控系统、不需要记录任何的日志,连「三下五除二」这样的操作规则,都已经被社会化学习消除了使用成本.最终,一切出错的原因只有一个:用键盘的人.

是的,计算机系统生来就是是不可靠的,它不可能像「算盘」一样在运行期不依赖任何的自然资源.断电了,会引发故障;光纤断了,会引发故障;磁盘满了,会引发故障...一系列的不确定因素,导致「分布式系统」架构设计比「主机系统」的架构设计复杂的多,原本不需要操心的事情,都需要从更上层的软件层加以解决了.

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

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

热点阅读