本文是通过学习李运华老师的《从0开始学架构》课程的随笔
现在自己对架构云里雾里的感觉,结合工作中的实践,学习与总结,慢慢的,会有质的提升的。
架构到底是什么
基础概念
1.系统与子系统
系统:泛指由一群有关联的个体组成,根据某种规则运作,能完成个别元件不能单独完成的工作的群体(强调整体、关联→个体互相关联、规则→个体非各自为政、能力→能产生新的能力)。
子系统:与系统定义一样,观察角度不同:一个系统可能是另一个系统的子系统。
2.模块与组件
都是系统的组成部分
模块:从逻辑的角度对系统进行拆分得到的单元,主要目的是划分职责。
组件:从物理的角度对系统进行拆分得到的单元,主要目的是可复用。
3.框架与架构
框架:为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之基础功能软件产品。
架构:软件系统的基础结构,创造这些基础结构的准则,以及对这些结构的描述。
架构是顶层设计;框架是面向编程或配置的半成品;组件是从技术唯独上的复用;模块是业务唯独上职责的划分;系统是相互协同可运行的实体(引自文中“公号-代码荣耀”的评论)
架构设计的目的
目的:为了解决软件复杂度带来的问题。
1.通过熟悉和理解需求,识别系统复杂性所在的地方,然后针对这些复杂点进行架构设计。
2.架构设计并不是面面俱到,不需要每个架构都具备高性能、高可用、高扩展等特点,而是要识别出复杂点然后有针对性地解决问题。
3.理解每个架构方案背后所需要解决的复杂点,然后才能对比自己业务的复杂点,参考复杂点相似的方案。
架构是为了应对软件系统复杂度而提出的一个解决方案;架构即(重要)决策;需求驱动架构,架起分析与设计实现的桥梁;架构与资源(如开发成本)的关系(引自文中“公号-代码荣耀”的评论)