我的架构感悟:从美国宪法学习架构设计原则

向作者提问
华为公司内源社区平台,前架构师/ 华为软件开发云-CodeHub产品经理/ 开源社理事,执行长
查看本场Chat

2017年1月20日注定是一个会在历史上留下记录的日子,美国第45任总统Donald Trump宣誓就职。他的就职宣誓词非常简短:

I do solemnly swear that I will faithfully execute the office of President of the United States, and will to the best of my ability, preserve, protect and defend the Constitution of the United States.

令人惊讶的是,自从1787年美国宪法在费城制宪会议通过以来,在宪法第二条第一款中规定的总统宣誓词,竟然历经230年,从未变化。

从一个架构师的角度来看:合众国宪法作为美国这个国家的基础架构,从发布到现在200多年,美国也从13个州发展成50个州,人口从380万增长到3.2亿,时代早已发生剧变,但是美国政治的核心架构基本未变,这个系统的运行状况堪称良好。当年那群“架构师”,实在是了不起。(虽然他们当年的底气相当不足,华盛顿认为,这部宪法能维持20年就不错了)

如果,我们想要设计出这样的一个架构,能够长期适应需求与环境变化,能够历久弥新并始终稳定可靠,那么了解一下美国宪法的制定过程,其实是一件非常有价值的事情。

重构都是被逼的

有几个时间点,现在看来,其实颇为令人诧异:1776年7月4日,美国以发布《独立宣言》为标志宣布独立。1783年9月3日英美签订《巴黎和约》,独立战争结束。但是一直到1787年9月15日,一众国父们才在费城签署了《美利坚合众国宪法》。也就是说:一个独立的国家,在运行了11年后,才有了自己的宪法!而且又过了2年,直到1789年这部宪法获得各州的批准之后,华盛顿才被依法选为第一任美国总统。

可以说,在长达13年的时间里,这个国家没有总统,没有中央政府,没有一点国家的样子。我们不禁要问一句:早干嘛去了?打仗期间忙不过来,尚且可以理解。战争结束之后的6年,他们在干嘛?

事实上,1777年11月19日大陆会议通过的《邦联条例》,可以算是这个国家的beta版架构。但在上线运行10年之后,实在是撑不住了。首要的问题,是因为钱,独立战争结束,各州拖欠了士兵数百万美元的军饷,同时还拖欠了一些欧洲国家的钱,但是,这个国家一穷二白没办法还钱(还记得技术债务吗?)。这个国家也没有全国性的货币体系,在不同的州,一美元的价值竟相差4倍!由此引发的,是很多人破产甚至被投入监狱。退伍士兵谢司领导了一场起义,兵力甚至高达1万5千人,虽然最后被镇压了。但是,整个国家都陷入了严重的恐慌,一个新兴的、刚刚独立的国家,是不是就要完蛋了?

W.Y☞
钟晖
以前,看过一篇IT同仁用苹果、安卓等操作系统来解释伊斯兰教、基督教等宗教的文章,喻示法灵活显,直白易懂,让大家明白了伊斯兰教是什么鬼。今天看了庄牛人戏说美国宪法政体设计与IT架构设计之间的类比关系,倍增我对架构师的敬重!赞一个!
谢工
能写出这么个话题,就是稀缺内容,非常感谢老庄的精彩分享,如获至宝!
山哥好比春江水
写的非常不错,感觉应该去详细了解下美国宪法了
Aking
水煮美国宪法大话架构设计,有趣又意味深长:)
张顺国
大神!我可以转载吗!
庄表伟: 现在还不能
马文
1. 老架构的调整中,如何破解纳什均衡中的“锁定效应”和“路径依赖”等问题? 2. 架构中对合作博弈的机制设计是否重要?如果是,则如何设计引入? 3. 美国宪法架构设计中,如何处理经费预算的问题呢?或者是预算问题是否是架构问题的先决条件?或者别的某些先决条件属于必要的存在?
拉普拉斯
竟然是华为架构师的文章,这论调不华为啊
HilerChen
两种领域的模式映射
张林
厉害,物物相通,就是这个道理,从idea到理思路,简化足迹,最好完成架构图
谢磊
宝宝猪的码头
牛人
李志刚
a. 美国的架构应是其政治体制,如三权分立 州联邦 州议会 选举等,而宪法应是其brd prd一类的,这些架构也早已借鉴到it系统中,如选举、联邦等,请问下一步去中心化的架构应如何架设? b. it架构的演进也如政治体制的演进,从君权神授到选举、从集权到民主,其实it的演进比政治快,请问it架构的演进一般有什么样的节奏?
李志刚
c. 利益各方的权衡正如性能、稳定、成本的协调,恰如云计算的发展,性能 稳定 成本可以自动动态调整,请问如何构建自适应的架构?
金鑫
是不是世间万事万物都有一个本质上通用的道哇
HilerChen: 是的😋
认知升级
余耀兵
厉害,架构无奇不有!大神!
赵勇
漩涡鸣人
牛逼
胡杨
腻害,这理解,不是入魔就是成佛的节奏啊!
bubble
一个好的架构从设计到实现,需要相互尊重,不断努力,坚守原则,不断沉淀。果然美好都来之不易。受教了。
马真金
核心是相信并肯付代价进行分析集思广益。背后是权威铸台。不争私利。或许有人能感觉到后面个很强大的信仰力量。
Frank
庄老师的这篇文章,从美国宪法的形成,来学习软件的架构设计,非常受启发。美国宪法可以说是到目前为止设计最为完善的人类制度架构,几百年来运行稳定,没有任何修改,只是加了一堆修正案,这已经是相当惊人了。当初这些创国的“架构师们”,在讨论制定这些规则时,是怎样达成共识,又考虑了哪些因素呢?这其实跟一个软件系统的设计有很多异曲同工之处。不论是传统的瀑布式开发还是现在流行的微服务架构,又或是越来越多的分布式计算,在技术不断革新的同时,怎样保持架构的稳定性、灵活性和前瞻性,这篇文章给了我很多启示。
微信扫描登录