架构是什么
TOGAF 即 The Open Group Architecture Framework (开放组体系结构框架),是由致力于技术标准制定和推广的非盈利组织 The Open Group 制定的用于开发企业架构(Enterprise Architecture)的一套方法和工具。
在 TOGAF9 是这么定义:一个系统基本的构件(子系统, 模块, 组件),体现在它的各个构件、构件间的相互关系、构件与环境间的关系,以及对系统设计和演进进行治理的原则中。
软件架构指软件系统顶层结构设计,涉及四方面:
- 系统性思考的合理决策:比如技术选型、解决实施方案(包括执行目标计划)、成本评估、性价比评估等等。
- 结构:明确的系统骨架(结构):明确系统有哪些构件组成。
- 连接:系统协作关系:各个组成部分如何协作来实现业务请求。
- 规范:约束规范和指导原则:保证系统有序,高效、稳定运行,包括规范、原则、流程等内容。
架构设计目的
架构的本质是管理和解决系统的复杂性,提高效率。
架构设计的作用涉及四方面:
- 系统性思考的合理决策。
- 明确的系统骨架。
- 系统协作关系。
- 约束规范和指导原则。
架构分类
- 业务架构:业务战略、治理、组织和关键业务流程。
- 应用架构:描述被部署的单个应用系统、系统之间的交互,以及它们与组织核心业务流程之间关系的蓝图。
- 数据架构:组织的各类逻辑和物理数据资产以及数据管理资源的结构。
- 技术架构:对于支持业务、数据和应用服务的部署来说必需的逻辑软、硬件能力。包括IT基础设施、中间件、网络、通信、部署处理和一些标准等。
应用架构演进
单体应用
典型的三级架构,前端(Web/手机端)+中间业务逻辑层+数据库层。这是一种典型的 Java Spring MVC 或者 Python Django 框架的应用。
分布式应用服务化
对系统按照业务功能模块拆分,将各个模块服务化,变成一个分布式系统。业务模块分别部署在不同的服务器上,各个业务模块之间通过接口进行数据交互。比如,RPC技术的就是其典型应用之一。
微服务
把分散到各个业务的某种相关逻辑进行统一管理,以统一的服务的方式透明地提供给上层应用,变成一个微内核的服务化架构,即微服务。
衡量架构的合理性
业务需求角度
- 能解决当下业务需求和问题;
- 高效完成业务需求:能以优雅且可复用的方式解决当下所有业务问题;
- 前瞻性设计:能在未来一段时间都能以第 2 种方式满足业务,从而不会每次当业务进行演变时,导致架构翻天覆地的变化。
非业务需求角度
- 稳定:高可用。
- 高效:文档化、可扩展、高复用。
- 安全:安全。
常见架构误区
- 不做出完美的架构设计不开工:世上没有最好架构,只有最合适的架构,不要企图一步到位。
- 为虚无的未来埋单而过度设计:如果业务初期,产品需要快速迭代和变现,需求频繁更新,这个时候需要的是快速实现,不要过多考虑未来的扩展。
- 为了技术而技术:技术是为业务而存在的,忽略了业务就毫无意义。
参考
https://mp.weixin.qq.com/s?__biz=MjM5ODYwMjI2MA==&mid=2649777073&idx=1&sn=d28b2bea93dccdcc8854fb5a95f36f31
《大型网站技术架构:核心原理与案例分析》
《亿级流量网站架构核心技术》
《架构即未来》
《分布式服务架构:原理、设计与实战》
《聊聊架构》
《软件架构师的 12 项修炼》