什么是“架构”?
在软件系统里,架构(Architecture) 是对系统最顶层的结构化设计决策,这些决策:
- 很难在后期改动(改架构 = 大重构甚至重写)
- 决定了系统的核心质量属性(性能、可扩展性、可维护性、安全性、成本等)
- 决定了团队的组织方式、开发速度、部署方式
一句话总结:
架构就是“那些一旦做错,改起来最贵”的决策集合。
架构的经典定义(来自知名书籍)
| 来源 | 经典定义 | 通俗解释 |
|---|---|---|
| Martin Fowler | “架构是那些难以改变的重要东西(Things that are hard to change)” | 改业务逻辑容易,改分库分表、改微服务边界就难 |
| IEEE 1471 | 系统组织结构、组件、组件间关系、原则和指导方针 | 组件怎么划分、怎么交互 |
| 《软件系统架构》 | 架构 = 结构 + 关键设计决策 + 质量属性驱动 | 结构是为质量属性服务的 |
| Ralph Johnson | “架构是关于重要的事物,不管什么对你来说是重要的” | 没有通用的“好架构”,只有“适合当前业务”的 |
架构的6大关键设计原则(2026年主流共识)
| 原则 | 英文原名 | 核心一句话解释 | 典型体现(2026年常见实践) |
|---|---|---|---|
| 1. 高内聚低耦合 | High Cohesion, Low Coupling | 一个模块内部越“团结”,模块之间越“独立”越好 | 每个微服务只做一件事、DDD限界上下文划分 |
| 2. 关注点分离 | Separation of Concerns | 不同类型的问题不要混在一起解决 | 前后端分离、分层架构(Controller-Service-Repo) |
| 3. 可扩展性优先 | Scalability First | 系统要能“横向”或“纵向”轻松扩容 | 无状态服务、水平分库分表、事件驱动、Serverless |
| 4. 合适性(Fit) | Appropriate Over Ideal | 够用就好,别过度设计 | 创业公司先用单体,业务验证后再拆微服务 |
| 5. 可演化性 | Evolutionary Architecture | 架构要支持持续、小步、廉价的演进 | 模块化、插件化、特征开关、蓝绿/金丝雀部署 |
| 6. 质量属性权衡 | Trade-off of Quality Attributes | 没有完美的架构,只有在约束条件下的最优解 | 高一致性 vs 高可用(CAP定理)、成本 vs 性能 |
架构设计的4个层次(从抽象到具体)
| 层次 | 关注点 | 典型产出物 |
|---|---|---|
| 1. 系统架构 | 整个系统怎么拆(单体、微服务、Serverless、中台) | 架构图、C4 Model Level 1 |
| 2. 应用架构 | 每个服务内部怎么分层、怎么交互 | DDD分层、六边形架构、Clean Architecture |
| 3. 技术架构 | 用什么技术栈、数据库、中间件 | 选型文档、组件图 |
| 4. 基础设施架构 | 部署、容器、CI/CD、监控、灾备 | K8s + Istio + Prometheus + ArgoCD |
2026 年最常见的架构演进路径(真实公司案例)
| 阶段 | 典型架构模式 | 适用团队规模/业务阶段 | 代表公司早期路径 |
|---|---|---|---|
| 阶段1 | 单体(Monolith) | 0–20人,快速验证 | 字节、美团、滴滴早期 |
| 阶段2 | 垂直拆分单体 → 微服务 | 20–100人,业务开始复杂 | 阿里、腾讯从单体拆微服务 |
| 阶段3 | 服务网格 + 事件驱动 + 中台 | 100–1000+人,高并发、多团队协作 | 字节飞书、阿里中台、腾讯微服务2.0 |
| 阶段4 | Serverless + Domain-Driven | 1000+人,追求极致弹性与开发效率 | 部分云厂商内部系统、Serverless 公司 |
最后送你一句2026年最实用的话(来自多位大厂首席架构师)
“好的架构不是设计出来的,而是在业务发展过程中不断演化、不断付出学费换来的。”
没有银弹,没有一劳永逸的架构。
今天再完美的微服务,三年后可能变成维护噩梦;今天被吐槽的单体,可能正是当前阶段最合适的。
所以,架构的关键原则永远是:合适 > 先进 > 优雅。
你现在是在准备面试,还是在实际项目里纠结要不要拆微服务?
可以告诉我具体场景,我可以给你更落地的建议~