聊聊架构

(最近我会写一些我对架构的理解和思考,本篇是第一篇,欢迎交流)

什么是系统架构?

从字面上理解,系统架构是系统的框架结构,是系统进行抽象之后的一个草图。它包含了系统中各个抽象组件的协作方式。

为什么需要架构?

好的架构能够降低系统的创造和维护成本,特别是维护成本。一个系统的创造成本低,而维护的成本大,特别是互联网应用,一般情况下把一个系统搞上线只需要一个月,但是有的系统搞下线缺需要几个月,而维护则需要数年。好的设计师不会在系统上线后对系统进行大的修改,从而减少系统的维护成本。

如果区分创造和维护两个阶段的话,架构师分为系统架构师和维护架构师,架构新的系统的是系统架构师,而维护老系统的则是维护架构师,程序员大多数愿意做新系统不愿意维护老系统,因为感觉没什么技术含量,但是维护老的系统反而更难,因为老系统的重构和改进更加复杂,维护架构师不仅需要读懂老系统架构设计,还要在不影响老系统功能的情况下,进行功能新增和重构。我的一位同事在对一个旧的系统进行重构之前,读了几个星期的代码,然后才开始设计改进方案。

架构设计的目标

设计的目标围绕着降低成本这个需求进行。设计的目标非常多,不同的系统架构目标也不一致,但是我觉得比较重要的架构目标有以下几个,可扩展性,灵活性和可插入性。

  • 可扩展性,新的功能容易加入到系统里,降低创造成本。
  • 灵活性,一处修改不会波及其他的地方,降低维护成本。
  • 可插入性,同样的功能可方便的替换,降低创造和维护成本。

那么如何实现这三个目标

  • 提高可扩展性:把不易变的抽象出来。抽象层要比实现层要更稳定,抽象层的变化要少。把变化的集中起来,比如把容易变化的功能放在单独一个系统或者一个模块里。
  • 灵活性:模块化,每个模块相互独立,减少模块之间的藕合度,修改不会互相传递。
  • 提高可插入性:模块化,服务化。

如何开始架构

当一块新业务放在你面前时,如何进行系统架构?我觉得需要进行以下几个步骤的思考:

  • 业务分析:输出业务架构图,这个系统里有多少个业务模块,从前台用户到底层一共有多少层。
  • 系统划分:根据业务架构图输出系统架构图,需要思考的是这块业务划分成多少个系统,可能一个系统能支持多个业务。基于什么原则将一个系统拆分成多个系统?又基于什么原则将两个系统合并成一个系统?
  • 系统分层:系统是几层架构,基于什么原则将一个系统进行分层,分成多少层?
  • 模块化:系统里有多少个模块,哪些需要模块化?基于什么原则将一类代码变成一个模块。
时间: 2025-01-19 14:21:59

聊聊架构的相关文章

聊聊架构-模块化

什么是模块化?   模块化是指解决一个复杂问题时,自上而下逐层把系统划分成若干模块的过程.   为什么需要模块化? 模块化的目的是为了降低程序的整体复杂度,使程序设计.调试和维护等简单化.各个模块可独立工作,即便单模块出现故障,也不影响整个系统工作.模块化具有三个特性:相互独立,可替换,通用.比如车载收音机就是模块化设计,收音机和汽车里的其他模块相互独立,收音机坏了不会影响车上的其他功能,具备独立性.因为汽车预留了接口,可以随意的将收音机替换成CD机和DVD机等,具备可替换性.车载收音机从汽车里

嘿!架构师,你写不写代码呀?

概要: 1.架构师是神马狮,代码是什么马 2.架构师的成长之路 3.架构师是使用代码作画的大狮 4.本期"小狮子"奖 架构师是什么狮,代码是什么马 记得那天是这样的,总导演(右导)一抛出话题,群内雄狮们可炸开了锅: 狮子郭:架构师应该写代码,架构师需验证自己架构上想法的可行性- 狮子肖:架构师必须得做到了解现状,方案与实际相符,别和猿类离得太远... 狮子P:架构最早是源自建筑,没见过建筑架构师码过砖. 狮子木:仰望星空,脚踏大地. 大伙交流得很high,本狮却觉得心底空闹闹的,我们在

我真的只是标题党:以架构的思维看世界

为什么要聊聊架构? 又到一年财年底,又到了各架构师们交配.no,交流的季节.各位蠢蠢欲动,开始为新年的规划发展开始忙活.最近一段时间,本人也连续给多个新系统做了技术架构,也看了很多别人做的架构.老系统演进架构. 随着经历和经验的不断增加,貌似在画图工程师这条路上也有了一定的进步,跨入了画图高级工程师的行列.结合"知行合一"的战略指导方针,在"格物致知"到一定程度后,也尝试通过自己的知识迁移能力.抽象总结能力,来寻找画图这件事里蕴含的"道".So,

在首席架构师眼里,架构的本质是……

目前讨论架构实操(术)的文章较多,讨论架构理念(道)的较少,本文基于作者在大型电商系统架构方面的一些实践和思考,和大家聊聊架构理念性的东西,希望能够抛砖引玉,推进大家对架构的认识. 什么是道,什么是术?道是事物发展的本质规律,术是事物发展的具体途径.规律只有一个,途径很多,条条大路通罗马,罗马是道,大路是术.道为本,术为途,如果事先知道罗马在哪里,那么遍地是路,路路相通.架构也是如此,如果能领悟架构的本质,就不会拘泥于现有的实践和理论框框,而以最直接的方式解决问题,无招胜有招.本文的内容包括架构

作为首席架构师,我是如何选择并落地架构方案的?

本文系转载.转载自:http://mt.sohu.com/20160516/n449639733.shtml   如何针对当前需求,选择合适的应用架构,如何面向未来,保证架构平滑过渡,这个是软件开发者,特别是架构师,都需要深入思考的问题. 本文首发于InfoQ垂直号「聊聊架构」,ID:archtime 无架构,不系统,架构是大型系统的关键.从形上看,架构是系统的骨架,支撑和链接各个部分:从神上看,架构是系统的灵魂,深刻体现业务本质. 架构可细分为业务架构.应用架构.技术架构,业务架构是战略,应用

架构的本质(转)

目前讨论架构实操(术)的文章较多,讨论架构理念(道)的较少,本文基于作者在大型电商系统架构方面的一些实践和思考,和大家聊聊架构理念性的东西,希望能够抛砖引玉,推进大家对架构的认识. 什么是道,什么是术?道是事物发展的本质规律,术是事物发展的具体途径.规律只有一个,途径很多,条条大路通罗马,罗马是道,大路是术.道为本,术为途,如果事先知道罗马在哪里,那么遍地是路,路路相通.架构也是如此,如果能领悟架构的本质,就不会拘泥于现有的实践和理论框框,而以最直接的方式解决问题,无招胜有招.本文的内容包括架构

架构之坑系列1:重构中的过度设计与高可用银弹

这是一个坑系列,会说一些在系统设计.系统架构上的坑,这些都是我想到哪说到哪,有像这篇一样比较宏观的坑,后面的文章也会有到具体技术细节的(比如某个函数,某个系统调用)坑.总之,到处都是坑,这些坑有些是我经历过的,有些是听说的,你也可以留言说说你遇到的坑.   第一部分,我们从重构这个场景来看看系统架构的设计中过度设计这个坑.首先,我们这里说的重构,和<重构:改善既有代码的设计>这本书中的重构不太一样,这是本好书,他主要说的是代码级别的重构,这种重构是需要在编码的时候时时刻刻进行的,更多的是一种编

成为架构师的7个关键思考、习惯和经验

工作了挺久,发现有个挺有意思的现象,从程序员.高级程序员,到现在挂着架构师.专家之类的头衔,伴随着技术和能力的提高,想不明白的事情反而越来越多了.这些疑问有些来自于跟小伙伴交流,有些是我的自问自答,有些到现在也想不清楚,这篇文章就来写一写这些问题. 如何更高效的学习? 很多新人程序员一开始在学习上找不到方向,但我想在渡过了一段时间的新手期之后这类问题大多都会变得不再那么明显,工作的方向也会逐渐变得清晰起来. 但是没过多久,能了解到的资料就开始超过每天学习的能力,像是买了没看的书.收藏没读的贴.m

人工智能与软件架构

本文讲的是人工智能与软件架构,因为 AlphaGo 的出现,过去的 2016 年可谓是人工智能元年.记得当时我们正在苏州封闭研发The Platform,工作之余讨论到人机对战的真正意义,并不在于技术上的突破,而在于对人们固有知识的影响,人工智能的应用会如雨后春笋般诞生,以后没有人工智能的软件你都不好意思开口了. 大家都在问,自己的工作与人工智能有什么关系,如何在自己的工作中应用人工智能,如何在软件中植入人工智能的基因,使用人工智能应该从何处入手,学习人工智能应该从哪里开始,更深层次的问题是人工