《从零开始学架构》读书笔记1

why-how-what 三个层次,结合实际工作,分析能从中取得的价值。其他价值如复杂度识别、架构原则、复杂度解决套路,后续再总结。

why

我看这本书的原因是工作中需要了解业务系统的架构,才能针对架构分配不同类型的资源。我需要知道的是当前主流的架构模型有哪些,每个架构的资源需求类型有什么特点。然后再用业务架构去匹配,在哪个模型里,就配置对应模型特点的资源。

how

理解术语,才能准确沟通。

  • 系统与子系统

系统泛指由一群有关联的个体组成,根据某种规则运作,能完成个别组件不能单独完成的工作。子系统和系统类似,只是观察角度差异,一个系统可能是另一个更大系统的子系统。从业务视角看,把一个软件分成不同的系统。例:微信系统包含登陆、聊天、支付、朋友圈等子系统,朋友圈包括动态、评论、点赞子系统,评论包括防盗刷、审核、发布、存储子系统。

  • 模块与组件

模块和组件都是系统的组成部分,只是从不同角度拆分系统而已。从逻辑角度拆分系统,得到的单元就是模块。从物理角度拆分,得到的单元就是组件。划分模块的目的是为了职责分离,划分组件的目的是单元复用,组件,也叫零件。

  • 框架与架构

框架是组件规范,如 MVC、MVP、MVVM、J2EE。框架提供基础功能的产品,如 Spring MVC,提供 MVC 开发框架,还提供注解、安全等功能。软件架构是指软件系统的基础结构,创造这些基础结构的准则,以及对这些结构的描述。
框架关注的是规范,架构关注的是结构。基础结构没有说明从什么角度来分解,从不同角度或维度(业务逻辑、物理部署、开发规范),拆出来不同内容。所以会听见”xx 系统是基于 Spring MVC 框架开发,标准的 MVC 架构。
软件架构 4+1 视图

与业务聊架构时,需要同时知道架构的逻辑视图、开发视图、过程视图、物理视图并用具体场景来验证视图过程。重点关注物理视图。结合高性能、高可用、可扩展三方面分配资源。

what

1 业务对性能的要求,cpu 频率、内存大小、IOPS,分配适应的计算存储资源。
2 高可用,业务架构(物理视图)上做了高可用架构如双机架构(主备、主主)、集群架构、集群分区,应该怎么放置资源,在 ISSA 层面是否做互斥、分集群、分机房?
3 可扩展,业务的扩展方式是怎么,资源分配满足业务的扩展方式不?