今天看了云时代架构一篇名为《设计架构思维-分解》的文章,在此写一下自己的感受,原文地址:
https://mp.weixin.qq.com/s/Rr9U8S8cLSfm186BHjtVLg
文章开篇首先说了一下好高骛远和高瞻远瞩之间的关系与区别,感觉作者说的很有道理,不仅是在架构师中,可能在平时的做人与
学习中,应该尽自己所能做到高瞻远瞩,而不是好高骛远。
在正文部分中,作者说所有系统的开发方法都要解决从需求到实践的转换问题。如果一个开发方法设计的再合理,理论再优秀,但是
它无法解决实际中的问题,解决不了从需求到实际的转换,那么这个方法没有实际的意义。对于架构设计,人们提出了很多的方法,如:
工件驱动的方法、用例驱动法、模式驱动的方法、领域驱动的方法。作者简要说了一下RUP迭代增量的思想,由分析、描述、选择、构造
和组合5个阶段构成。作者在文中将大致的架构思维分为:分解、集成、分离、复用、分层、模式、抽象、结构化、迭代、勿做过度设计这
几个部分来设计架构系统。
本篇文章的标题是分解,本篇文章的重头戏也自然是讲述分解思想在架构设计中的应用。在平时的课程中,老师也总是强调分而治之和分层思想
在软件体系设计中的重要性。分而治之是一种处理复杂问题的通用方法,在架构设计中是一种重要手段,如多层架构、OSI七层模型都体现了分而
治之的思想。分解核心是定义问题,因此架构首先仍然需要理解清除需求。
分解可以帮助架构师了解需求中未呈现的的隐性需求,分解也是架构师解决非功能层面需求的重要手段,架构要解决高性能、高可用、伸缩性、可
扩展性等问题,一般从如下几个方面入手。
一、应用层:按照功能或者微服务进行分解,将系统分解为若干子系统。二、数据层:对数据库进行垂直拆分按照子系统维度进行分库和水平拆分按照
业务维度进行分表。三、代码结构层:代码层一般分为三层,从上至下分别为:数据访问层、业务逻辑层、表示层,这也是java web中重要的三个层次。
分解的原则分为业务原则,技术原则治理原则。技术原则中值的我们注意的是单一职责原则,这个原则虽然可能很基础,但是常常被我们忽略到。在技术原
则中需要我们注意的是避免频繁的跨库查询,因为现在做的项目层次还比较低,所以对此项原则体会较深。在治理原则中需要注意的则是避免部署多个版本
来兼容,一开始可能会没出现问题,但是随着项目的扩充,对以后项目的改造带来一些麻烦。
分解的过程是一个从无到有、从粗到细、从模糊到清晰,一步步精化、丰富架构、迭代的过程也是一个否定之否定的过程,随着分解的逐步推进或系统的架构演化,
后面的分解除了会识别出隐性需求,也可能会对先前识别出的架构做出调整。
架构分解是从多个维度多层次对系统进行分解,识别出来架构元素,逐步精华、丰富架构系统的过程。从上面可以总结出,维度大致有,业务维度、业务功能维度、
技术维度、涉众维度。