1 团队研发面临的问题
不论是在传统的 IT 行业,还是互联网行业,研发团队在架构决策层面或多或少的都会面临以下问题或挑战:
• 新成员加入团队,对系统现有的架构决策可能会盲目遵守,只知其然,不知其所以然;或者挑战或违反约束,持续挑战当前决策,“质疑” 决策的合理性和正确性,负责人需要不间断的解释、同步、推动达成共识
• 架构决策的潜在问题随着时间推移暴露,但,如果决策时进行充分分析这些问题可能会提前发现和规避
• 现有系统架构决策是如何演进?当前决策背后的动机是什么?有可能团队内已经没有人能准确的回答
• 相似架构决策场景在系统中重复出现,由于遗忘决策原因,或团队成员变化等因素,仍要花时间去分析、设计和推动干系人达成共识
• 团队内只有少部分人负责架构设计,其他团队成员无机会参与,但实际上团队成员有相应诉求,至少能够了解某项关键架构设计的决策过程
• 即使团队内部接手的项目,你能快速获取系统关键架构决策及其原因吗?你可能会从代码库中寻找架构决策的蛛丝马迹,但很难获取架构决策背后的动机以及决策的演进过程
基于以上这些问题,我们想:
• 通过最小但依然高效的方式记录系统的架构决策
• 能够识别系统关键决策的演进过程
• 架构决策以及设计最佳实践能够在团队间高效同步
• 团队成员都有机会参与到架构设计决策过程中
通过文档形式记录架构决策首当其冲的问题是:文档过期!!
确实,过期问题是文档化必然面临的问题。无论通过什么机制,比如强流程、自动化更新等都存在过期风险。那为什么还要选择记录架构决策呢?基于以下两个原因:
• 性价比:架构决策文档化的收益远大于维护过期带来的成本
• 轻量级:保持 ADR 的简短、轻量,规模越小的文档越容易保持与实际的同步