最近读到架构演进过程中需要遵循的3大原则,给了我非常好的启发,这里做一详细的读书笔记。
一、时间复杂度法则
该法则指出,随着系统越来越大,其软件开发复杂度成对数增长。解决一个系统瓶颈的代价随时间呈指数形上升。
这说明什么?优化架构需要从最迫切的瓶颈下手。一个系统存在多个问题时,应该首先解决对用户影响最大的问题。纠结小问题不仅效率低下,还可能引入新的bug。
这一原则启发我们,应该善于判断优先级,集中资源为系统解决最严重的20%问题,这能带来80%的效益。
二、抽象泄露法则
任何抽象在系统实现中都会被部分违反,这就是“抽象泄露”。需要定期检视抽象与实现的脱节,进行抽象的重构与优化。
这告诉我们,架构设计不是一次就能完美,而需要不断演进。当新增的实现细节破坏原有抽象时,必须及时修补,使抽象持续有效。
作为架构师,要留心各种“抽象泄露”,识别实现与抽象不一致的情况,然后重构、划分模块,使架构抽象逐步完善。
三、管理复杂度法则
一个软件系统的固有复杂度如果在可控范围内,是可以被管理的。但是一旦超过某个临界点,就会失去控制,导致缺陷激增。
这要求我们要时刻关注系统复杂度的积累,采取模块化、抽象等手段将复杂度分解,避免复杂度超过可控制的界限。
架构师应用这一法则,可以管控功能需求带来的复杂度,保证架构清晰简洁。同时利用自动化测试、静态检查等手段验证架构质量。
通过遵循这3大法则指导架构设计,可以让架构不断地演进,应对需求变化,持续交付高质量的系统。这是一本非常浓缩的好书,给了我架构方面的原则性启发。
这强调了控制复杂度增长的重要性。架构师要利用模块化、抽象等手段,使复杂度可控,避免复杂度带来失控的风险。
通过遵循这3大法则,架构师可以更好地应对快速迭代的需求,持续交付优秀的系统架构。
以上原则对架构设计的原则性指导。我也希望自己可以在实践中不断体会这3大法则的价值,严格执行,逐步提高架构能力。如有任何建议,欢迎提出!