Understanding Architecture

架构是这样定义的

  • 每个系统都有一个架构
  • 架构由架构元素以及相互之间的关系构成
  • 系统是为了满足 利益相关者(stakeholder) 的需求而构建的
  • 利益相关者都有自己的关注点(concerns)
  • 架构由架构文档描述
  • 架构文档描述了一系列的架构视角
  • 每个视角都解决并且对应到利益相关者的关注点。

架构师的首要任务是尽最大可能找出所有利益相关者,业务方,产品经理,客户/用户,开发经理,工程师,项目经理,测试人员,运维人员,产品运营人员等等都有可能是利益相关者,架构师要充分和利益相关者沟通,深入理解他们的关注点和痛点,并出架构解决这些关注点。架构师常犯错误是漏掉重要的利益相关者,沟通不充分,都会造成架构有欠缺,不能满足利益相关者的需求。利益相关者的关注点是有可能冲突的,比如管理层(可管理性)vs技术方(性能),业务方(多快好省)vs 技术方(可靠稳定),这需要架构师去灵活平衡,如何平衡体现了架构师的水平和价值。

Architecture represents the significant design decisions that shape a system, where significant is measured by cost of change.

—- Grady Booch, UML的创始人之一

架构表示对一个系统的成型起关键作用的设计决策,这里的关键性是由“改变它”的成本来决定的。

微服务中每个服务可以独立演变,它的cost of change比较小,整体架构比较灵活,是一种支持创新的演化式架构。

Architecture Requirements

Requirement Feature Description
Easy to separate Autonomy 易分离,自治性
Easy to understand Understandablility 可理解性
Easy to extend Extensibility 可延展性
Easy to change Changeability 可变性
Easy to replace Replaceability 可替换性
Easy to deploy Deployability 可部署性
Easy to scale Scalability 伸缩性,可扩展性
Easy to recover Resilience 可恢复性
Easy to connect Uniform interface 易连接,易集成,统一接口
Easy to afford Cost-efficiency 成本效率,性价比

架构的目标是用于管理复杂性、易变性和不确定性,以确保在长期的系统演化过程中,一部分架构的变化不会对架构的其它部分产生不必要的负面影响。这样做可以确保业务和研发效率的敏捷,让应用的易变部分能够频繁地变化,对应用的其它部分的影响尽可能的小。

微服务更多是关于组织和团队,而不是技术

organizations which design systems … are constrained to produce designs which are copies of the communication structures of these organizations.

康威定律:设计系统的组织,其产生的设计和架构等价于组织间的沟通结构.

image