参考:钟敬的架构可视化的10个关系
想清楚, 说清楚和画清楚
想清楚:关键在于架构的权衡
不同方案的优缺点
说清楚:沟通
想清楚和说清楚不容易,在于自然语言的模糊性。
为了解决自然语言的模糊性,需要 画清楚。
可视化:
- 抽象化
- 严格化
- 规范化
架构的治理和设计的本质是一个建模过程,建模是抽象化的过程。
忽略现实的大部分属性,抽取一小部分属性来实现特定目标的过程就是抽象
示意图和蓝图
蓝图和示意图的区别在于准,蓝图需要足够准确。
准确不代表详细,详细也不意味着准确。
蓝图用于系统的规划,开发和演进,需要指导落地实施,需要强调准确性和规范性。系统发生架构上的变化,蓝图需要相应的更新。
系统和产品
软件系统:
- 系统软件
- 中间件
- 应用软件
发布单元:可以独立部署和运行的最小单位(单体,微服务或这2者之间的形态)
产品是面向价值的。
规范画法和自定义画法
UML是OMG官方的国际标准,为规范画法。
C4是民间规范
架构的维度和粒度
维度:从哪个角度看问题
- 业务架构
- 应用架构
- 数据架构
- 技术架构
架构可视化的实施
企业架构和企业级架构
企业架构:强调端到端的整体性(业务,应用,数据,技术架构都覆盖)。即使不是整个企业在做,也可以叫企业架构。
企业级架构:强调横向(跨系统,跨部门,跨团队)
企业级架构师和团队级架构师
当前架构和目标架构
没有时间点的架构图是没有意义的。
当前架构总是和当前生产环境的系统架构保持一致,作为架构演进的基线。
目标架构:
- 开发中目标架构
- 近未来目标架构
- 远未来目标架构
前期设计和浮现式设计
前期设计(Big Design Up Front/BDUF):开发一个大项目的早期就设计出所有架构方案(瀑布式)
浮现式设计(Emergent Design): 项目进行中,根据优先级,不断细化架构设计,同时又兼顾架构整体(敏捷)
—— 画一张世界地图,一开始画得很详细很难,也没有必要。
可以先画七大洲的大体边界,让看图的人知道7个大洲这件事和位置
然后,觉得亚洲最重要,把亚洲的边界画清晰一些,并画出亚洲的主要国家
接着,觉得亚洲里的中国最重要,把中国边界画清晰一些,把中国主要省市大体边界画出来
...
手工治理和自动化治理
绘图工具和架构工具的区别在于后者包含知识。
理想的架构治理工具:
- 保存多维度知识
- 自动生成架构图
- 验证架构约束
- 感知实际架构变化
- 实施架构守护
- 版本管理
- 支持协作