没有一刀切的官方定义,常见区分是:架构是系统中那些“难以改变的决策”——技术选型、分层方式、服务边界、通信协议、数据分布;设计是架构约束之下、模块内部的决策——类怎么划分、用什么模式、接口长什么样。架构关注全局结构与质量属性(可扩展性、可用性、性能),设计关注局部的正确性与可维护性。
更实用的视角是“变化成本”:一个决策将来反悔的代价越大,就越偏架构。把单体拆成微服务、把同步调用改成消息队列,是架构决策;把一段逻辑从 if-else 改成策略模式,是设计决策。
易错点与讨论:二者是连续谱而非二元对立,同一个决策在小系统里是设计、在大系统里可能就是架构;好的架构应当刻意“延迟决策”(如用插件化推迟选型),为设计留出余地。追问方向:Grady Booch“架构即重要决策的集合”、演进式架构与可逆/不可逆决策(单向门 vs 双向门)的区分。