知识卡片
架构对开发、部署、运行、维护四阶段的影响程度并不均等
内容
架构对软件系统全生命周期各阶段的影响力度差异很大。对开发而言,团队结构决定了合适的架构:五人小团队可以高效共同开发一个没有明确组件边界的单体系统,架构在早期反而可能是障碍——这正是很多系统起初没有良好架构的原因;但如果是五个团队各七人协作开发,不划分出清晰的组件和稳定接口就没法推进,架构往往会自然演变成”一个组件对应一个团队”,尽管这种划分未必是部署、运行、维护角度的最优解。对部署而言,部署成本越高,系统可用性通常越低,因此一键式轻松部署应是架构目标之一——但早期开发很少考虑部署策略,容易导致”易开发难部署”的架构(比如微服务组件边界清晰、便于开发,真正部署时才发现微服务数量庞大到令人生畏,服务间连接配置和启动时间成了主要故障源)。对运行而言,架构的影响远不及开发、部署、维护——几乎任何运行性能问题都能靠加硬件解决而不必重新设计架构,硬件比人力便宜得多,所以优化重心理应更偏向开发部署维护;不过架构在运行阶段仍有一个重要作用:良好的架构应该能让系统的用例、功能、必备行为对开发者可见,起到”揭示系统运行过程”的作用。对维护而言,成本是所有阶段里最高的——主要来自”探秘”(挖掘现有系统以确定新功能或修复问题的最佳落点)和”风险”(修改时衍生新问题的可能性)这两项开销,而把系统切分成组件、用稳定接口隔离,正是降低这两项成本最直接的架构手段。
参考来源
- 位置:《架构整洁之道》第15章《什么是软件架构》"开发""部署""运行""维护"(源文件:_epub-src/text/part0014_split_000.html)
- 结论依据:原文分别说明小团队与多团队场景下架构对开发的不同影响、微服务架构易开发难部署的案例、运行阶段可靠加硬件弥补架构缺陷、维护阶段"探秘"与"风险"两项主导成本,直接支撑本卡片对四阶段影响程度差异的总结。
- 原始内容:如果一个软件系统是由五个不同的团队合作开发的……不将系统划分成定义清晰的组件和可靠稳定的接口,开发工作就没法继续推进……几乎任何运行问题都可以通过增加硬件的方式来解决……系统维护的主要成本集中在"探秘"和"风险"这两件事上。