架构是这样定义的
- 每个系统都有一个架构
- 架构由架构元素以及相互之间的关系构成
- 系统是为了满足 利益相关者(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.
康威定律:设计系统的组织,其产生的设计和架构等价于组织间的沟通结构.