极客时间微信Truth61205|架构与实现:它们的连接与分界?2018-08-13胡峰把一种想法、一个需求变成代码,这叫“实现”,而在此之前,技术上有一个过程称为设计,设计中有个特别的阶段叫“架构”。程序员成长的很长一段路上,一直是在“实现”,当有一天,需要承担起“架构”的责任时,可能会有一点搞不清两者的差异与界线。是什么架构是什么?众说纷纭。架构(Architecture)一词最早源自建筑学术语,后来才被计算机科学领域借用。以下是其在维基百科(Wikipedia)中的定义:在建筑学领域,有一组清晰的规则和方法来定义建筑架构。但可惜,到目前为止,在计算机软件工程领域并没有如此清晰的一组规则与方法来定义软件架构。好在经过多年的实践,行业里逐渐形成了关于软件架构的共同认知:软件系统的结构与行为设计。而实现就是围绕这种已定义的宏观结构去开发程序的过程。做什么架构做什么?很多人会感觉糊里糊涂的。我刚获得“架构师”称号时,也并不很明确架构到底在做什么,交付的是什么。后来不断在工作中去反思、实践和迭代,我才慢慢搞清楚架构工作和实现工作的差异与分界线。从定义上,你已知道架构是一种结构设计,但它同时可能存在于不同的维度和层次上:高维度:指系统、子系统或服务之间的切分与交互结构。中维度:指系统、服务内部模块的切分与交互结构。低维度:指模块组成的代码结构、数据结构、库表结构等。在不同规模的团队中,存在不同维度的架构师,但不论工作在哪个维度的架构师,他们工作的共同点包括下面4个方面:1.确定边界:划定问题域、系统域的边界。2.切分协作:切分系统和服务,目的是建立分工与协作,并行以获得效率。3.连接交互:在切分的各部分之间建立连接交互的原则和机制。4.组装整合:把切分的各部分按预期定义的规则和方法组装整合为一体,完成系统目标。有时,你会认为架构师的职责是要交付“一种架构”,而这“一种架构”的载体通常又会以某种文档的形式体现。所以,很容易误解架构师的工作就是写文档。但实际上架构师的交付成果是一整套决策流,文档仅仅是交付载体,而且仅仅是过程交付产物,最终的技术决策流实际体现在线上系统的运行结构中。而对于实现,你应该已经很清楚是在做什么了。但我在这里不妨更清晰地分解一下。实现的最终交付物是程序代码,但这个过程中会发生什么?一般会有下面6个方面的考虑:选型评估;程序设计;执行效率;稳定健壮;维护运维;集成部署。下表为其对应的详细内容:05|架构与...