架构基础(三):架构原则,架构设计需要注意哪些问题?

您所在的位置:网站首页 项目的架构有哪些 架构基础(三):架构原则,架构设计需要注意哪些问题?

架构基础(三):架构原则,架构设计需要注意哪些问题?

2024-07-10 20:55| 来源: 网络整理| 查看: 265

一.设计原则

 架构设计我我们平时写代码不一样,两者的差异主要体现在“不确定性”上。对于编程来说,本质上是确定的,对于同样一段代码,不管是谁写的,不管什么时候执行,执行的结果应该都是确定的;而对于架构设计来说,本质上是不确定,并没有像编程语言那样的语法来进行约束,更多的时候是面对多种可能性时进行选择。  示例:

是要选择业界最先进的技术,还是选择团队目前最熟悉的技术?是要选 MySQL 还是 MongoDB?团队对 MySQL 很熟悉,但是 MongoDB 更加适合业务场景?淘宝的电商网站架构很完善,我们新做一个电商网站,是否简单地照搬淘宝就可以了? 1.合适原则

合适优于业界领先。

 在进行架构设计的同时,需要考虑自身业务,而不是一味的去参照业界顶尖的规模,如:QQ、微信、淘宝架构。真正优秀的架构都是在企业当前人力、条件、业务等各种约束下设计出来的,能够合理地将资源整合在一起并发挥出最大功效,并且能够快速落地。

2.简单原则

简单优于复杂。

 软件架构设计是一门技术活,当我们进行架构设计时,会自然而然地想把架构做精美、做复杂,这样才能体现我们的技术实力,也才能够将架构做成一件艺术品。然而,“复杂”在制造领域代表先进,在建筑领域代表领先,但在软件领域,却恰恰相反,代表的是“问题”。

 软件复杂度的体现,主要有以下两个方面:

结构的复杂性 – 组成复杂系统的组件数量更多; – 组件之间的关系也更加复杂。

其问题主要有: (1)组件越多,就越有可能其中某个组件出现故障,从而导致系统故障。 (2)某个组件改动,会影响关联的所有组件。 (3)定位一个复杂系统中的问题总是比简单系统更加困难。

逻辑的复杂性

逻辑的复杂性来源于一个组件集中了太多的功能,修改协作困难;并且,其中某些业务还可能使用了一些复杂的算法,导致难以理解、修改困难。

 一个组件集中了太多功能,就会表现出一些逻辑复杂性的特征,为了解决这个问题,一般的手段是进行组件的拆分,但随着组件的细化,又会引入结构复杂性的一些特征,所以,在做结构设计的时候,需要权衡这两者。

3.演化原则

演化优于一步到位。

 维基百科对“软件架构”的定义如下:

从和目的、主题、材料和结构的联系上来说,软件架构可以和建筑物的架构相比拟。

 这个定义中,将建筑和软件架构做了一个比较,但是,两者之间是有一个本质区别的:对于建筑来说,永恒是主题;而对于软件来说,变化才是主题。  也就是说,软件架构的本质是:软件架构需要根据业务发展不断变化,所以,我们在做软件架构设计的时候,不要试图一步到位设计一个软件架构,期望不管业务如何变化,架构都稳如磐石。  架构设计的过程基本上可以总结为下面三个历程:

首先,设计出来的架构要满足当时的业务需要。其次,架构要不断地在实际应用过程中迭代,保留优秀的设计,修复有缺陷的设计,改正错误的设计,去掉无用的设计,使得架构逐渐完善。-- 小重构最后,当业务发生变化时,架构要扩展、重构,甚至重写;代码也许会重写,但有价值的经验、教训、逻辑、设计等(类似生物体内的基因)却可以在新架构中延续。-- 大重构  我们在做架构设计的时候,切勿贪大求全,或者盲目的照搬大公司的做法,而是要牢记软件架构的本质(软件架构需要根据业务发展不断变化)。认真分析当前业务的特点,明确业务面临的主要问题,设计合理的架构,快速落地以满足业务需要,然后在运行过程中不断完善架构,不断随着业务演化架构。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3