本周工作思考
持续分析架构
从传统的理解来说,我们对架构师角色有8项核心期望
1、制定架构决策
2、持续分析架构
3、掌握最新技术趋势和技术理念
4、确保决策被遵守和被灵活贯彻执行
5、丰富的技术和项目的经历和经验
6、具备深厚的业务领域知识及业务洞察
7、具备良好的职场能力和人际交往能力
8、具备必要的公司经营和财务管理知识
很多开发的伙伴在工作上都在这8项期望上有所达成,承担了部分的架构师角色的职责,从这个维度来说,每一位开发伙伴都是潜在架构师
持续分析架构是架构师日常工作之一,但是对我们却缺乏有意识和有计划的执行。我们常说对所有研发伙伴都要对任何项目任何技术都要dirty hands,下手练一练,下手干一干,从这8项核心期望来说,持续分析架构是其他七项的前提和基础。
定性的角度,在动态的世界里,没有完善的架构,任何架构经过一系列的迭代,绝大多数架构都会出现不同程度的腐化,这些腐化会影响代码的结构,架构的质量属性,比如可用性、敏捷性、可靠性、性能等。当我们深入项目的代码和设计时,我们要了解架构演变过程及当前状态,除了要实现现有迭代需求,需要分析架构的现状,包括代码的整体结构是否发生了突变,设计原则有没有一直贯彻执行,最初的架构决策有没有适应当前的各方诉求,需要做哪些设计原则的变更,有哪些新的架构决策被制定出来以满足最新的业务动向或者最新的技术趋势,现有架构能不能很好和其他系统协作,比如部署交付系统,自动化测试系统。
定量的角度,使用演进式架构的工程方法,使用基于自动化的适应度函数测试,评估增量变更对现有架构的影响及适时调整架构演进。前端的适应度函数的设计虽然比较困难,前端涉及四种语言(CSS,sass,Typescript,Html),2种框架/库(Angularjs,React),可能需要对主要技术栈最主要维度的是适应度测试,针对React,从代码结构上,考虑组件嵌套层级,圈复杂度等;从运营性上,考虑页面性能,可配置性等;从过程上,提测质量,交付质量,敏捷性,排期上,可测试性可以适当选取作为适应度函数的维度。
实际开发中可以选择现有工具比如sonar,rum等工具定量的测试,在流程上code review和UI review有需要定性的关注性能,排期等维度作为默认的适应度函数测试