美文网首页
架构哲学

架构哲学

作者: romandion | 来源:发表于2018-05-03 11:31 被阅读0次

架构设计,是在技术基础上,综合权衡约束条件后,进行选型的一门艺术。他是为解决现实问题,提出的指导性方案,并且是可落地的。架构哲学是探讨成功架构设计应该关注的问题,以及原则和方法论。

一、知识储备

每一种架构都有其系统边界,能解决什么问题,不能解决什么问题,这是架构的先天属性。试图用一种架构解决所有问题,不是吹牛皮,就是耍流氓。作为设计者,首先要有知识广度,知道的越多,可供选择的范围越大,就越容易做出合理的选择。避免拿着锤子,看什么都是钉子的窘境。其次要有知识深度,对目标解决方案需要有足够的理解,甚至要亲自进行原型验证。在一些关键特性上,如果没有足够认识,往往会掉入深坑而无法自拔,最终导致架构无法落地。

这些知识,除了个人努力之外,往往需要一定时间的积累和验证。曾经遇到过运维、测试甚至没几年工作经验的人,在老板面前畅谈着应该如何进行架构设计,我只能面带微笑听着,心里默默地为老板感到悲哀。一个系统最终能否成功,受很多因素影响,但架构设计是其中最关键的因素,并且持续性地影响整个系统。一个没有足够经验的架构师,带给团队的,往往是灾难性后果。因此,每个架构师,都应该怀着如履薄冰,视如己出的心态来对待自己设计出来的架构。

二、现实约束

抛开一些特例,如国家垄断企业,什么都 不缺。在大多企业中,要解决现实问题,还需要在技术基础上,考虑市场、时间、人员、资金甚至包括遗留系统兼容等诸多因素。一个最简单的例子,买个商业软件要200万,但手头只能50万,还要管一班兄弟们吃饭,怎么办?很显然,开源免费方案是首选,至少在赚到钱之前,就不用想着商业软件了。这种情况在很多初创并不少见,如果没有考虑这些技术外的因素,那么设计出来的架构最终就要落空。

真实问题的分析和界定,是架构设计的前提条件,只有知道自己要解决什么问题,才能设计匹配的架构,否则一切无从谈起。这个前提是成功架构设计的基础,却是很容易犯错的地方。我见过不少夸夸其谈者,不论是否有丰富的经验,连系统都没有了解清楚,就妄议架构优劣。

三、经验陷阱

之所以说架构设计是一门艺术,因为他需要因时、因势制定合理的方案,这个过程中,需要不少创造性的活动,而不是生搬硬套的教条主义。

一种最常见的陷阱,就是引用大公司的案例。曾遇到一次有趣的争论,关于网络带宽问题。运维举例说,债券交易所的带宽都不需要这么大,因此现有架构有缺陷需要改进。当时一时没有反应过来,后来给仔细算了一下,简直就是在扯淡。债券交易所都要求配备2Mb专线,按4个交易员算,每个连接可用0.5Mb带宽。而公司现有产品接5家经纪商,2家证券交易所的债券行情,1家国债期货,共计8家行情,而且都比债券交易所活跃,频率高。以同时在线数6000个连接算,则需要2.4Gb带宽,而现有带宽500Mb,因此债券交易所的行情带宽至少是公司的48倍。

另外一种则是流行陷阱,就是采用最新或者最流行的技术。这个陷阱就像灯火至于飞蛾,让诸多架构师前赴后继,而无法自拔。在2012年的时候,为公司选择qpid为消息总线。2017年,新来的技术负责人,要将其换成rabbitmq,当下这个最流行,在券商等大机构有广泛的应用。最终在某银行竞标项目中,因吹牛过于用力,而不慎爆掉。

而其他技术陷阱也是不可胜数,适合于某个场景,在另外一个场景就不一定适用。架构师要学习控制自己,学会掌控经验,为己所用,而不是被经验所驾驭,坑了自己,也坑了同伴。

四、架构进化

没有任何事物是生而完美的,随着时间推移,现实约束会发生变化,技术会不断发展,资源条件也会出现转机,因此,对架构提出新的需求,进化时机也就随之而来。就像淘宝之初,也是买个简单网站,经过十年的不断演进,才有今天如此复杂庞大的系统,轻松应对双十一。在创业之初,钱少、人少、时间少,极简的架构设计是成功的法宝。项目都活不下来,何需谈及到未来3-5年呢。

世间唯一不变的是变化本身,因此架构进化以适应不断发生的变化是必然的选择。象深交所V4系统那样,一用14年的情况极为少见。而架构进化并不是为给失败架构设计找借口,比如将延迟敏感的场景设计成B/S架构,发现不行后,再转成C/S架构。在架构设计之初,除了满足现实约束条件来解决现实问题外,还需要在一些关键节点处留下余量,以便将来更新换代不至于大动干戈,导致系统伤筋动骨。

架构进化过程中,就像给行进中的列车更换引擎,风险极高。并行运行,平滑过渡是必须遵循的原则,蓝绿部署,滚动部署、灰度部署、金丝雀部署说法不同,各有特点,但核心原则都是类似的,小心试错,便于回滚。

相关文章

  • 架构哲学

    架构设计,是在技术基础上,综合权衡约束条件后,进行选型的一门艺术。他是为解决现实问题,提出的指导性方案,并且是可落...

  • 在 Golang 中尝试“干净架构”

    架构是一个哲学问题,并且复杂,我也才跨入了一根脚指头,如有不正,感谢指教。 什么是“干净架构” ? “干净架构”是...

  • 我理解的中国哲学,活学活用,实现理想

    一、理解应用中国哲学 中国哲学是实践的哲学,讲究真理的实操性。通过和杜老师学习哲学的四方架构:宇宙论、本体论、工夫...

  • 深度 | X-Engine的In-Memory读性能优化

    背景 虽然同为LSM-tree架构,X-Engine的设计哲学与传统基于LSM-tree架构的Rocksdb等引擎...

  • 可进化架构设计

    什么是架构 这是个哲学问题,就像“我是谁”一样,没有一个简单直接的答案。我们可以说那些属于架构的范围,但是不能明确...

  • 来自ZMQ的软件架构哲学

    来自ZeroMQ的软件架构心理学《ZeroMQ:Messaging for Many Applications》阅...

  • 意义的模态架构

    前文:杜伊维尔哲学的起点:意义而非存有 2. 意义的模态架构 2.1 层面(模态) 模态(Modalities)可...

  • Kafka原理篇:图解kakfa架构原理

    下面是本文主要的内容: 从本文中你将学习到: Kafka 架构设计哲学和原理 Kafka 中 zookeeper ...

  • Kafka原理篇:图解kakfa架构原理

    下面是本文主要的内容: 从本文中你将学习到: Kafka 架构设计哲学和原理 Kafka 中 zookeeper ...

  • 《赋能》——读书笔记13

    第十二章 新的时代需要新的组织架构 在工业时代,物理学的哲学通知了这个世界;如今,生物学的哲学开始统治这个信息时代...

网友评论

      本文标题:架构哲学

      本文链接:https://www.haomeiwen.com/subject/gzekrftx.html