系统架构设计师论文分享-论ATAM的使用
摘要
2023年2月,我司通过了研发纱线MES系统的立项,该系统为国内纱线工厂提供SAAS服务,旨在提高纱线工厂的数字化和智能化水平。我在本项目中担任系统架构设计师,负责整个项目的架构设计工作。本文结合我在该项目中的实践,详细论述了ATAM(架构权衡分析方法)在本项目中的应用,ATAM分为四个阶段:描述和介绍阶段、调查和分析阶段、测试阶段、报告阶段。本文详细描述了这四个阶段在本项目中的具体应用,并取得了显著的效果。最终,2023年12月,该系统顺利上线并运行至今,目前已经有879家纱线工厂接入我们的系统,各项功能和性能指标均达到客户要求,得到了客户工厂和公司领导的一致好评。
项目背景
随着我国从制造业大国升级为制造业强国以及工厂数字化和智能化的持续推进,我所在的某地某科技公司基于自研的物联网平台相继开发了染整一体化和织布一体化等系统,这些系统上线后,得到了工厂的追捧,也为公司带来了丰厚的经济回报。基于此,我司于2023年2月开始研发纱线MES系统,该系统预算730万,建设工期10个月,涵盖纱线工厂从清花、梳棉、并条、精梳、粗纱、细纱到络筒的全流程工序,将为纱线工厂提供全面的生产管理解决方案以及基于数据的智能决策分析能力。该项目为物联网层次架构,整体分为感知层、网络层和应用层。其中网络层为公司已有的物联网平台,这次重点建设内容为感知层和应用层,感知层使用Golang语言开发,作为联网网关部署在工厂侧,负责工厂数据的采集和云端指令的下发。应用层为纱线MES系统主体,采用Java语言开发,使用Spring Cloud微服务架构,数据库使用Mysql,缓存使用Redis,前端框架使用vue.js,日志、监控和链路追踪采用skywalking、prometheus、grafana和ELK,最终通过devops的方式部署在kubernetes集群中。系统上线后,将提供以下:基础管理、数据接入、工单排产、数字孪生、工资计算、智控中心和数据分析等等功能,通过以上功能,可以全面提升纱线工厂的数字化和智能化水平,使其运营水平和生产效率得到质的提升。
论述内容
由于该项目涉及角色、单位、流程众多,系统极为复杂,所以架构的设计就显得非常重要,在架构设计完成后,架构设计是否合理,里面的缺陷和漏洞是否会影响后面的质量属性,这都需要架构评估去进行验证。我们在架构评估阶段采用了ATAM(架构权衡分析方法),ATAM可以进行多个质量属性的评估和折中,包括性能、可用性、安全性和可修改性。在具体实施过程中,ATAM分为四个步骤:描述和介绍阶段、调查和分析阶段、测试阶段和报告阶段。
一、描述和介绍阶段
首先,我召集了公司的产品负责人、运维部门负责人、业务线专家以及公司内部的领导。然后,我作为该项目的系统架构设计师,为大家介绍了ATAM方法,简单说明了ATAM的作用和效果,以及我们在该项目中使用ATAM的方法和步骤。其后,由产品负责人为大家详细讲了该项目的业务需求和市场分析,让大家对该项目有了更深入的理解。最后,由我为大家详细介绍了该项目采用的架构设计,整体分为三部分:边端、物联网平台、云端(业务端)。边端部署在工厂复杂的网络环境中,需求量大,采用轻量级开发语言Golang,与物联网平台通过MQTT协议交互。物联网平台采用公司现有系统,负责协议解析和路由以及信息的上传和下发。云端采用微服务架构模式,根据领域模型被分为多个微服务:工资域、接入域、数据分析域、基础管理域、工单域等等,页面采用vue.js技术,通过Nginx,对接微服务网关。在大家都对项目有了详细的了解后,公司专家提出了一些质量属性需求:1、页面访问必须在1秒内返回结果;2、工厂的数据到大屏呈现不能超过1分钟;3、当物联网平台出现故障时,应该在5秒内恢复;4、系统必须保证用户的信息安全等等将近200条质量属性。
二、调查和分析阶段
在同事们整理了将近200条系统需要满足的质量属性后,大家又在一起进行分析讨论,把所有的质量属性进行了分类整理,最终发现最重要的质量属性就是安全性、性能、可用性和可修改性。其中关于安全性的有:1、系统安全认证系统要保证99.99%的可用性;2、重要的信息要采用加密措施等等。关于性能的有:1、页面访问必须在1秒内返回结果;2、工厂的数据到大屏呈现不能超过1分钟等等。关于可用性的有:1、当物联网平台出现故障时,应该在5秒内恢复;2、当云端某微服务出现问题时,请求能负载均衡到其他服务上。关于可修改性的有:当有新数据过来时,能在10天内对系统进行改造等等。经过大家的调查和分析,把这些质量属性整理成了效用树,最后根据该系统的特点,对这四种质量属性进行了评估和折中,我们系统重点要关注性能和可用性,安全性和可修改性可以放在后面加固。为了实现性能,我们采用分层处理,在数据层采用了主从分离和分库分表,在应用服务层采用了集群模式,同时加入了缓存来提高返回数据的速度。在网络层,我们采用了CDN和多地部署的方式,降低访问的延迟。
三、测试阶段
当采用ATAM进行了调查和分析后,我们对各种质量属性进行了折中和评估,大家开动脑筋,进行头脑风暴,对各种场景进行模拟和想象,大家充分交流,各抒已见,对架构的优缺点进行点评,在点评过程,由我对大家的意见进行记录,然后进行架构分析,提起架构的优点和缺点以及要改造的点,最终经过调整,该架构设计已经满足了现阶段的要求。
四、报告阶段
在经过前三个阶段之后,我们产生了一系统的文档,包括架构规格说明书和测试架构需求的质量属性说明书,以及质量效用树,需求说明书,一种场景等等。这些文档都非常重要,并且由我为大家做了此次架构评估的报告,最后把整理过的报告上交给公司领导。
经过架构评估后,我们的项目在架构上满足了各种非业务需求,在系统上线后,很好地支撑起了业务的执行,满足了各种性能指标。
总结
通过采用ATAM的方式,我们有效地提升了系统的性能和数据容量,为大量工厂的接入提供了条件。最终在2023年12月,该项目正式投产并对外提供服务,至今稳定运行,各项功能和性能指标均远远超过了客户的预期,得到了客户工厂和公司领导的一致赞扬。虽然项目取得了成功,但是也遇到过一些问题,在项目初期,由于产品经理对纱线业务的不熟悉,导致很多功能的调整和返工,这打击了开发人员的士气,基于此,我提出两个解决方式:1、派产品进入工厂一线,与工人交流,熟悉操作流程,彻底摸清纱线业务,保证需求质量;2、开发人员也要学习纱线业务,遇到问题反馈给产品,同时在做设计时,采用灵活的设计模式,为需求的变动留下可操作的空间。我们通过这两个方法解决了这个问题,保证了项目的进展。通过这次实践,我不仅学习到了ATAM的相关技术,也锻炼了自己的架构和管理能力,我意识到只有不断地学习和实践才能让知识融汇于自己的技术体系之中,才能在未来的工作中游刃有余、勇担大任,为祖国的信息化建设贡献自己的力量。