专栏名称: InfoQ
有内容的技术社区媒体。
目录
51好读  ›  专栏  ›  InfoQ

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

InfoQ  · 公众号  · 科技媒体  · 2016-10-03 08:59

正文

请到「今天看啥」查看全文


架构是一个建模的过程

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

  1. 对于已知问题的抽象和建模

  2. 对于已知能力的抽象和建模

  3. 对于解决方案和工具的设计

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

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

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

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

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

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

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

架构工作的核心是设计

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

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

架构设计中,建模的结果,是模型,它有着结构化、棱角分明的特质,因为这是计算机进行计算的最高效的方式:严格的告诉我们——两个数是相等还是不相等,及其衍生。

正由于严格匹配,所以在很长的一段时间里,解决方案的制定和后续系统的交付运行,都围绕着如何严格按照实际场景进行模拟和落地。 很少以按概率成功对系统的业务功能进行设计和实现,一切都必须绝对正确。因为绝大部分的计算机系统,无法理解自然语意。只能根据人为设计的结构化信息,按部就班地完成重复性劳动。

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

任何不符合实际场景的计算结果,用户都认为是缺陷 ,而在系统中产生此类异常结果,往往需要程序员为此承担相应的责任。呐,回想一下,在没计算机的时代,反而往往都是店小二算错了帐自己赔,没有人会去责怪算盘。

这是为什么,因为算盘足够简单,简单到不需要做任何的监控系统、不需要记录任何的日志,连三下五除二这样的操作规则,都已经被社会化学习消除了使用成本。最终,一切出错的原因只有一个:用键盘的人。

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

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







请到「今天看啥」查看全文